我在 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(?!\-)/
和类似的东西,但只得到了部分结果......
感谢您的帮助。
最佳答案
您可以使用lookahead和lookbehind断言:
$repl = preg_replace('/((?<!-)AB|AB(?!-))/', 'CD', 'AB-AB-ABAB-AB--AB-AB');
//=> CD-AB-CDCD-AB--AB-CD
关于PHP preg_replace。仅当 AB 前面没有 "-"或以 0x104567910 结尾时,才将 AB 替换为 CD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22056542/