gpt4 book ai didi

html - 正则表达式根据 src 值有条件地选择所有图像 html 标签

转载 作者:太空宇宙 更新时间:2023-11-04 13:45:03 25 4
gpt4 key购买 nike

我需要一个正则表达式来执行以下操作(不幸的是它必须是一个正则表达式,我无法对此进行编码,因为它在购买的产品中工作):

我想选择一段 html 中的所有图像标签,其中图像标签不包含类属性,或者如果它确实包含类属性,则该属性在开头不包含特定字符串.基本上,我想从一大块 html 中剥离(通过匹配)所有图像标签,除了应用了特定类的图像。

这可能是两个独立的正则表达式 - 我只想匹配它们 - 而不是提取任何数据。

因此,例如,假设我要保留的类(class)名为 Pretty。

我希望正则表达式匹配:

<img src="xx"/>
<img border="x" src="xx"/>
<img whatever other attributes src="xx"/>
<img class="ugly" src="xx"/>
<img whatever other attributes class="fugly" src="xx"/>

但不匹配

<img class="Pretty" src="xx"/>
<img whatever other attributes class="Pretty" src="xx"/>
<img class="Pretty subpretty" src="xx"/>

如果在一个正则表达式中更容易做到(一个匹配所有没有类属性的图像标签,一个匹配具有非“漂亮”类属性的图像标签),那也完全没问题。

最佳答案

使用XPath相反,这就是它的用途:

//img[not(contains(@class,'Pretty'))]

此 XPath 表达式查找其 class 属性不包含字符串 'Pretty' 的每个 img 元素。我认为它适用于缺少 class 属性的元素。

用正则表达式解析 XML 和 HTML 通常是一个非常糟糕的主意。当然,XPath 只有在所讨论的 HTML 是严格的情况下才有效。如果它不是有效的 XML 文档,那么您可能希望默认返回其他内容,但即便如此,正则表达式也不是完成这项工作的正确工具。

附录:我在 30 分钟内回到这里是错误的。出了点事,我没时间解决。如果它对缺少 class 属性的元素不起作用,请使用以下表达式:

//img[(not(@class)) or (not(contains(@class,'Pretty')))]

关于html - 正则表达式根据 src 值有条件地选择所有图像 html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/944109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com