【发布时间】:2023-03-27 05:09:01
【问题描述】:
我知道 RegEx 并不是在 HTML 中搜索的最理想工具。然而,这是我被赋予的工作。注意:我不是在寻找可以跨网站强大的东西。比如我只考虑引号,不担心撇号。
假设我有以下文本:
The quick brown "fox.jpg" jumps "google.com" over the "lazy.png" dog.
我想搜索特定的图片链接,匹配 "fox.jpg" 和 "lazy.png",忽略 "google.com" 。我理论上可以使用像
这样的搜索模式".*?"
这将找到 所有 引号,我可以从中简单地解析每个匹配项以确定它是否是图像。
但是像
".*?(jpg|png)"
不起作用,因为它返回 "fox.jpg"(好)和 "google.com" 而不是 "lazy.png"(坏)。
那么:我是否缺少额外的“贪婪”设置?告诉RegEx匹配的第一个引号应该是最接近最后一个引号的引号?
【问题讨论】:
-
.*是贪心的,.*?不是。否则,您唯一的匹配将是 “fox.jpg”将“google.com”跳过“lazy.png”。 “google.com”超过“lazy.png” 是否匹配最少的字符数。正则表达式引擎总是返回最左边的匹配,即使稍后可以找到“更好”的匹配:regular-expressions.info/engine.html
标签: regex