【问题标题】:How would I use regex to parse HTML to plain text我将如何使用正则表达式将 HTML 解析为纯文本
【发布时间】:2009-06-12 09:03:09
【问题描述】:

我将如何使用正则表达式来解析以下内容:

<b>HelloWorld</b>
<p>This is a test</p>
<a href="myUrl">Google</a>

需要删除所有的html标签,并从超链接标签中提取url,结果应该是:

你好世界 这是一个测试 我的网址

【问题讨论】:

标签: .net regex


【解决方案1】:

我知道这不是您期望的答案,但您不应该尝试使用正则表达式解析 HTML。正则表达式解析 HTML 很复杂,有各种各样的东西都可能出错。编写一个能够可靠地解析 HTML 的正则表达式非常困难,我什至不确定它是否可能。

对 .NET 使用 Beautiful SoupHTML Agility Pack 之类的东西。或者您可以使用解析器生成器创建自己的解析器。

【讨论】:

  • 告诉人们“不要用正则表达式做 HTML”是徒劳的,这让我大吃一惊。 Stack Overflow 充满了这个建议,互联网的其他部分也是如此。好像没有人读过或相信它。无论如何,你有我的投票权。 :)
  • Tomalak:stackoverflow 涵盖的很多领域都有这些典型的反复出现的问题 - 这就是为什么在 stackoverflow 上提供每个标签的常见问题解答会很棒。 stackoverflow.uservoice.com/pages/1722-general/suggestions/…
  • 没有人阅读常见问题解答,这或多或少是事实。如果人们在提问之前先阅读/谷歌,那么每天的问题数量将大大减少。
  • Tomalak:确实如此,但据我了解,我们的想法是编写一篇写得很好的文本,我们可以指导偶尔提问的人,而不是一直解释它或查找一个类似的问题并给出一个很好的答案。
  • 我猜人们会选择代表而不是将 OP 指向常见问题解答。如果线程中的任何人解决了 OP 的直接问题,他们的答案将被接受,而不是“无聊”的常见问题解答指针,无论它可能是正确的。
【解决方案2】:

您应该为此使用解析器。正则表达式是行不通的。您可以使用递归正则表达式模式,但我认为 .NET 正则表达式引擎不支持它们。

【讨论】:

    猜你喜欢
    • 2016-05-08
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    相关资源
    最近更新 更多