# 注意这个 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
就结束了。。。
一直想不通为什么,特来求助
1 Dragonish3600 2024-08-20 09:04:40 +08:00 扔到 regex101 里看一眼就好了。 双引号前要加\ |
2 zk8802 2024-08-20 09:06:56 +08:00 ![]() 这个应该是 pattern.__rep__() 显示的问题。你可以试试 print(regex.pattern),结果应该是正确的。 |
![]() | 3 lzoje 2024-08-20 09:08:27 +08:00 问 chatgpt 说只是 print 输出显示问题,你 print regex.pattern 就是完整的了 |
4 FlyaiF PRO 试了下最后一个捕获组 req_id 不能用贪婪匹配,匹配到空了。 正则应该是完整的,应该是 print 问题。 |
5 NoOneNoBody 2024-08-20 11:26:04 +08:00 长字符串最好用三引号 |