PHP preg_replace。仅当 AB 前面没有 "-"或以 0x104567910 结尾时,才将 AB 替换为 CD

标签 php regex preg-replace

我在 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/

相关文章:

php - 每次重新加载时删除 Laravel 的存储/ View 文件

javascript - 使用 PHP 和 ajax 传递带 URL 的变量不能正常工作

java - Android Web 服务连接被拒绝

regex - 如何在XSLT 1.0中使用正则表达式?

java - 无法理解 String.replaceAll 非贪婪行为

php - 如何在 Woocommerce 中为价格制作千位分隔符

php - 如何查看我的脚本发送到 xampp 本地服务器的完整 sql 查询?

Javascript regex-删除字符串中除单词之间的所有空格

php - 使用 preg_replace 无法正常工作

php - 如何完全替换 PHP 中的所有特殊字符而不在结果中留下任何 HTML 实体