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

如何修改正则表达式提取日志时忽略时间戳后的无关文本

问题解决:提取日志中的有效时间戳、run、user和JSON内容

问题场景

日志文件your_file.txt结构如下:

A whole bunch of irrelevant text
2022-12-15 12:45:06 garbage, run: 1, user: james json:
[{"value": 30, "error": 8}]

原有正则提取代码会将时间戳后的冗余内容garbage一并捕获,输出结果为:

[('2022-12-15 12:45:06 garbage', '1', 'james', '[{"value": 30, "error": 8}]')]

需要修改正则表达式,让时间戳仅保留2022-12-15 12:45:06这类有效部分。

修改后的代码与正则

核心思路是精准匹配标准日期时间格式,跳过时间戳后到逗号前的冗余内容,不将其纳入捕获组:

import re

pat = re.compile(
    r'(?ms)^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})[^,]+,\s*run:\s*(\S+),\s*user:\s*(.*?)\s*json:\n(.*?)$'
)

with open('your_file.txt', 'r') as f_in:
    print(pat.findall(f_in.read()))

关键修改说明

  • (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}):精准匹配YYYY-MM-DD HH:MM:SS格式的时间戳,作为第一个捕获组,仅提取有效时间内容。
  • [^,]+:匹配时间戳后到逗号前的所有冗余字符(如 garbage),这部分不放在捕获组内,因此不会被包含在输出结果中。
  • 其余正则逻辑保持不变,确保run编号、用户名和JSON内容的正常提取。

运行后输出结果:

[('2022-12-15 12:45:06', '1', 'james', '[{"value": 30, "error": 8}]')]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:30:36