我正在努力做到以下希望有一个reg_ex专家来解决问题。 我需要替换字符[在我的代码中并使其成为{。但有些情况下[需要保持[而不是改变]。所以我认为它的方式是我需要使用
preg_replace(“[”,“{”,$ string);
使用合适的正则表达式函数,这将导致[不使用转义字符前面的字符使用。 那么我怎样才能取代这个“[”而不是这个“[”?
提前多多感谢
答案 0 :(得分:4)
您可以执行此操作,并使用常规调用负面后瞻断言
echo preg_replace( "/(?<!\\\\)\\[/", '{', "\[ [ [ \[ [" );
基本上,“替换[有{仅在没有前面的时候”
答案 1 :(得分:1)
为了完整性:
如果你的regexp引擎是原始的并且不知道如何做negative lookbehinds(PHP的情况不是这样),还有另一种方法可以做到这一点:
$str = preg_replace( "/(^|[^\\\\])\\[/", '$1{', $str );
这会捕获前面的字符,该字符仅限于^
(开始)或[^\]
(任何非斜杠),并将其传递给替换。