preg_replace单词边界

时间:2019-02-22 11:25:56

标签: php regex preg-replace

我在这里有一个奇怪的问题。我需要匹配并替换\()(\)。但是当我执行适当的preg_replace时,结果与字边界相反。

所以我有一句话:

  

不允许在一行中使用\()。

当我尝试使用单词边界将其替换为hello时,它不会被替换,但是包含该单词的单词会被替换。例如,#\b\\\(\)\b#i无法捕获\(),但是此Hel\()lo被捕获了。

$replace = 'if';
return preg_replace('/\b'.preg_quote($replace).'\b/is', 'hello', 'Catch m\()e shift \() if you can');

返回:

Catch m\()e shift \() hello you can

所需的,由于单词边界,它不会替换“ shift”中的“ if”。

但是

$replace = '\()';
return preg_replace('/\b'.preg_quote($replace).'\b/is', 'hello', 'Catch m\()e shift \() if you can');

返回:

Catch mhelloe shift \() if you can

而所需的输出应为:

Catch m\()e shift hello if you can

在这种情况下,边界这个词正好相反。

在线正则表达式测试人员的行为也相同:

enter image description here

有什么建议/指导来处理这种情况吗?

0 个答案:

没有答案