代码之家  ›  专栏  ›  技术社区  ›  Jwan622

Regex。我想要所有东西,除了一个特定的模式

  •  0
  • Jwan622  · 技术社区  · 2 年前

    我有这样的数据:

    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 。我该如何捕捉?我不想正则表达式与数字匹配。。。我想要除了数字以外的所有内容(我想要这个,这样我就可以在文本编辑器中删除除了数字之外的所有内容)。

    此regex不够好: (^|\[)(?!36;1m)[^\[]* :

    1 回复  |  直到 2 年前
        1
  •  0
  •   The fourth bird    2 年前

    它取决于支持的regex风格,但匹配除之间的数字之外的所有字符 [36;1m [0m

    (?<=\[36;1m)\d+(?=\[0m)(*SKIP)(*F)|.
    

    Regex demo

    或者使用捕获组1在替换中使用该组,并匹配任何其他字符:

    \[36;1m(\d+)\[0m|.
    

    Regex demo

        2
  •  -1
  •   Robo Robok    2 年前

    你不是把这件事搞得太复杂了吗?听起来这就足够了:

    \[36;1m(\d+)\[0m