我想编写一个正则表达式来从 splunk 中的字符串末尾提取第 n 个字段。请让我知道如何进行。
问问题
526 次
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 回答