我需要关于这个片段的建议
$text = preg_replace('|(A.*)?A(.*)C|', '$1foo$2bar', $text);
这将匹配“AB ABC D”中的 ABC,并将其替换为“AB fooBbar D”;正如您所看到的,这也与开头的“AB”部分匹配,我必须在替换字符串中用 $1 重复它,以免丢失它。
这是获得这种结果的最佳方式吗?
是否有一个标志 X 使得
$text = preg_replace('|A(.*)C|X', 'foo$1bar', $text);
产生相同的结果?
我希望我已经清楚了
谢谢!
编辑:将 A、B、C 视为任意字符的原子字符串,它们也可以包含空格
此外,给出的示例实际上是错误的,因为它仅匹配“ABC ABC”中的第二个“ABC”。
EDIT2:对不起,我可能已经非常糟糕地解释了这个问题。关键是我想匹配两个 A,C 字符串之间的任何内容,以便匹配中没有子字符串 A
再次感谢