【问题标题】:Regular expression for Notepad++ search [closed]Notepad ++搜索的正则表达式[关闭]
【发布时间】:2013-07-10 12:08:14
【问题描述】:

我想搜索并删除 HTML 图像标签中的专有标签。

我想从每个 IMG 标记中删除以下属性:data-base-urldata-linked-resource-default-aliasdata-linked-resource-container-iddata-image-data-linked-resource-iddata-linked-resource-type

所以我正在尝试为 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.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属性值):

&lt;img src="http://doc.musicbox.com/download/attachments/5374312/fo008-suppliers.png" title="" alt="" /&gt;

这个表达式怎么写?

【问题讨论】:

标签: html css regex notepad++


【解决方案1】:

查找:

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

替换为:

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

【讨论】:

  • 是的,这种组合效果很好。谢谢你!还有一个注意事项:我想删除图像 URL 中的额外数据 - .png 之后的任何内容,以便从 http://doc.musicbox.com/download/attachments/5374312/fo011-newsletter.png?version=1&amp;amp;modificationDate=1344416606000http://doc.musicbox.com/download/attachments/5374312/fo011-newsletter.png
  • @sonex 如果他的作品,这应该是你在评论中提出的问题:&lt;img.+src="([^?]+).*" title="(.+)" /&gt;
【解决方案2】:

说明

这个正则表达式将:

  • 从所有图像标签中提取 src、alt、width 和 title 属性
  • 跳过可能有问题的属性
  • 允许属性以任意顺序出现
  • src属性只能使用upto但不包括第一个?

正则表达式:

<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

替换为:&lt;img $1" $2 $3 $4 /&gt;

$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&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" />

查找内容: &lt;img\b(?=\s)(?=(?:(?:[^&gt;=]|='[^']*'|="[^"]*"|=[^'"][^\s&gt;]*)*?\s(src=["][^"]*?)[?"])?)(?=(?:(?:[^&gt;=]|='[^']*'|="[^"]*"|=[^'"][^\s&gt;]*)*?\s(alt=["][^"]*["]))?)(?=(?:(?:[^&gt;=]|='[^']*'|="[^"]*"|=[^'"][^\s&gt;]*)*?\s(title=["][^"]*["]))?)(?=(?:(?:[^&gt;=]|='[^']*'|="[^"]*"|=[^'"][^\s&gt;]*)*?\s(width=["][^"]*["]))?)(?:[^&gt;=]|='[^']*'|="[^"]*"|=[^'"\s]*)*"\s?\/?&gt;

替换为: &lt;img $1" $2 $3 $4 /&gt;

以前版本中notepad++正则表达式存在问题。这适用于 6.3.3 和 6.4.2。但是在更高版本中,描述替换次数的弹出对话框已更改为替换窗口下方的一行文本(在图像中的箭头旁边)

【讨论】:

  • 对我没用,notepad++ 6.4.2
  • 您是使用上面记事本部分中突出显示的正则表达式还是描述部分中的那个?如图所示,您是否还配置了查找和替换屏幕?
  • 我下载并安装了 6.4.2,这对我有用。所以我更新了答案以表明这适用于最新版本。我将表达式更新为 src 值中不需要的文本。
  • 对不起,我的错。我没有在搜索模式中选择“正则表达式”。工作正常。非常感谢。
  • 我正在尝试修改&lt;img class="confluence-embedded-image confluence-content-image-border" src="Musicbox_files/fo001-defaultTheme.png" data-image-src="http://doc.prestashop.com/download/attachments/5374312/fo001-defaultTheme.png?version=1&amp;amp;modificationDate=1344416572000" data-linked-resource-id="11468808" data-linked-resource-type="attachment" data-linked-resource-default-alias="fo001-defaultTheme.png" data-base-url="http://doc.musicbox.com" data-linked-resource-container-id="5374312" title="Musicbox 1.9 &amp;gt; Browsing the front-office &amp;gt; fo001-defaultTheme.png" width="75%"&gt;的正则表达式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-17
  • 1970-01-01
相关资源
最近更新 更多