正则表达式以隔离html标记

时间:2012-07-11 15:10:44

标签: c# javascript .net html regex

我正在寻找一个正则表达式来隔离一个html标签。这包括TAG ATTRIBUTES和内部的CONTNET。

假设我有这个:

<html> 
<body>
aajsdfkjaskd 
<TAGNAME name="bla" context="non">hfdfhdj </TAGNAME>
</body>
 </html>

我需要一个可以返回的正则表达式:

<TAGNAME name="bla" context="non">hfdfhdj </TAGNAME>

感谢, 乔

5 个答案:

答案 0 :(得分:2)

不要使用正则表达式,而是使用HTML解析器。更可靠,更容易使用。

如果您是PHP开发人员,我建议您使用此开发人员(http://simplehtmldom.sourceforge.net/)。

答案 1 :(得分:1)

调查HTML Agility Pack它会让事情变得更容易。

答案 2 :(得分:0)

使用此正则表达式<TAGNAME.+?</TAGNAME>

答案 3 :(得分:0)

如果这是您尝试做的主要事情,XLST是一个很好的工具。 您可以轻松选择TAGNAME并复制属性和文本。 有关简介,请参阅http://www.w3schools.com/xsl/

答案 4 :(得分:0)

首先:不要这样做。使用正则表达式解析HTML是一个维护噩梦,并且很可能在任何现实世界的HTML示例中失败。有更好的选择(比如使用像HTML Agility pack这样的HTML解析器。)

要回答您的问题,以下正则表达式将执行您想要的操作如果 HTML代码

  • 形成良好(没有遗漏的结束标签等)
  • 不包含带有“TAGNAME”的评论
  • 不包含其中包含“TAGNAME”的脚本块
  • 或许更多

它可以扩展到涵盖其中一些案例,但你真的不想=)

    <TAGNAME(<TAGNAME (?<tagcounter>)|</TAGNAME>(?<-tagcounter>)|.)*</TAGNAME>(?(tagcounter)(?!))

你也需要RegexOptions.SingleLine。请参阅Ideone.com

中的实际操作