从字符串末尾获取第N个字段

时间:2018-01-09 14:31:23

标签: regex splunk-query

我想写一个正则表达式从splunk中的字符串末尾拉出第n个字段。请让我知道如何继续。

1 个答案:

答案 0 :(得分:-1)

代码

See regex in use here

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

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

See regex in use here

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

说明

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

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

进一步解释:

  • (\S+)将任何非空格字符捕获一次或多次到捕获组中
  • (?= ... )其中...代表某种模式(在我们的案例中为(?:\s+\S+){4}\s*$)。这是一个积极的前瞻,可以确保在没有消费任何字符的情况下匹配的内容。