我想要搜索并删除HTML图片标记内的专有标签。
我想从每个IMG标记中删除以下属性:data-base-url
,data-linked-resource-default-alias
,data-linked-resource-container-id
,data-image-
,data-linked-resource-id
和{{1} }。
所以我正在尝试为Notepad ++搜索创建正则表达式,以搜索此代码并删除。
图片代码示例:
data-linked-resource-type
我想获取此图片代码(添加了<img data-base-url="http://doc.webdomain.com" data-image-="" data-linked-resource-container-id="5374312" data-linked-resource-default-alias="fo005-categories.png" data-linked-resource-id="11468806" data-linked-resource-type="attachment" src="http://doc.musicbox.com/download/attachments/5374312/fo005-categories.png?version=1&modificationDate=1344416572000" title="Musicbox 1.9 > Browsing the front-office > fo005-categories.png" />
<img data-base-url="http://doc.webdomain.com" data-image-="" data-linked-resource-container-id="5374312" data-linked-resource-default-alias="fo008-suppliers.png" data-linked-resource-id="11468815" data-linked-resource-type="attachment" src="http://doc.musicbox.com/download/attachments/5374312/fo008-suppliers.png?version=1&modificationDate=1344416588000" title="Musicbox 1.9 > Browsing the front-office > fo008-suppliers.png" />
属性和截断的alt
属性值):
src
如何写这个表达式?
答案 0 :(得分:2)
查找:
<img.+src="(.+)" title="(.+)" />
替换为:
<img src="\1" title="\2" alt="" />
答案 1 :(得分:2)
这个正则表达式将:
?
正则表达式:
<img\b(?=\s) # capture the open tag
(?=(?:(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\s(src=["][^"]*?)[?"])?) # find the src attribute and truncate at at the first `?`
(?=(?:(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\s(alt=["][^"]*["]))?) # find the alt attribute
(?=(?:(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\s(title=["][^"]*["]))?) # find the title attribute
(?=(?:(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\s(width=["][^"]*["]))?) # find the width attribute
(?:[^>=]|='[^']*'|="[^"]*"|=[^'"\s]*)*"\s?\/?> # get the entire tag
替换为:<img $1" $2 $3 $4 />
"
需要$1
,因为src需要在第一个?
符号处截断。
示例文字
请注意,在第二个图片标记中,我添加了一个可能存在问题的属性。
<img data-base-url="http://doc.webdomain.com" data-image-="" data-linked-resource-container-id="5374312" data-linked-resource-default-alias="fo005-categories.png" data-linked-resource-id="11468806" data-linked-resource-type="attachment" src="http://doc.prestashop.com/download/attachments/5374312/fo005-categories.png?version=1&modificationDate=1344416572000" title="Musicbox 1.9 > Browsing the front-office > fo005-categories.png" />
<img onmouseover=' src="BAD.IMAGE.PNG" ; funImageSwap(src) ; ' data-base-url="http://doc.webdomain.com" data-image-="" data-linked-resource-container-id="5374312" data-linked-resource-default-alias="fo008-suppliers.png" data-linked-resource-id="11468815" data-linked-resource-type="attachment" src="http://doc.prestashop.com/download/attachments/5374312/fo008-suppliers.png?version=1&modificationDate=1344416588000" title="Musicbox 1.9 > Browsing the front-office > fo008-suppliers.png" />
查找内容: <img\b(?=\s)(?=(?:(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\s(src=["][^"]*?)[?"])?)(?=(?:(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\s(alt=["][^"]*["]))?)(?=(?:(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\s(title=["][^"]*["]))?)(?=(?:(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\s(width=["][^"]*["]))?)(?:[^>=]|='[^']*'|="[^"]*"|=[^'"\s]*)*"\s?\/?>
替换为: <img $1" $2 $3 $4 />
以前版本中的notepad ++正则表达式存在问题。这适用于6.3.3和6.4.2。但是在更高版本中,描述替换次数的弹出对话框已更改为替换窗口下方的文本行(图像中的箭头旁边)