替换所有的"foo"之间 () [英] replace all "foo" between ()
本文介绍了替换所有的"foo"之间 ()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的正则表达式代码有问题,问题是:我想替换所有"foo"值,但只替换()"内部.示例:
I've problem with my regex code, the problem is: I want to replace all "foo" values but only inside "()". Example:
try foo foo-foo (try foo inside , foo foo foofoo)
我想用"boo"替换括号之间的所有"foo"字符串.
I want to replace all "foo" strings between the parentheses by "boo".
推荐答案
假定括号是有效的",则可以替换所有foo
,后跟)
,而在中间没有(
.>
Assuming parentheses are "valid", you can replace all foo
s that are followed by )
, without a (
in between:
$str = preg_replace('/foo(?=[^()]*\))/', 'bar', $str);
工作示例: http://ideone.com/xezU7
另一个假设没有嵌套对的选项是匹配"(...)"
令牌并使用回调,但是可能使用了过多的力:
Another option, also assuming no nested pairs, is to match "(...)"
tokens and use a callback, but it may be use of excessive force:
回调方法:
function replace_foo($matches) {
return str_replace('foo', 'bar', $matches[0]);
}
使用:
$str = preg_replace_callback("/\([^()]*\)/","replace_foo", $str);
工作示例: http://ideone.com/ZzBem
这篇关于替换所有的"foo"之间 ()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文