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

Python re正则匹配日志时无法匹配字符串开头行的问题求助

匹配失败原因
  • 语法笔误:你提供的调整后正则代码末尾多了多余逗号,会导致query被赋值为包含正则对象的元组,而非正则对象本身,调用匹配方法时会无法正常执行。
  • 匹配规则冲突:同时开启re.DOTALL和re.MULTILINE时,开头的^(.*?)会从整个文本的首个行首开始匹配,直到命中第一个Error in mycode,如果大段文本中目标日志前还有其他包含该字符串的内容,会出现匹配偏差,甚至匹配失败。
  • 末尾匹配限制过严:正则末尾的(.*?)\n要求报错信息的最后一行必须带换行符,如果这段报错是文本的最后一段、末尾没有换行的话,会完全匹配失败。
修复后的正则
query = re.compile(
    rf"^.*?{re.escape('Error in mycode')}.*?\nTraceback.*?{re.escape('botocore.exceptions.ClientError: An error occurred (ExpiredToken) when calling the PutObject operation: The provided token has expired.')}\s*$",
    flags=re.DOTALL | re.MULTILINE
)
修改说明
  • 移除代码末尾的多余逗号,保证query为合法正则对象
  • 明确匹配Error in mycode所在行的末尾换行后再匹配Traceback内容,避免跨行匹配到其他不相关的Traceback
  • 末尾替换为\s*$匹配,允许末尾存在任意空白字符(包括无换行的文本末尾场景)
  • 可根据实际需求保留需要的捕获分组,不需要提取的场景下可以省略不必要的括号

额外检查项:你补充说明里生效的正则用的是re.escape('Error in S3'),和你要匹配的Error in mycode不一致,确认实际代码中是否写对了目标匹配字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:18:05