Regex 重复格罗克模式

Regex 重复格罗克模式,regex,logstash,logstash-grok,Regex,Logstash,Logstash Grok,我正在尝试将以下web服务器日志解析为某些字段 /BluePortServlets/LoadService/servicepath/test1/test2/test3?serviceId=4403&categoryId=1&t=0.13146932582447225 我的模式如下 /%{WORD:PATH}/%{WORD:PATH}/%{WORD:PATH} 我的问题是,由于路径的大小和级别不是固定的,所以我希望在模式的顶部有类似于Kleene Star的格式。但不知怎的,Grok调试器没有编译

我正在尝试将以下web服务器日志解析为某些字段

/BluePortServlets/LoadService/servicepath/test1/test2/test3?serviceId=4403&categoryId=1&t=0.13146932582447225

我的模式如下

/%{WORD:PATH}/%{WORD:PATH}/%{WORD:PATH}

我的问题是,由于路径的大小和级别不是固定的,所以我希望在模式的顶部有类似于Kleene Star的格式。但不知怎的,Grok调试器没有编译它。像这样,我将能够解析大小未知的路径

像这样的

[%{WORD:PATH}/]*

预期的结果是

BluePortServlets
加载服务
服务路径
测试1
..
测试


提前谢谢你

就像
%{WORD:HTTP}/%{WORD:PATH}(?:/%{WORD:PATH})*
?是的,伙计,我正在尝试检查你发送给我的内容,但是在BluePortServlets之后它给我空值。但它肯定是这样的,我得到了上面的建议。您希望得到什么样的结果?您将无法以这种方式保留所有捕获内容,您将只保留最后捕获的文本。这就是Oniguruma/PCRE和大多数其他正则表达式的工作方式。您应该事先知道URL中有多少子部分,和/或使用可选组。请尝试
%{WORD:HTTP}/(?[^/?])(?:/(?[^/?]))(?:/(?[^/?]))(?:/(?[^/?]))(?:/(?[^/?]))(?:/(?[^/?])?
。但这不支持查询字符串,不知道您是否需要它。我需要的文本多于上次捕获的文本,这是我的问题。我想知道为什么克莱恩明星不能在那里做这项工作。因为正则表达式的关键是定义一个模式,而不管其大小。