我可以使用哪种正则表达式来删除所有扩展名为 .jpg 的 url 并让 <img> 元素代替?

What kind of Regex could I use to delete all my url with .jpg extension and let <img> element instead?

我需要使用正则表达式删除所有指向我的 wordpress 帖子的图片链接。

我使用 Wordpress 的搜索正则表达式插件。这个插件在数据库中找到带有正则表达式的内容,它可以替换它。

我需要做的一些例子:

<a rel="nofollow" href="https://www.exemple.com/test.jpg" class="link" title="test">
     <img src="https://www.exemple.com/test.jpg" alt="test">
</a>

<img src="https://www.exemple.com/test.jpg" alt="test">

<a href="https://www.exemple.com/test1.png" title="test1" class="link">
     <img src="https://www.exemple.com/test1.png" alt="test1">
</a>

<img src="https://www.exemple.com/test1.png" alt="test1">

我在此处找到了一些正则表达式解决方案:https://regex101.com/r/xX9pJ8/1 or here 但我无法根据自己的需要对其进行调整。 如果您有解决方案,请告诉我谢谢

正如其他人提到的:

My first point would be that regular expressions may well not be the path you want to take in this case.

你最好设置一些东西来解析你的帖子的 HTML,找到包含图像标签的锚标签,然后检查图像标签源属性以查看扩展名是否以 "jpg",如果是这样,用图片标签替换锚标签。


除此之外,使用 WordPress 会增加一些难度,但 可以 完成。请注意,正如您在 link 中看到的那样,这不是 RegEx 的目的,它无法处理所有情况,link.

您需要首先匹配锚标记,验证它 link 是否为任何文件扩展名,然后匹配图像标记,验证图像是否以您想要的任何文件扩展名结尾,捕获完整的图片 link,然后也匹配结束锚标记,以便它干净地替换。

This is the expression 我想到了,几乎可以肯定会更好,但我也希望它更冗长和明显:

/<a[^>]+href ?= ?["'][^"']+\.(?:jpe?g|png)["'].+\n?\r?[\s]{0,100}<img[^>]+src ?= ?["']([^"']+\.(?:jpe?g|png))["'].+\n?\r?[\s]{0,100}<\/a>/gim

这适用于 PCRE 或 JS,适用于 png、PNG、jpg、JPG、jpeg 和 JPEG。如果锚标记和图像标记之间有多个换行符,或者与其他图像扩展一起使用,除非您添加它们,否则它将不起作用。

您只需将整个搜索替换为:<img src="">