首页 > 解决方案 > 如何在正则表达式匹配后排除最后一个单词?

问题描述

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

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

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

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

标签: regexregex-lookaroundsregex-groupregex-negationgrok

解决方案


你可以试试这个;

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

推荐阅读