【问题标题】:How to exclude the last word after the regex match?如何在正则表达式匹配后排除最后一个单词?
【发布时间】:2021-10-08 15:30:34
【问题描述】:

这不是 python 或 java 编程的一部分,而是 grok 模式的一部分。我有以下格式的字段传入数据

  1. online market failure ACC20ZM::Test::BNC099
  2. online market failure;Test;BNC099

我需要提取数据直到第一次出现特殊字符 ;: 不包括字符本身。 预期输出为online market failure 我能够得到这是使用^([^:|;])+ 的第二种格式,但第一种格式将按预期返回online market failure ACC20ZM,我试图在其中排除ACC20ZM。

注意:该字段中的消息不是固定的,它会不断变化(包括我试图排除的单词),因此没有固定数量的单词。此外,它是以上述格式获取数据的单个字段(第一种类型或第二种类型,但不能同时使用两种类型)。我正在尝试编写一个应该能够处理这两种格式的正则表达式模式。我特别寻求帮助以使用提到的正则表达式模式排除匹配后的单词。

【问题讨论】:

    标签: regex regex-lookarounds regex-group regex-negation grok


    【解决方案1】:

    你可以试试这个;

    ^([^:|;])+(?=(\s\w*:|;))
    

    【讨论】:

    • 我试过这个,它给出了ACC20ZM::Test::BNC099,但我想排除这个,即我需要输出为online market failure
    • 你能从这里检查吗? regex101.com/r/W7vbAv/1
    • 谢谢。我在 grok 构造函数中查看赛后结果并感到困惑。这按预期工作。
    猜你喜欢
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多