正则表达式:没有多个路径的img src网址

时间:2013-10-23 22:51:20

标签: html regex image wordpress

通过另一个疯狂的网站迁移!

我有HTML img src网址,看起来像这样

http://blog.example.com/imagename.jpg

图像格式也可以是jpg,png或gif

我们需要一个正则表达式,它会立即找到每个具有域名的网址,然后是“/imagename.jpg”。

正则表达式非常新,表达式是什么?

2 个答案:

答案 0 :(得分:0)

WordPress迁移的更好替代方案

如果您要移动您的网站,并且您希望使用新域替换旧网站的所有引用,建议您使用David Coveney's Serialized Search & Replace DB v2.1.0。您需要在数据库的新副本上运行此命令,始终备份方便。在目标服务器上导入数据库,然后运行该工具 - 您甚至不必上传服务器文件。

当我从开发服务器到实时域名时,我通常会进行两次搜索&取代:

一个用于URL,非常基本:

Search: mywebsite.devserver.com
Replace: my-new-website.com

一个用于文件路径:

Search: /vhosts/devserver.com/mywebsite
Replace: /vhosts/my-new-website.com/httpdocs
(Note: This is assuming the majority of the file path is the same for both servers. Your search & replace paths may need to be more accurate)

您希望序列化搜索和替换的原因是某些数据以PHP序列化格式存储,如果您使用文本编辑器或MySQL直接更改值,则可能无法之后反序列化。


正则表达式答案

使用以下正则表达式模式选择blog.example.com托管的图像:

((http|https)://blog\.example.com/[^ \r\n]+\.(jpg|jpeg|png|gif))

基本上会搜索此内容:http(s)://blog.example.com/*.(jpg/png/etc)

匹配以下示例中的网址:

http://example.com/imagename.jpg
http://blog.example.com/imagename.jpg
http://blog.example.com/favicon.png
http://blog.example.com/uploads/2013/05/kitten.gif
https://blog.example.com/ssl-secure.png
This is my favorite gif https://blog.example.com/some-hilarious-image.gif hahaha

不符合以下任何一项:

blog.example.com/google.png
https://blog.google.com/google.png
our website is http://blog.example.com and has an image named /imagename.png
http://blog.example.com/

为什么它与那些(按行)不匹配:

Does not include http(s)://
Hosted by google
Paragraph text, where the URL is split into two parts
Not an image

$1会返回图片的完整网址。

我在RegexTester.com上对此进行了测试。您可以在顶部字段中复制模式,并在下面的框中复制所有示例。红色亮点是匹配。

答案 1 :(得分:0)

许多好的建议已经存在,为什么wordpress网站将域名硬编码为链接,但这不是我们现在的问题。如果你需要一个正则表达式,那么试试这个:

(?<=<img).+(?<=src=["'])(.+(?:jpe?g|gif|png))

说明:

(?<=<img).+(?<=src=["']) - be sure we're inside an <img> tag up to src attribute
(.+(?:jpe?g|gif|png)) capture everything up to required extension