通配符点星忽略分隔符

时间:2012-05-03 02:04:35

标签: regex pattern-matching wildcard splunk

我正在尝试编写一个splunk查询,它基本上在分隔符“,”之间提取字段,并将值放在变量中。

我想在两个逗号之间提取所有内容。

,extract this@#$,
,extract this-=@#$, etc 

现在,没有选项可以不提供任何正则表达式,只需在, ,之间获取所有内容。

我认为最近的是,.*, ..然而.*会变得贪婪并与其他所有东西相匹配。

是否有正则表达式可用于在遇到,后停止通配符匹配?

我试过

.*$,
.*,

哪个不起作用。

2 个答案:

答案 0 :(得分:1)

不确定splunk,但在大多数语言中,您可以尝试

/\,([^,]*)\,/

- 匹配所有不是逗号的字符。提取将在\ 1。不确定你是否需要在逗号前面的转义。

答案 1 :(得分:1)

在您的splunk搜索查询中使用以下正则表达式,它会将所需的文件提取为“FIELDNAME”

| rex "(?i)\,(?P<FIELDNAME>[^ ][a-z0-9#-@$ ]+)\,\s"

考虑到“,”(字段之后)有空格因此我添加了“\ s”,没有“\ s”它也可以工作。