如何让正则表达式正确匹配网址与正确的图像文件名?

时间:2014-10-28 18:07:18

标签: regex

我正在尝试使用Regex更新大型文档的路径,我正在尝试匹配所有包含文件类型JPG,PNG

的img Src标记

我已使用以下内容尝试让Regex正确匹配:

<img src="xanne.nnn.pagespeed.ic.u49smximgo.jpg" alt="test">
<img src="xanne.nnn.pagespeed.ic.u49smximgo.png" alt="test">

但它也匹配底部

<img src="xanne.nnn.pagespeed.ic.u49smximgo.webp" alt="test">
<img src="xanne.nnn.pagespeed.ic.u49smximgo.gif" alt="test">

当我使用以下正则表达式时:

<img src="(?=.*(jpg|png)?)

我有什么想法可以让它只匹配(1和2)而不是1,2,3,4?

2 个答案:

答案 0 :(得分:1)

如果只想匹配src属性值

img src="(?=(.*jpg|.*png))

RegEx Demo

这将匹配1,2

中显示格式的整行
(?=^<img src=".*(jpg|png)").*$

答案 1 :(得分:1)

  

如何让正则表达式将网址与正确的图像文件名正确匹配?

从下面的正则表达式模式中使用括号捕获索引1中的匹配组:

<img src="(.*\.(jpg|png))"

Online demo


或者在没有分组的情况下尝试使用非捕获组和Positive Look Behind不使用字符串中的字符,但只断言是否可以匹配。

(?<=<img src=").*\.(?:jpg|png)(?=")

Online demo