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

发布于 2024-11-03 17:35:06 字数 273 浏览 0 评论 0原文

想象一下以下 HTML:

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

我如何找到第一个开始 div 标签的匹配结束标签?有没有可以找到它的正则表达式?我想这是一个很常见的需求,但我正在努力寻找任何简单的、完整的 HTML 解析器。

Imagine the following HTML:

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

How could I find the matching closing tag for the first opening div tag? Is there a reg ex that could find it? I guess this is quite a common requirement but I'm struggling to find anything straightforward, just full blown HTML parsers.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

疏忽 2024-11-10 17:35:06

不。

使用完整的 HTML 解析器。它们存在是有原因的。

No.

Use a full blown HTML parser. There's a reason they exist.

晨曦÷微暖 2024-11-10 17:35:06

我假设您已经标记了 html 标签...现在创建一个堆栈,每次您看到开始标签推送和每次看到结束标签弹出时...并查看您弹出的标签是否符合结束标签。 ..

但是已经有用于此目的的 HTML 解析器,因此请在 codeplex 上搜索一个。

I'm assuming that you have tokeinized the html tags... Now create a stack and every time you see an opening tag push and everytime you see a closing tag pop... and see if the ones you pop macth the closing tag...

But there are already HTML parsers for this so search for one on codeplex.

人心善变 2024-11-10 17:35:06

好吧,您需要对语法有一个“清晰”的了解!但是,正则表达式的范围非常有限,我不建议将它用于多行/标记语法。

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

Well, You need to have a 'clear' view of the syntax ! However, regexp are very limited in scope and I would'nt recommand using it for multi-line/tag syntax.

You rather need to track each tag (open/close) and use a 'handler' to deal with your request. You could use some Lex/Yacc tools but this may be overkilling. Depending on the language you use, you may already have modules for this purpose (like HTMLParser in Python).

黑寡妇 2024-11-10 17:35:06

如果您想解析 HTML 并且不需要每一个小细节,那么总是可以使用 LinqToXml。

There's always LinqToXml if you want to parse HTML and don't need every little detail.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文