【问题标题】:How do I get Regex to correctly match urls with correct image file names?如何让正则表达式正确地将 url 与正确的图像文件名匹配?
【发布时间】:2014-10-28 18:07:18
【问题描述】:

我正在尝试使用 Regex 更新大型文档的路径,并且我正在尝试使匹配项匹配所有包含 JPG、PNG 文件类型的 img Src 标记

我使用以下方法来尝试让正则表达式正确匹配:

<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?

【问题讨论】:

  • 你想得到什么作为匹配? (在整个 img 标签中还是仅在 src=" 之前的部分?)
  • 删除了我的答案,直到您想匹配的内容完全清楚为止。
  • 为什么有人编辑我的问题标题?这不是我最初问的吗?更新为原始问题

标签: regex


【解决方案1】:

如果只想匹配src属性值

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

RegEx Demo

这将匹配具有 1,2 所示格式的整行

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

【讨论】:

    【解决方案2】:

    如何让 Regex 将 urls 与正确的图像文件名正确匹配?

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

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

    Online demo


    或者尝试不分组,也可以使用非捕获组和Positive Look Behind,它们不消耗字符串中的字符,而只断言是否可能匹配。

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

    Online demo

    【讨论】:

      猜你喜欢
      • 2010-10-03
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多