首页
学习
活动
专区
圈层
工具
发布

() RE
EN

Stack Overflow用户
提问于 2017-02-11 20:23:55
回答 1查看 464关注 0票数 0

我试图使用在css文件中找到图像文件。除了它只在CSS文件中找到第一个图像之外,下面的操作都会忽略其余的图像。我怎样才能抓取所有的图像链接?

re.findall('^.(url|URL|Url|uRL|uRl)\s(\s*(.+.(png|jpg|gif|jpeg|svg))\s*).*?$',str(css))

EN

回答 1

Stack Overflow用户

发布于 2017-02-11 20:40:50

在regex中,^与新行(或整个文件)的开头匹配,$与末尾匹配。因此,regex匹配整个文件(因为最后是.* ),并且只有一个匹配(不重叠)。

相反,您应该搜索以下内容:

代码语言:javascript
复制
r'(url|URL|Url|uRL|uRl)\s(\s*(.+?\.(png|jpg|gif|jpeg|svg))\s*)'

这些变化是

  • 在开始和结束时删除^.*.*$
  • .+?而不是.+,用于使int无歧义(匹配最小的可能字符串)
  • 寻找一个真正的“。应该用\.[.]来完成
  • 请注意,\s*不是必需的,如果\s\s*不是捕获组的问题,则可以用\s+替换它。

也要照顾好你想要的群体。每个(...)都是一个可供非捕获组使用(?:...)访问的组。

也许是这样(取决于您想要的部分):

代码语言:javascript
复制
r'(?:url|URL|Url|uRL|uRl)\s\s*.+?\.(?:png|jpg|gif|jpeg|svg)'   

代码语言:javascript
复制
r'(?:url|URL|Url|uRL|uRl)\s\s*(.+?)\.(?:png|jpg|gif|jpeg|svg)'

为了只捕获内部的部分(在Python中,如果需要处理这些捕获组,可以使用\g<1>进行访问)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42180830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档