Notepad ++搜索的正则表达式

时间:2013-07-10 12:08:14

标签: html css regex notepad++

我想要搜索并删除HTML图片标记内的专有标签。

我想从每个IMG标记中删除以下属性:data-base-urldata-linked-resource-default-aliasdata-linked-resource-container-iddata-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&amp;modificationDate=1344416572000" title="Musicbox 1.9 &gt; Browsing the front-office &gt; 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&amp;modificationDate=1344416588000" title="Musicbox 1.9 &gt; Browsing the front-office &gt; fo008-suppliers.png" /> 属性和截断的alt属性值):

src

如何写这个表达式?

2 个答案:

答案 0 :(得分:2)

查找:

<img.+src="(.+)" title="(.+)" />

替换为:

<img src="\1" title="\2" alt="" />

答案 1 :(得分:2)

描述

这个正则表达式将:

  • 从所有图片标记中提取src,alt,width和title属性
  • 跳过可能存在问题的属性
  • 允许属性以任何顺序显示
  • 对于src属性,仅使用最多但不包括第一个?

正则表达式:

<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需要在第一个?符号处截断。

在Notepad ++

示例文字

请注意,在第二个图片标记中,我添加了一个可能存在问题的属性。

<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&amp;modificationDate=1344416572000" title="Musicbox 1.9 &gt; Browsing the front-office &gt; 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&amp;modificationDate=1344416588000" title="Musicbox 1.9 &gt; Browsing the front-office &gt; 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。但是在更高版本中,描述替换次数的弹出对话框已更改为替换窗口下方的文本行(图像中的箭头旁边)

enter image description here