Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex grok模式在调试器中工作,但在logstash中不工作_Regex_Logstash_Elastic Stack_Logstash Grok - Fatal编程技术网

Regex grok模式在调试器中工作,但在logstash中不工作

Regex grok模式在调试器中工作,但在logstash中不工作,regex,logstash,elastic-stack,logstash-grok,Regex,Logstash,Elastic Stack,Logstash Grok,我有一个grok模式,但我不能让它在logstash中工作。尤其是正则表达式失败了。基本上,我想匹配“source”字段中的字符串 我要筛选的“源”字段: /var/log/containers/my-container-190662183-f6wlm_logging_logstash-testing-10897cc1fe13d419f73b8c7929377a1f98366a648e85e71163c4fdaac278e256.log 格罗克过滤器: filter { grok {

我有一个grok模式,但我不能让它在logstash中工作。尤其是正则表达式失败了。基本上,我想匹配“source”字段中的字符串

我要筛选的“源”字段:

/var/log/containers/my-container-190662183-f6wlm_logging_logstash-testing-10897cc1fe13d419f73b8c7929377a1f98366a648e85e71163c4fdaac278e256.log
格罗克过滤器:

filter {
  grok {
    match => { "path" => "%{GREEDYDATA}/%{CONTAINERAPP:container}*" }
    patterns_dir => ["/root/patterns"]
  }
}
模式:

CONTAINERAPP .+(?=-\d)
注意,这里我并没有试图解析日志行,只是为匹配的模式分配一个字段。其他正则表达式生成“container”字段,只是不完全是我需要的字符串


我的猜测是Oniguruma语法不支持这个特定的正则表达式,但是如果是这样,为什么grok调试器会这样说?

。+(?=-\d)你说:一个或多个后面有一个数字或轮胎的东西,可能需要加一个加号:。+(?=-\d)+@volkinc:不需要量化不使用文本的零宽度断言。这个我认为问题在于如何定义字段,请尝试
“%{GREEDYDATA:path}/%{CONTAINERAPP:container}”