用正则表达式搜索图像文件

2024-05-15 13:00:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下所示的文本文件:

[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()区分“分组”括号和用于分配组的括号?


Tags: orrehttpgetpngjsgifmedia