首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只解析第二个regex匹配(webserver日志)?

只解析第二个regex匹配(webserver日志)?
EN

Stack Overflow用户
提问于 2017-10-01 21:07:46
回答 1查看 82关注 0票数 0

我有以下(AWS负载均衡器格式)日志文件示例行,我想解析。

代码语言:javascript
复制
http 2017-08-01T00:25:06.644602Z app/webservices/2f179337c6c8adb5
46.229.168.65:7336 172.31.26.99:82 0.000 0.574 0.000 200 200 257 192227 "GET http://trac.navit-project.org:80/timeline?from=2011-04-16T07%3A23%3A03Z&precision=second HTTP/1.1" "Mozilla/5.0 (compatible; SemrushBot/1.2~bl;
+http://www.semrush.com/bot.html)" - - arn:aws:elasticloadbalancing:us-west-2:712275310776:targetgroup/trac/34e2ac9af93f42de "Root=1-597fca61-4dfde4b02cd92cf61ace9825"

我有一个至少部分工作的正则表达式,如下所示:

代码语言:javascript
复制
match = re.search(r'\"(?P<agent>.*?)\"', line)
print(match)

问题是正则表达式只匹配上面日志行中的第一组引号。

代码语言:javascript
复制
<_sre.SRE_Match object; span=(138, 241), match='"GET http://trac.navit-project.org:80/timeline?fr>

是否有一种方法可以修改它以查找第二个匹配,以便我可以解析用户代理?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-01 21:55:41

将正则表达式更改为

代码语言:javascript
复制
"[^"]+"[^"]+"(?P<agent>[^"]*)"

说明:

代码语言:javascript
复制
"                     # opening first "-set
[^"]+                 # followed by anything not equal to "
"                     # closing first "
[^"]+                 # followed by anything not equal to "
"                     # opening second "-set
(?P<agent>[^"]*)      # named group agent
"                     # closing "
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46516914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档