我正在尝试执行以下操作,希望周围有 reg_ex 专家来阐明。我需要在我的代码中替换字符 [ 并将其设为 {。但是在某些情况下 [ 需要保持 [ 而不是改变。所以我认为我需要使用
preg_replace("[", "{", $string);
使用合适的正则表达式的函数将导致 [ 前面没有使用转义字符的字符让我们说。那么我怎样才能替换这个“[”而不是这个“[”?
非常感谢提前
我正在尝试执行以下操作,希望周围有 reg_ex 专家来阐明。我需要在我的代码中替换字符 [ 并将其设为 {。但是在某些情况下 [ 需要保持 [ 而不是改变。所以我认为我需要使用
preg_replace("[", "{", $string);
使用合适的正则表达式的函数将导致 [ 前面没有使用转义字符的字符让我们说。那么我怎样才能替换这个“[”而不是这个“[”?
非常感谢提前
你可以做到这一点,它的约定称为否定后向断言
echo preg_replace( "/(?<!\\\\)\\[/", '{', "\[ [ [ \[ [" );
基本上,“仅当前面没有 \ 时才用 { 替换 [”
为了完整性:
如果您的正则表达式引擎是原始的并且不知道如何进行负面的lookbehinds(PHP不是这种情况),还有另一种方法可以做到这一点:
$str = preg_replace( "/(^|[^\\\\])\\[/", '$1{', $str );
这将捕获限制为^
(开始)或[^\]
(任何非斜线)的前一个字符,并将其传递给替换。