You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中Regex模式匹配失败但regex101正常问题排查

问题原因及解决办法

核心问题出在正则的引号匹配逻辑上,而非-[0-9]{4}部分:

  • 你写的正则用\"来匹配请求首尾的双引号,但实际日志里的是普通双引号",不是HTML实体"。Python的re模块不会自动解析HTML实体,所以这部分完全匹配失败,导致整个正则返回0结果。
  • 你在regex101上能匹配,是因为你可能在测试时把日志里的双引号换成了",或者regex101的环境自动处理了这类实体,但Python不会做这个转换。

你误以为问题出在时区部分,大概率是测试时不小心修改了引号部分(比如把\"改成了\"),才让移除时区后的正则能匹配,这是个巧合。

修正后的正则

用原始字符串(避免转义问题),把\"替换成普通双引号即可:

import re

log_content = """146.204.224.152 - feest6811 [21/Jun/2019:15:45:24 -0700] "POST /incentivize HTTP/1.1" 302 4622
197.109.77.178 - kertzmann3129 [21/Jun/2019:15:45:25 -0700] "DELETE /virtual/solutions/target/web+services HTTP/2.0" 203 26554
156.127.178.177 - okuneva5222 [21/Jun/2019:15:45:27 -0700] "DELETE /interactive/transparent/niches/revolutionize HTTP/1.1" 416 14701
100.32.205.59 - ortiz8891 [21/Jun/2019:15:45:28 -0700] "PATCH /architectures HTTP/1.0" 204 6048"""

pattern = r'([0-9\.]+)[- ]+([A-Za-z0-9\-]+)\s\[([0-9]{2}/[A-Za-z]+/[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2} -[0-9]{4})\] "([A-Z]+ [A-Za-z0-9/\- \.+]+)"'
results = re.findall(pattern, log_content)
for match in results:
    print(f"IP: {match[0]}, 用户名: {match[1]}, 时间戳: {match[2]}, 请求: {match[3]}")

运行后就能正确提取出每行的IP、用户名、时间戳和请求内容。

内容的提问来源于stack exchange,提问作者herpderp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 00:15:01