我在这里有一个奇怪的问题。我需要匹配并替换\()
和(\)
。但是当我执行适当的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
在这种情况下,边界这个词正好相反。
在线正则表达式测试人员的行为也相同:
有什么建议/指导来处理这种情况吗?