如果您正在搜索 URL 列表
urls = [ 'http://some.link.com/path/to/file.jpg',
'http://some.link.com/path/to/another.png',
'http://and.another.place.com/path/to/not-image.txt',
]
要查找与给定模式匹配的模式,您可以使用:
import re
for url in urls:
if re.match(r'http://.*(jpg|png|gif)$'):
print url
哪个会输出
http://some.link.com/path/to/file.jpg
http://some.link.com/path/to/another.png
re.match() 将在字符串开头测试匹配,并为前两个链接返回一个匹配对象,为第三个链接返回None。
如果您只是获得扩展,则可以使用以下内容:
for url in urls:
m = re.match(r'http://.*(jpg|png|gif)$')
print m.group(0)
将打印出来
('jpg',)
('png',)
您将只获得扩展名,因为这是定义为一个组的内容。
如果需要在一长串文本中查找url(如从wget返回),则需要使用re.search(),并将感兴趣的部分用( )括起来。例如,
response = """dlkjkd dkjfadlfjkd fkdfl kadfjlkadfald ljkdskdfkl adfdf
kjakldjflkhttp://some.url.com/path/to/file.jpgkaksdj fkdjakjflakdjfad;kadj af
kdlfjd dkkf aldfkaklfakldfkja df"""
reg = re.search(r'(http:.*/(.*\.(jpg|png|gif)))', response)
print reg.groups()
将打印
('http://some.url.com/path/to/file.jpg', 'file.jpg', 'jpg',)
或者您可以使用re.findall 或re.finditer 代替re.search 来获取长响应中的所有URL。搜索只会返回第一个。