将特定字符串更改为另一个特定字符串,同时保留第一个字符串的一些内容

时间:2015-05-05 16:35:27

标签: regex replace notepad++

我不太熟悉Notepad ++中使用的“扩展”和“正则表达式”搜索和替换选项,所以我需要帮助转换这样的字符串:

<a href="http://imgur.com/my7ul.png" class="bbc_url" title="External link" rel="nofollow external">http://imgur.com/my7ul.png</a>

采用以下格式:

<img class="bbc_img" src="http://imgur.com/my7ul.png" alt="Posted Image" />

请注意,我只需要能够转换(链接)包含imgur.com图像的字符串,并且我需要能够转换每个(链接)字符串其中包含imgur.com图像,这意味着图像文件的名称会有所不同,并且需要为每个转换的字符串保持不变。 Imgur图像文件名包含任何字母和/或数字字符(包括大写小写字符)。

非常感谢任何帮助,如果你解释你的解决方案是如何工作的,那么我也可以在所有这些之后学到一些东西。

2 个答案:

答案 0 :(得分:1)

您可以使用以下内容进行匹配(假设您的链接和类名不包含双引号):

<a\s*href="(.*?)"\s*class="(.*?)".*?<\/a>

并将其替换为:

<img class="\2" src="\1" alt="Posted Image" />

修改:如果您只想转换imgur.com的链接..您可以使用:

<a\s*href="(http:\/\/imgur.com\/.*?)"\s*class="(.*?)".*?<\/a>

说明:

  • <a\s*匹配<后跟a和任意数量的空格/标签(即匹配锚标记)
  • href="(http:\/\/imgur.com\/.*?)"按字面意思匹配href=",然后是( =&gt;捕获组1和http://imgur.com/(转义的特殊字符)和.*?任何非贪婪的字符(?)..然后跟"(即捕获href属性)
  • \s*匹配任意数量的空格
  • class="(.*?)"字面匹配class=" ..后跟(捕获组2和.*?任意字符和"(即捕获类属性)
  • .*?<\/a>匹配任何后跟</a>的字符(转义特殊字符)(即匹配其他内容直到锚点关闭)

答案 1 :(得分:0)

我会这样做:

找到:

<a.*?href="(http://imgur\.com/[^"]+)".*?</a>

替换为:

<img class="bbc_img" src="$1" alt="Posted Image" />

<强>解释

<a                          : litteraly star tag <abstract
.*?                         : any character as less as possible
href="                      : litteraly href="
(                           : start cappture group 1
    http://imgur\.com/[^"]+ : that contains imgur.com
)                           : end of group
"                           : quote
.*?                         : any character as less as possible
</a>                        : litteraly </a>

对于替换部分,src属性将按组1的内容定价