除非前面有转义字符,否则请使用preg_replace替换字符

时间:2009-09-03 16:50:55

标签: php regex preg-replace

我正在努力做到以下希望有一个reg_ex专家来解决问题。 我需要替换字符[在我的代码中并使其成为{。但有些情况下[需要保持[而不是改变]。所以我认为它的方式是我需要使用

preg_replace(“[”,“{”,$ string);

使用合适的正则表达式函数,这将导致[不使用转义字符前面的字符使用。 那么我怎样才能取代这个“[”而不是这个“[”?

提前多多感谢

2 个答案:

答案 0 :(得分:4)

您可以执行此操作,并使用常规调用负面后瞻断言

echo preg_replace( "/(?<!\\\\)\\[/", '{', "\[ [ [ \[ [" );

基本上,“替换[有{仅在没有前面的时候”

答案 1 :(得分:1)

为了完整性:

如果你的regexp引擎是原始的并且不知道如何做negative lookbehinds(PHP的情况不是这样),还有另一种方法可以做到这一点:

$str = preg_replace( "/(^|[^\\\\])\\[/", '$1{', $str );

这会捕获前面的字符,该字符仅限于^(开始)或[^\](任何非斜杠),并将其传递给替换。