条件模式中的PHP正则表达式返回引用 - 子模式始终定义

时间:2016-06-23 15:07:15

标签: php regex

我在下面以简化形式表示了一些正则表达式:

/\<((div|span)|(img|link)).*?(?(3)\/?>|.*?\<\/\\2>)/

这意味着子模式应为:

  1. 标记名称
  2. 带有结束标记的标记名称
  3. 没有结束标记的标记名称
  4. 目的非常明显:如果我将标签与结束标签(例如div或span)匹配,请查找结束标记。如果它是img或link等,只需查看开始标记的结尾。

    问题在于,虽然子模式3在与div或span匹配时为空,但对于条件模式,它似乎是定义的。

    在这个简化版本上它可以工作,但在完整的正则表达式上它拒绝工作,除非我使用一个简单的OR(没有结束标记模式|结束标记模式)。所以我想知道我是否错过了条件子模式中的后向引用的一些缺陷。我注意到我也尝试过使用相对参考资料,但这并没有帮助。

    非常感谢任何建议。

    干杯,

0 个答案:

没有答案