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

正则匹配含空格前缀可选段日志 捕获值带多余< >及空格问题求助

问题原因

当前正则的可选字段捕获组把前置空格、前后包裹的<、>都包含在了捕获括号范围内,所以提取出的IP、账号字段会携带这些多余字符。

修正后正则
^([\w,:\s.]+)\s-\s<([A-Z]+)>\s<([\s\w-]+)>\s<([\w-]+)>(?:\s<([\d.]+)>)?(?:\s<(\d+)>)?\s<([\w.]+)>\s-\s<(.+?(?=>$|$))

核心调整点:

  • 把两个可选字段的外层包裹结构(前置空格、<、>)移到(?:...)非捕获组中,非捕获组只负责判断整段可选字段是否存在,不会返回捕获内容
  • 在非捕获组内部单独设置捕获括号,仅提取IP、账号的纯内容,不会带入多余符号
  • 保留原正则的其他匹配逻辑,兼容可选字段缺失的场景
匹配效果验证

带IP、账号的完整日志

对应样例:

Jul 09, 2022 03:05:12.570 AM - <DEBUG> <Default Executor-thread-26> <logging-poc> <100.99.88.1> <123456> <myco> - <Inside getDebugLog()>

捕获分组对应结果:

  • 分组1(logdatetime):Jul 09, 2022 03:05:12.570 AM
  • 分组2(severity):DEBUG
  • 分组3(thread):Default Executor-thread-26
  • 分组4(application):logging-poc
  • 分组5(ip):100.99.88.1
  • 分组6(account):123456
  • 分组7(module):myco
  • 分组8(message):Inside getDebugLog()

缺失IP、账号的日志

对应样例:

Jul 09, 2022 03:05:12.570 AM - <DEBUG> <Default Executor-thread-26> <logging-poc> <myco> - <Inside getDebugLog()>

捕获分组对应结果:

  • 分组1(logdatetime):Jul 09, 2022 03:05:12.570 AM
  • 分组2(severity):DEBUG
  • 分组3(thread):Default Executor-thread-26
  • 分组4(application):logging-poc
  • 分组5(ip):无匹配(空值)
  • 分组6(account):无匹配(空值)
  • 分组7(module):myco
  • 分组8(message):Inside getDebugLog()
补充说明

当前正则默认可选字段顺序为「IP段在前、账号段在后」,如果实际业务日志存在仅缺失IP、保留账号的乱序场景,需要额外调整可选组的匹配逻辑,当前写法已覆盖给出的两类样例场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:24:28