PHP正则表达式与转义值不正确匹配
我有以下正则表达式,它在中正确匹配,但在PHP中使用preg_replace_回调时不匹配PHP正则表达式与转义值不正确匹配,php,regex,preg-replace-callback,Php,Regex,Preg Replace Callback,我有以下正则表达式,它在中正确匹配,但在PHP中使用preg_replace_回调时不匹配 (?<!\\)(?:\\\\)*{(.*?)(:(.*?))?} (? 它主要起作用,但似乎不适用于多个转义级别。示例文本处理(粗体匹配正确,斜体显示应匹配和不匹配的内容,或匹配和不应匹配的内容): {intro}敏捷的棕色{animal}跳过懒惰的{otherAnimal}。空的{}也应该匹配。 转义应\{not match}。在\{should match}之前转义。3个转义应\\\{not
(?<!\\)(?:\\\\)*{(.*?)(:(.*?))?}
(?
它主要起作用,但似乎不适用于多个转义级别。示例文本处理(粗体匹配正确,斜体显示应匹配和不匹配的内容,或匹配和不应匹配的内容):
{intro}敏捷的棕色{animal}跳过懒惰的{otherAnimal}。空的{}也应该匹配。
转义应\{not match}。在\{should match}之前转义。3个转义应\\\{not match}。4个转义\\\\{should match}
请注意,在PHP中,确切的代码是带有双斜杠的,因为它位于PHP字符串中:
preg_replace_callback('/(?<!\\\\)(?:\\\\\\\\)*{(.*?)(:(.*?))?}/',...
preg\u replace\u回调('/(?多亏了Wiktor,我解决了这个问题。我在定义字符串时使用了herdoc语法,所以所有转义都被转义了。将字符串更改为使用Nowdoc,现在一切正常。谢谢!你能提供不起作用的确切代码吗?你可以使用link。如果我记得,你可以使用一些修饰符like'/some_regex/gm
'@Wiktor Stribiżew我试过你的代码,它成功了,所以我要试着找出区别。我今天早上睡了3个小时,所以肯定是ID10T错误!