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

Splunk正则匹配Spring Batch作业运行时长问题求助

解决Spring Batch作业运行时长正则匹配问题

适配三种格式的正则表达式(无数字后缀捕获组)

直接使用以下正则即可同时匹配709ms、59s709ms、1m59s709ms三种格式,且捕获组无需添加数字后缀:

(?:(?<minutes>\d+)m)?(?:(?<seconds>\d+)s)?(?:(?<milliseconds>\d+)ms)?

正则说明

  • (?:...) 是非捕获组,仅用于逻辑分组,不会生成额外捕获结果
  • (?<minutes>\d+)m?:匹配可选的分钟部分,捕获值存入minutes组
  • (?<seconds>\d+)s?:匹配可选的秒部分,捕获值存入seconds组
  • (?<milliseconds>\d+)ms?:匹配毫秒部分,捕获值存入milliseconds组

无论哪种格式,对应存在的时间单位都会被正确捕获,不存在的组会返回空值。

Splunk中转换为总毫秒数(用于统计)

要制作日均运行时长面板,需要将捕获的各单位转换为总毫秒数,可在Splunk查询中添加eval命令:

| eval total_ms = coalesce(minutes, 0)*60000 + coalesce(seconds, 0)*1000 + coalesce(milliseconds, 0)
  • coalesce函数用于将空值替换为0,避免计算出错
  • 计算完成后,即可用stats avg(total_ms) by date_mday等命令生成日均运行时长统计面板

原正则失效原因

你之前的正则使用|分支匹配,导致多单位格式(如1m59s709ms)会被第一个分支(?<jobRunTimeMs1>\d*)ms?优先匹配毫秒部分,忽略前面的分钟、秒数,因此失效。新正则通过顺序匹配可选单位的方式,避免了分支优先级问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:27:13