-3

我想编写一个正则表达式来从 splunk 中的字符串末尾提取第 n 个字段。请让我知道如何进行。

4

1 回答 1

-1

代码

请参阅此处使用的正则表达式

(\S+)(?:\s+\S+){4}\s*$

或者,您也可以使用以下内容:

请参阅此处使用的正则表达式

\S+(?=(?:\s+\S+){4}\s*$)

解释

两种方法都使用相同的逻辑。唯一的区别是第一种方法捕获字符串末尾的第 5 个元素并匹配字符串的其余部分,而第二种方法匹配字符串末尾的第 5 个元素并确保第 5 个元素后面的内容与模式匹配。

  • \S+匹配任何非空白字符一次或多次
  • (?:\s+\S+){4}正确匹配以下 4 次
    • \s+匹配任何空白字符一次或多次
    • \S+匹配任何非空白字符一次或多次
  • \s*匹配任何空白字符任意次数
  • $在行尾断言位置

进一步说明:

  • (\S+)将任何非空白字符一次或多次捕获到捕获组中
  • (?= ... )其中...代表某种模式(在我们的例子中(?:\s+\S+){4}\s*$)。这是一个积极的前瞻,确保后面的匹配不消耗任何字符。
于 2018-01-09T15:37:02.173 回答