我在下面以简化形式表示了一些正则表达式:
/\<((div|span)|(img|link)).*?(?(3)\/?>|.*?\<\/\\2>)/
这意味着子模式应为:
目的非常明显:如果我将标签与结束标签(例如div或span)匹配,请查找结束标记。如果它是img或link等,只需查看开始标记的结尾。
问题在于,虽然子模式3在与div或span匹配时为空,但对于条件模式,它似乎是定义的。
在这个简化版本上它可以工作,但在完整的正则表达式上它拒绝工作,除非我使用一个简单的OR(没有结束标记模式|结束标记模式)。所以我想知道我是否错过了条件子模式中的后向引用的一些缺陷。我注意到我也尝试过使用相对参考资料,但这并没有帮助。
非常感谢任何建议。
干杯,