Splunk正则表达式查询返回没有结果

时间:2014-07-18 13:59:53

标签: regex splunk

我是一个非常简单的正则表达式:

A route named '[a-zA-Z]+' is already in the route collection

我已经在Debuggex上对其进行了测试,它可以在PCRE下运行:

Regular expression visualization

Debuggex Demo

但是当我提供此查询时,它不会在Splunk中返回任何结果:

| regex _raw="(?=A route named '[a-zA-Z]+' is already in the route collection)"

根据Splunk documentation,我需要将整个表达式分组,以便我这样做。还有什么,当我在Splunk中运行此查询时:

A route named is already in the route collection

它会返回结果,因此数据就在那里。

有人可以告诉我为什么这不会在Splunk中发挥作用吗?

3 个答案:

答案 0 :(得分:0)

你不应该使用这个先行,你只需要一个简单的组:

| regex _raw="(A route named '[a-zA-Z]+' is already in the route collection)"

使用前瞻,你正在寻找......什么都没有。但是你的判决没有任何内容。

答案 1 :(得分:0)

好吧,所以我明白了。使用regex命令进行搜索时,必须先提供某种查询,例如:

* | regex _raw="(A route named '[a-zA-Z]+' is already in the route collection)"

在开头注意*

答案 2 :(得分:0)

Splunk正则表达式命令的全部内容是将某些内容捕获到字段中。你的语法不正确:你没有抓到任何东西。一个先行只是这样做,前瞻。

Splunk正则表达式引用:http://docs.splunk.com/Documentation/Splunk/latest/SearchReference/rex

注意:_raw是默认字段!

在您的Debuggex Demo中,您正试图捕获 HelloWorld

  

名为“HelloWorld”的路线已经在路线集合

您想将 HelloWorld 保存到某个字段中,对吗?

  
    

* | rex“named'(?[\'] +)'是”|搜索路线= *

  

因此,此搜索的作用是查找日志并提取路由的值(如果可用)。以下管道仅过滤返回提取的路径值的日志。

只要没有名称的一部分,您就可以将任何语法作为路径名称的一部分。

请告诉我这是否适合您。