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

正则提取日志时间戳与接收速率时分组匹配范围溢出如何解决

问题分析

问题根源是正则中.*的贪婪匹配特性:默认情况下.*会尽可能多匹配字符,而你后面跟的\s*、[0-9]*都是允许匹配0个字符的规则,正则引擎会优先让.*多吃内容,只要剩余部分能满足后面的匹配规则即可,因此把时间戳之后的空格和数字也吞进了第一个分组。

解决方案

有两种常用的修改方式,都可以适配时间戳后空格数量不固定的场景:

方案1:改用非贪婪匹配(最简单的修改方式)

把第一个分组的贪婪匹配改为非贪婪匹配,同时把后面的\s*改为\s+(时间戳和后面的数字之间至少存在1个空格,用+避免匹配0个导致贪婪逻辑失效):

^(.*?)\s+[0-9]+\s+\([0-9]+\)\s+Receive\s+rate:\s+([0-9]+)

这里的.*?是非贪婪匹配,会尽可能少匹配内容,直到遇到第一个满足\s+[0-9]+(一个或多个空格加数字)的位置就停止,正好把时间戳完整留在第一个分组。

方案2:精准匹配时间戳格式(稳定性更高)

如果你的日志时间戳格式固定(月/日/年 时:分:秒 AM/PM),可以直接限定第一个分组的匹配规则,完全避免贪婪问题,匹配精度更高:

^(\d{1,2}/\d{1,2}/\d{4}\s+\d{1,2}:\d{1,2}:\d{1,2}\s+[AP]M)\s+[0-9]+\s+\([0-9]+\)\s+Receive\s+rate:\s+([0-9]+)
测试效果

两种方案匹配你给出的样例日志,都可以得到预期分组结果:

  • 分组1:9/14/2021 6:01:14 PM、9/14/2021 6:01:29 PM
  • 分组2:39338、215363

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:57:03