正则表达式来隔离html标记

Regular Expression to isolate an html tag

本文关键字:标记 html 隔离 正则表达式      更新时间:2023-09-26

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

假设我有这个:

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

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

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

谢谢,Joe

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

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

看看HTML敏捷包,它会让事情变得更容易。

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

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

不过,为了回答您的问题,如果HTML代码

  • 格式良好(没有缺少结束标记等)
  • 不包含带有"TAGNAME"的注释
  • 不包含带有"TAGNAME"的脚本块
  • 也许更多

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

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

你也需要RegexOptions.SingleLine。在Ideone.com 上查看它的实际操作

如果这是您尝试做的主要事情,那么XLST是一个很好的工具。您可以轻松地只选择TAGNAME并复制到属性和文本上。看见http://www.w3schools.com/xsl/介绍。