我有一个如下所示的文本文件:
[22/Nov/2011 12:57:58] "GET /media/js/jquery-1.4.3.min.js HTTP/1.1" 304 0
[22/Nov/2011 12:57:58] "GET /media/js/fancybox/fancybox-x.png HTTP/1.1" 304 0
[22/Nov/2011 12:57:59] "GET /media/js/fancybox/fancybox-y.png HTTP/1.1" 304 0
[22/Nov/2011 12:57:59] "GET /media/js/fancybox/blank.gif HTTP/1.1" 304 0
[22/Nov/2011 12:57:59] "GET /ajax/pages/erlebnisse/ HTTP/1.1" 200 563
[22/Nov/2011 12:58:00] "GET /erlebnisse/alle-erlebnisse/ HTTP/1.1" 200 17114
我想使用正则表达式来获取出现在这里的所有图像文件(.gif、.jpg、.png)。因此,上述文本的结果应该是:
['fancybox-x.png', 'fancybox-y.png', 'blank.gif']
我所做的是:
re.findall('\w+\.(jpg|gif|png)', f.read())
所以模式是:
1 or more word-characters
(\w+)
followed by a dot(\.)
and then 'jpg', 'gif' or 'png'(jpg|gif|png)
.
这实际上是有效的,但是混淆了括号(我只用于“分组”)作为group(1)
的内容,因此结果是:
['png', 'png', 'gif']
用是对的,但不完整。换言之,我在问,我如何才能使re.findall()
区分“分组”括号和用于分配组的括号?
目前没有回答
相关问题 更多 >
编程相关推荐