更新时间:2022-11-13 22:47:40
preg_replace('/%22((?:[^%]|%[^2]|%2[^2])*)%22/', '+"$1"', $str);
解释:$1
是一个反向引用,它引用正则表达式中的第一个()
部分,在本例中为((?:[^%]|%[^2]|%2[^2])*)
。并且[^%]
和之后的(...|...|...)
由于贪婪而阻止了其中的%22
匹配。请参阅http://en.wikipedia.org/wiki/Regular_expression#Lazy_quantification。
我在一个匹配块注释(/* */
)Java CC示例中找到了这种技术,但我找不到任何其他网页来解释它,所以这里有一个更简洁的示例:匹配介于12345之间而中间没有12345的文本块: