如何使用regex搜索带有或不带有双引号的项目?

2024-10-04 11:26:08 发布

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

我有一个Apache日志列表,我希望循环遍历这些日志,并将每个元素拆分为一个新列表

例如

83.149.9.216 - - [17/May/2015:10:05:03 +0000] "GET /presentations/logstash-monitorama-2013/images/kibana-search.png HTTP/1.1" 200 203023 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"

但是,其中一个条目在最后一个元素(用户代理)上没有结束引号

46.118.127.106 - - [20/May/2015:12:05:17 +0000] "GET /scripts/grok-py-test/configlib.py HTTP/1.1" 200 235 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html

我正在使用这个正则表达式

apacheTup = re.match('([(\d\.)]+) (.*) (.*) \[(.*?)\] "(.*?)" (\d+) (.*?) "(.*?)" "(.*?)"',fileStr).groups()

但是,我得到一个错误

'NoneType' object has no attribute 'groups'

错误发生在没有结束引号的行。如何更改regex,使其接受带或不带结束引号的用户代理


Tags: 用户pycomhttp元素代理mozilla列表