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

如何修改Ruby正则表达式以匹配两种不同格式的日志内容

适配两类日志格式的Ruby正则表达式修改方案

问题背景

现有两类日志格式:

  • 格式1:2022-09-23 18:40:45.846 I/getUsers: fetching data
  • 格式2:11:54:54.619 INFO loadingUsers:23 - visualising: "Entered to dashboard

当前有一段仅适配格式1的Ruby正则表达式:

^([0-9-]+ [:0-9.]+)\s(?<level>\w+)[\/+](?<log>.*)

该正则对格式1的匹配结果:

level I
message getUsers: fetching data

需要修改正则,使其同时适配格式2,匹配结果需满足:

level INFO
message loadingUsers:23 - visualising: "Entered to dashboard

修改后的正则表达式

^([0-9-]+ [:0-9.]+|[:0-9.]+)\s(?<level>\w+)(?:\/|\s)(?<log>.*)

关键修改说明

  1. 时间格式兼容:将原时间匹配部分([0-9-]+ [:0-9.]+)调整为([0-9-]+ [:0-9.]+|[:0-9.]+),同时支持带日期的完整时间(格式1)和仅时分秒的时间(格式2)。
  2. 分隔符兼容:把原分隔符匹配[\/+]替换为(?:\/|\s),适配格式1中级别与日志内容间的/分隔,以及格式2中的空格分隔。(?:...)为非捕获组,避免生成无用的捕获结果。
  3. 保留命名捕获组:继续使用<level>和<log>命名捕获组,确保输出结果完全符合需求。

匹配验证

  • 对格式1,捕获结果为:level: I,log: getUsers: fetching data
  • 对格式2,捕获结果为:level: INFO,log: loadingUsers:23 - visualising: "Entered to dashboard

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:15:36