我的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图像
请建议我使用正则表达式
答案 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();