想象一下以下HTML:
<div>
<b></b>
<div>
<table>...</table>
</div>
</div> <!-- this one -->
...
如何找到第一个打开div标签的匹配结束标记?是否有可以找到它的注册表?我想这是一个非常常见的要求,但我很难找到任何直截了当的,只是完整的HTML解析器。
答案 0 :(得分:4)
没有
使用完整的HTML解析器。他们存在的原因。
答案 1 :(得分:3)
答案 2 :(得分:1)
我假设你已经确定了html标签...现在创建一个堆栈,每次你看到一个开始标签推送,每次你看到一个结束标签弹出...并查看你弹出的那些标签是什么关闭标签......
但是已经有了HTML解析器,所以在codeplex上搜索一个。
答案 3 :(得分:1)
嗯,你需要有一个'清晰'的语法视图!但是,regexp的范围非常有限,我不建议将它用于多行/标记语法。
您需要跟踪每个标记(打开/关闭)并使用“处理程序”来处理您的请求。您可以使用一些Lex / Yacc工具,但这可能过度。根据您使用的语言,您可能已经有了用于此目的的模块(如Python中的HTMLParser)。
答案 4 :(得分:-1)
如果你想解析HTML并且不需要每一个细节,总会有LinqToXml。