如何在html字符串中找到匹配的结束标记?

时间:2011-04-28 13:34:18

标签: c# html html-parsing

想象一下以下HTML:

<div>
  <b></b>
  <div>
    <table>...</table>
  </div>
</div> <!-- this one -->
...

如何找到第一个打开div标签的匹配结束标记?是否有可以找到它的注册表?我想这是一个非常常见的要求,但我很难找到任何直截了当的,只是完整的HTML解析器。

5 个答案:

答案 0 :(得分:4)

没有

使用完整的HTML解析器。他们存在的原因。

答案 1 :(得分:3)

答案 2 :(得分:1)

我假设你已经确定了html标签...现在创建一个堆栈,每次你看到一个开始标签推送,每次你看到一个结束标签弹出...并查看你弹出的那些标签是什么关闭标签......

但是已经有了HTML解析器,所以在codeplex上搜索一个。

答案 3 :(得分:1)

嗯,你需要有一个'清晰'的语法视图!但是,regexp的范围非常有限,我不建议将它用于多行/标记语法。

您需要跟踪每个标记(打开/关闭)并使用“处理程序”来处理您的请求。您可以使用一些Lex / Yacc工具,但这可能过度。根据您使用的语言,您可能已经有了用于此目的的模块(如Python中的HTMLParser)。

答案 4 :(得分:-1)

如果你想解析HTML并且不需要每一个细节,总会有LinqToXml。