正则表达式反向引用不能在PHP PCRE中工作

shy*_*yam 2 php regex pcre

我想匹配匹配的标签<tag>...</tag>.我试过正则表达式

~<([^>]+)>.*?</\1>~
Run Code Online (Sandbox Code Playgroud)

但这失败了.当我使用尖括号内的确切文本时,表达式有效,即

~<(tag)>.*?</tag>~
Run Code Online (Sandbox Code Playgroud)

工作,但甚至

~<(tag)>.*?</\1>~
Run Code Online (Sandbox Code Playgroud)

失败.

我假设后面的引用在这里不起作用.

有人可以帮帮我吗.谢谢

PS:我没有使用它来解析HTML.我知道我不应该.

mar*_*rio 9

你没有显示你的PHP代码,但我猜你用双引号你的正则表达式.如果是这样,则反向引用\1实际上会?在到达PCRE之前转换为ASCII字符.(所有\123序列都被解释为C字符串八进制转义.)