-1

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

假设我有这个:

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

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

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

谢谢,乔

4

5 回答 5

2

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

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

于 2012-07-11T15:15:21.803 回答
1

看看HTML Agility Pack,它会让事情变得容易得多。

于 2012-07-11T15:16:32.033 回答
0

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

于 2012-07-11T15:13:14.750 回答
0

如果这是您想要做的主要事情,那么 XLS​​T 是一个很好的工具。您可以轻松地仅选择 TAGNAME 并复制属性和文本。有关介绍,请参见http://www.w3schools.com/xsl/

于 2012-07-11T15:16:04.293 回答
0

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

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

  • 格式正确(没有缺少结束标签等)
  • 不包含带有“TAGNAME”的评论
  • 不包含带有“TAGNAME”的脚本块
  • 也许更多

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

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

RegexOptions.SingleLine也需要。在Ideone.com上查看它的实际应用

于 2012-07-11T15:41:48.867 回答