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

正则表达式匹配失败,求助提取日志表格数据的正确正则

日志数据提取正则表达式解决方案

问题分析

你之前的正则表达式逻辑混乱,导致匹配失败,核心问题包括:

  • 匹配顺序错误:Period在数据行开头,却被放在正则末尾,无法命中目标行
  • 冗余写法:[\s+\S+]等价于任意字符,会错误匹配无关内容
  • 分组范围错误:(?<time>...)包含过多无关数据,无法正确捕获目标字段

正确正则表达式

单行匹配(针对单条数据)

匹配Period或Global行的正则:

^(\w+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+\.\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)$

批量匹配(跳过表头)

使用多行模式,自动跳过第一行表头:

^(?!Type)(\w+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+\.\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)$
  • (?!Type)是负向前瞻,确保不匹配表头行
  • 需开启多行模式(如Python中的re.MULTILINE),让^匹配每行开头

捕获组对应字段

每个捕获组严格对应表头的字段:

  • 组1:Type(Period/Global)
  • 组2:Time(s)
  • 组3:Ops
  • 组4:TPS(ops/s)
  • 组5:Net(M/s)
  • 组6:Get_miss
  • 组7:Min(us)
  • 组8:Max(us)
  • 组9:Avg(us)
  • 组10:Std_dev
  • 组11:Geo_dist

代码示例(Python)

用正则提取数据并生成结构化字典,方便转为表格:

import re

log_content = """Type     Time(s)  Ops          TPS(ops/s)   Net(M/s)   Get_miss   Min(us)  Max(us)    Avg(us)    Std_dev    Geo_dist
Period   5        145443       29088        22.4       37006      352      116302     6600       7692.04    4003.72
Global   10       281537       28153        23.2       41800      281      120023     6797       7564.64    4212.93"""

# 编译正则,开启多行模式
pattern = re.compile(r'^(?!Type)(\w+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+\.\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)$', re.MULTILINE)
matches = pattern.finditer(log_content)

# 表头列表
headers = ["Type", "Time(s)", "Ops", "TPS(ops/s)", "Net(M/s)", "Get_miss", "Min(us)", "Max(us)", "Avg(us)", "Std_dev", "Geo_dist"]

# 提取并打印结构化数据
for match in matches:
    row_data = dict(zip(headers, match.groups()))
    print(row_data)

运行后输出:

{'Type': 'Period', 'Time(s)': '5', 'Ops': '145443', 'TPS(ops/s)': '29088', 'Net(M/s)': '22.4', 'Get_miss': '37006', 'Min(us)': '352', 'Max(us)': '116302', 'Avg(us)': '6600', 'Std_dev': '7692.04', 'Geo_dist': '4003.72'}
{'Type': 'Global', 'Time(s)': '10', 'Ops': '281537', 'TPS(ops/s)': '28153', 'Net(M/s)': '23.2', 'Get_miss': '41800', 'Min(us)': '281', 'Max(us)': '120023', 'Avg(us)': '6797', 'Std_dev': '7564.64', 'Geo_dist': '4212.93'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:45:53