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

如何用正则匹配除[36;1m与[0m间数字外的所有内容?

正则表达式提取日志中指定标记间的数字

问题描述

给定日志数据:

Key:         [36;1m2848761038914979188[0m
Partition:   0
Offset:      33443
Timestamp:   2022-09-27 15:57:57.693 -0400 EDT
Key:         [36;1m2039734487331374643[0m
Partition:   0
Offset:      33444
Timestamp:   2022-09-27 17:26:31.477 -0400 EDT
Key:         [36;1m2868926969028805951[0m
Partition:   0
Offset:      33445
Timestamp:   2022-09-27 17:41:31.473 -0400 EDT
Key:         [36;1m2936812472746641386[0m
Partition:   0
Offset:      33446
Timestamp:   2022-09-27 18:02:23.803 -0400 EDT

需要删除除[36;1m和[0m之间数字外的所有内容,仅保留目标数字。原正则(^|\[)(?!36;1m)[^\[]*无法满足需求,求正确写法。

解决方案

方法一:两步替换(直观易操作)

适用于大多数文本编辑器(如VS Code、Notepad++):

  1. 提取目标数字

    • 查找正则:.*\[36;1m(\d+)\[0m.*
    • 替换为:$1
      此操作会将包含目标数字的行替换为对应的数字,其他行保持不变。
  2. 清理非数字行

    • 查找正则:^\D+$
    • 替换为空字符串
      此操作删除所有不包含数字的行,最终仅保留目标数字。

方法二:一步正则替换(高效)

开启编辑器的多行模式后,使用以下正则完成一次性替换:

  • 查找正则:^(?!Key:).*$\n?|Key:\s*\[36;1m|\[0m$
  • 替换为空字符串

正则说明:

  • ^(?!Key:).*$\n?:匹配并删除所有不以Key:开头的行(含行尾换行符)
  • Key:\s*\[36;1m:匹配并删除Key:到[36;1m的前缀内容
  • \[0m$:匹配并删除行尾的[0m标记

最终结果

替换完成后,得到的内容为:

2848761038914979188
2039734487331374643
2868926969028805951
2936812472746641386

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:10:49