【问题标题】:Regex to read out HTML tags正则表达式读出 HTML 标签
【发布时间】:2010-10-09 06:46:57
【问题描述】:

我正在寻找一个匹配由多行组成的文本中所有使用的 HTML 标记的正则表达式。它应该在以下几行中读出“b”、“p”和“script”:

<b>
<p class="normalText">
<script type="text/javascript">

有这种事吗?我的开始是它应该以“”,但同时,它不应该包括开头的“

【问题讨论】:

  • 说真的,这个问题已经被问了很多次才不好笑。
  • @cletus,我可能很高兴看到下面的链接在哪里,不,没有触及手头的问题。

标签: html regex tags


【解决方案1】:

关于SO有很多类似的问题:

  1. Filter out HTML tags and resolve entities in python
  2. Regex to match all HTML tags except <p> and </p>
  3. Strip all HTML tags except links

等等。普遍的共识是,最好不要使用正则表达式来解析 HTML,而是通过应用 DOM 解析器并遍历 DOM 树来正确地进行解析。

【讨论】:

  • 您可能希望将该链接文本从 URL 更改为问题文本,以使其更具可读性。
  • 是的,我见过他们。不过,我并不真正担心这里的最佳实践,因为无论如何它都不会最终出现在应用程序中。我看到的最大问题是匹配第一个字符“
  • @miccet:使用括号将您感兴趣的内容分组。
  • @cletus:我可能会,但我是个懒惰的混蛋。此外,真正重要的不是标题,因为它们都与同一个问题有关。
【解决方案2】:

一旦你开始考虑浏览器有时很乐意解析的所有特殊情况和格式错误的 HTML,就几乎不可能对 HTML 进行正则表达式。尽管如此,我认为在不使用捕获组的情况下获取名称可能会很有趣,因此我也向您提供以下解决方案:

(?<=<)\w+(?=[^<]*?>)

为了记录,我不相信它在任何情况下都没有用,但最微不足道的情况。

【讨论】:

  • 反正只是做个例子,不需要防弹。这工作得很好,我看到了排除函数是如何工作的。非常感谢。
  • @cletus:他没有涵盖的错误在什么级别?
【解决方案3】:

不知道你用的是什么系统,但一定程度上是可以做到的。查看this 在线基于弹性的应用程序。查看已发布 > XML 正则表达式示例。你会有一个想法。

【讨论】:

  • 找不到可以帮助我解决问题的示例,但它是一个很好的资源!我正在使用 ASP.net 正则表达式。
猜你喜欢
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 2014-08-23
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
  • 2011-05-03
相关资源
最近更新 更多