【发布时间】:2019-02-24 10:54:27
【问题描述】:
我想使用正则表达式将两个单词 MNO 和 XYZ 之间的单词 ABC 替换为 '',但不是出现不在 MNO 之间的单词 ABC和XYZ。
例如,给定以下字符串:
Lorem ABC ipsum ABC bla MNO bla ipsum ABC asfg 123 hello ABC dd ABC XYZ hello ABC
预期的结果是:
Lorem ABC ipsum ABC bla MNO bla ipsum asfg 123 hello dd XYZ hello ABC
所以唯一被替换的ABC 是MNO 和XYZ 之间的三个。
我在 PHP 中的 preg_replace 中尝试了一些正则表达式,但没有成功。
比如这个我不知道怎么不匹配除了ABC:
/(?<=MNO)(.*)ABC(.*)(?=XYZ)/g
我希望在这种情况下使用正则表达式和preg_replace。
有什么想法吗? 谢谢
【问题讨论】:
-
是否必须使用
preg_replace或者也可以使用preg_replace_callback? -
Wiktor,
preg_replace_callback可以用来。 -
MNO 和 XYZ 可以多次出现吗?
-
Wiktor,为它可能会阐明的问题添加了一个示例。
-
Rarst,在这种情况下只有一次,但我不介意
标签: php regex preg-replace