RegEx - 搜索引号中的特定内容

问题描述 投票:0回答:1

我知道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,匹配的第一个引号应该是最接近最后一个引号的引号?

regex
1个回答
4
投票

在第一个"之后,尝试通过一个否定的字符集重复除了"以外的任何东西,而不是.,它将(不合需要地)匹配"

"[^"]*(jpg|png)"

https://regex101.com/r/PKZLp5/1

现在重复是懒惰还是贪婪并不重要,但是当文件名长于文件扩展名时,贪婪的重复会发现匹配稍快一些。

© www.soinside.com 2019 - 2024. All rights reserved.