我对preg_match()
有疑问。我有一个带有特殊字符的字符串,告诉我字符串的一部分需要被替换,而不是。但我找不到能够做到这一点的模式。我希望你能帮助我。
一个例子:
“AB-”或“-AB”或“AB”=>替换为CD
“ - AB-”=>不要用CD替换
$str = 'AB-AB-ABAB-AB--AB-AB'; //Actual string
$ptr = ' ???? ';
$rem = 'CD';
echo preg_replace($ptr, $rem, $str); // It should be "CD-AB-CDCD-AB--AB-CD"
我一直在尝试使用/(?!\-)AB(?!\-)/
和类似的东西,但只得到部分结果......
请求帮助。
答案 0 :(得分:4)
您可以使用前瞻和后瞻断言:
$repl = preg_replace('/((?<!-)AB|AB(?!-))/', 'CD', 'AB-AB-ABAB-AB--AB-AB');
//=> CD-AB-CDCD-AB--AB-CD