我是一个非常简单的正则表达式:
A route named '[a-zA-Z]+' is already in the route collection
我已经在Debuggex上对其进行了测试,它可以在PCRE
下运行:
但是当我提供此查询时,它不会在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中发挥作用吗?
答案 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'(?[\'] +)'是”|搜索路线= *
因此,此搜索的作用是查找日志并提取路由的值(如果可用)。以下管道仅过滤返回提取的路径值的日志。
只要没有名称的一部分,您就可以将任何语法作为路径名称的一部分。
请告诉我这是否适合您。