我试图使用php中的preg_replace函数完全匹配字符串。 我只想匹配具有单个“@”符号的实例。 我还要求将一个变量作为模式传入。
$x = "@hello, @@hello, @hello, @@hello"
$temp = '@hello'
$x = preg_replace("/".$temp."/", "replaced", $x);
结果应该是:
$x = "replaced, @@hello, replaced, @@hello"
提前谢谢。
答案 0 :(得分:4)
如果(?<!@)
前面有$temp
,则添加一个匹配失败的look-behind @
(或者,如果有{{1}在} @
之前,不匹配):
@hello
请参阅IDEONE demo
另外,如果最后有整个单词边界,请将$x = "@hello, @@hello, @hello, @@hello";
$temp = '@hello';
$x = preg_replace("/(?<!@)".$temp."/", "replaced", $x);
echo $x;
附加到模式的末尾,以确保不替换\b
:
@helloween