【发布时间】:2014-06-27 08:20:47
【问题描述】:
假设我有一个 xml 文件,其中包含嵌套在自身内部的标签,例如
<TAG>one<TAG>two</TAG>one</TAG>
来自this page,我有两个正则表达式示例与此字符串不匹配,例如,您会得到
<TAG>one<TAG>two</TAG>
这是不平衡的。根据 Google 的说法,无法找到能够正确解析 html 的正则表达式,例如 here 或 here。
正则表达式无法进行整个 HTML 解析,因为它依赖于匹配开始和结束标记,而这在正则表达式中是不可能的。
正则表达式只能匹配正则语言,但 HTML 是一种上下文无关语言。在 HTML 上使用正则表达式唯一可以做的就是启发式方法,但这并不适用于所有条件。应该有可能呈现一个将被任何正则表达式错误匹配的 HTML 文件。
这是一个很好的清晰的理论答案,但它让我思考:是否可以通过编程方式使用多个正则表达式和/或循环?
【问题讨论】:
-
当然可以,但你可能会伤到自己。我根据你的例子制作了some progress here。它一次搜索最深的元素,您只需将其废弃,留下标识符,然后再次尝试捕获。
-
这是出于好奇,还是因为您想用它来解决问题?因为如果是后者,那么有几个 XML 解析器使用起来非常简单。
-
什么是样本输入和样本输出,请清楚
-
如果您阅读了该答案,请考虑阅读 cmets:stackoverflow.com/questions/590747/…
-
@MikeH-R:真的只是出于好奇。我使用 c# xml 类来做我想做的事情。