【问题标题】:match a specific html tag that appears only once in a line匹配在一行中只出现一次的特定 html 标签
【发布时间】:2012-12-15 01:11:09
【问题描述】:

这种线怎么搭配

<p><span class="font7" style="font-weight:bold;">text text text text </span></p>\r\n<p>

同时避免这种线路

<p><span class="font7" style="font-weight:bold;">text text text text </span><span class="font7"> text text text <br/> text text text </span></p>\r\n<p>

问题是标签跨度在同一行出现两次,我想避免这种情况。 只希望 if 在一行中出现一次。

</span> 

我试过这个正则表达式

<p><span class="font7" style="font-weight:bold;">.+?(?:(?!.+?</span>.+?$)){2}</p>\r\n<p>

请帮助我,如果可能的话,使用 .net、perl 或 ruby​​ 风格

问候

【问题讨论】:

  • 不要使用正则表达式解析 HTML。请看stackoverflow.com/questions/1732348的第一个答案
  • 这个答案的问题在于,对于我们这些了解 HTML 解析问题的人来说很有趣,但对于不了解 HTML 解析问题的新手来说却毫无意义。

标签: html regex html-parsing


【解决方案1】:

不要尝试使用正则表达式解析 HTML。你不能可靠地做到这一点。正则表达式无法胜任。

您需要一个合适的 HTML 解析器。它将是一个经过充分测试并被许多人使用的 HTML 解析器,而不是您尝试拼凑的任何正则表达式。

以下是Perl HTML parsers 的一些选项。从那里开始。

【讨论】:

  • 谢谢,但是我已经自己解决了这个问题,这并不难,尽管我认为对于一些更难的任务我会考虑你提供的选项。
猜你喜欢
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2013-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多