匹配一行中只出现一次的特定html标记

时间:2012-12-15 01:11:10

标签: html regex html-parsing

如何匹配这种线

<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>

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

</span> 

我试过这个正则表达式

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

请尽可能帮助我.net,perl或ruby风味

问候

1 个答案:

答案 0 :(得分:1)

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

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

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