Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP正则表达式与转义值不正确匹配_Php_Regex_Preg Replace Callback - Fatal编程技术网

PHP正则表达式与转义值不正确匹配

PHP正则表达式与转义值不正确匹配,php,regex,preg-replace-callback,Php,Regex,Preg Replace Callback,我有以下正则表达式,它在中正确匹配,但在PHP中使用preg_replace_回调时不匹配 (?<!\\)(?:\\\\)*{(.*?)(:(.*?))?} (? 它主要起作用,但似乎不适用于多个转义级别。示例文本处理(粗体匹配正确,斜体显示应匹配和不匹配的内容,或匹配和不应匹配的内容): {intro}敏捷的棕色{animal}跳过懒惰的{otherAnimal}。空的{}也应该匹配。 转义应\{not match}。在\{should match}之前转义。3个转义应\\\{not

我有以下正则表达式,它在中正确匹配,但在PHP中使用preg_replace_回调时不匹配

(?<!\\)(?:\\\\)*{(.*?)(:(.*?))?}
(?
它主要起作用,但似乎不适用于多个转义级别。示例文本处理(粗体匹配正确,斜体显示应匹配和不匹配的内容,或匹配和不应匹配的内容):

{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错误!