.NET正则表达式

时间:2010-07-06 07:36:58

标签: .net regex

我的html页面源代码包含img标签,如

<p>xyz </p>< img ....... 1 . gif >........<p>xyz</p>
           < img ........ 2 . jpg >..............<p>xyz</p>    
           < img ........ 3 . jpg ><p>xyz</p>
           < img ....... 4 . gif >......<span>xyz</span>

Img标签可以包含jpg和其他格式图像,并且可以在网页源中以任何顺序排列。现在我想使用.NET正则表达式,它可以给我第一个带有JPG图像的img标签,如

< img ... 2. jpg >

或任何没有gif图像的第一个img标记。基本上我想删除正则表达式中的笑脸gif图像

请建议我使用正则表达式

5 个答案:

答案 0 :(得分:2)

不要使用RegEx解析HTML。出于令人信服的原因,请参阅here

HTML不是常规语言,因此不适合使用正则表达式进行解析。

使用HTML Agility Pack解析HTML。它将解析后的HTML公开为XmlDocument,并且可以使用XPath进行查询。

答案 1 :(得分:0)

<.*img[^>]*\.[^>]*jpg[^>]*>

答案 2 :(得分:0)

使用正则表达式来解析或修改HTML文档是不受欢迎的。对于一次性操作,您可以使用

<img\s+[^>]*2.jpg[^>]*>(</img>)?

识别包含“2.jpg”的图像标签。如果你想多次这样做,你可以使用像HTML Agility Pack这样的HTML Parser来帮助你。面对现实世界的HTML代码时,它的脆弱性要小得多。

答案 3 :(得分:0)

如果html是有效的xhtml,你也可以使用xpath或xslt。

xpath应该看起来像那样(抱歉没有测试过):

//img[not fn:ends-with(@src, ".gif")]

答案 4 :(得分:0)

jquery怎么样?

很容易找到html dom部件并进行更改 $('img[src~=.gif]').hide();