```Python

# 注意这个 pattern 的最后一部分是 req_id
pattern = r'(?P<remote_addr>.*?)\ \-\ (?P<remote_user>.*?)\ \[(?P<time_local>.*?)\]\ "(?P<request>.*?)"\ (?P<status>.*?)\ (?P<body_bytes_sent>.*?)\ "(?P<http_referer>.*?)"\ "(?P<http_user_agent>.*?)"\ (?P<req_id>.*?)'

regex = re.compile(pattern)
print("---- regex:", regex)
```

print 出来的结果:
> ---- regex: re.compile('(?P<remote_addr>.*?)\\ \\-\\ (?P<remote_user>.*?)\\ \\[(?P<time_local>.*?)\\]\\ "(?P<request>.*?)"\\ (?P<status>.*?)\\ (?P<body_bytes_sent>.*?)\\ "(?P<http_referer>.*?)"\\ "(?P<http_user_agent>.*?)"\)


缺少了最后一部分`req_id`,到了`http_user_agent`就结束了。。。   
一直想不通为什么,特来求助
举报· 81 次点击
登录 注册 站外分享
5 条回复  
ladypxy 小成 2024-8-20 09:04:40
扔到 regex101 里看一眼就好了。
双引号前要加\
zk8802 小成 2024-8-20 09:06:56
这个应该是 pattern.__repr__() 显示的问题。你可以试试 print(regex.pattern),结果应该是正确的。
lzoje 初学 2024-8-20 09:08:27
问 chatgpt 说只是 print 输出显示问题,你 print regex.pattern 就是完整的了
FlyaiF 小成 2024-8-20 09:17:06
试了下最后一个捕获组 req_id 不能用贪婪匹配,匹配到空了。
正则应该是完整的,应该是 print 问题。
NoOneNoBody 小成 2024-8-20 11:26:04
长字符串最好用三引号
返回顶部