我试图使用在css文件中找到图像文件。除了它只在CSS文件中找到第一个图像之外,下面的操作都会忽略其余的图像。我怎样才能抓取所有的图像链接?
re.findall('^.(url|URL|Url|uRL|uRl)\s(\s*(.+.(png|jpg|gif|jpeg|svg))\s*).*?$',str(css))
发布于 2017-02-11 20:40:50
在regex中,^与新行(或整个文件)的开头匹配,$与末尾匹配。因此,regex匹配整个文件(因为最后是.* ),并且只有一个匹配(不重叠)。
相反,您应该搜索以下内容:
r'(url|URL|Url|uRL|uRl)\s(\s*(.+?\.(png|jpg|gif|jpeg|svg))\s*)'这些变化是
^.*和.*$。.+?而不是.+,用于使int无歧义(匹配最小的可能字符串)\.或[.]来完成\s*不是必需的,如果\s\s*不是捕获组的问题,则可以用\s+替换它。也要照顾好你想要的群体。每个(...)都是一个可供非捕获组使用(?:...)访问的组。
也许是这样(取决于您想要的部分):
r'(?:url|URL|Url|uRL|uRl)\s\s*.+?\.(?:png|jpg|gif|jpeg|svg)' 或
r'(?:url|URL|Url|uRL|uRl)\s\s*(.+?)\.(?:png|jpg|gif|jpeg|svg)'为了只捕获内部的部分(在Python中,如果需要处理这些捕获组,可以使用\g<1>进行访问)。
https://stackoverflow.com/questions/42180830
复制相似问题