2012-12-15 42 views
0

如何搭配这种线匹配在一行中只出现一次特定HTML标签

<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或红宝石味

问候

+2

不要使用正则表达式来解析HTML。请参阅http://stackoverflow.com/questions/1732348 –

+0

的第一个答案这个答案的问题在于,对于我们这些了解HTML解析问题的人来说很有趣,但对于那些没有这种解析的新手却毫无意义。 –

回答

1

不要试图用常规的解析HTML表达式。你无法可靠地做到这一点。正则表达式不符合任务。

您需要一个合适的HTML解析器。它将是一个HTML解析器,它已经被很多人使用,而不是你尝试拼凑在一起的任何正则表达式。

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

+0

感谢,但已经解决了我自己的问题,这并不是很难,即使我认为对于一些更难的任务,我会考虑你给的选项。 – alex

相关问题