Grafana正则查询:如何提取Jenkins多级路径下各目录与项目名存为变量
固定三层目录的正则方案
你遇到的问题是贪婪匹配导致分段失效,Grafana变量正则通过捕获组提取对应内容,针对固定3层目录+项目名的路径格式,每个变量对应正则如下:
- 提取第一层目录
var1:^([^/]+)/.*$,捕获组1返回内容为dir1 - 提取第二层目录
var2:^[^/]+/([^/]+)/.*$,捕获组1返回内容为dir2 - 提取第三层目录
var3:^[^/]+/[^/]+/([^/]+)/.*$,捕获组1返回内容为dir3 - 提取项目名
projectname:^.*/([^/]+)$,捕获组1返回内容为projectname
如需一次性匹配所有分段,可使用通用全匹配正则^([^/]+)/([^/]+)/([^/]+)/([^/]+)$,4个捕获组按顺序对应dir1、dir2、dir3、projectname。
非固定层数目录适配方案
如果目录层数不固定,仅提取最后一段作为项目名可直接使用^.*/([^/]+)$通用适配。如需提取倒数第N层目录,将正则调整为^.*(?:/[^/]+){N}/([^/]+)/.*$即可,其中N为你需要的倒数层级数。
配置注意事项
Grafana变量的Regex配置项直接填写上述正则即可,平台会自动取第一个捕获组的内容作为变量值。你之前使用的/(.*)//存在两个问题:一是.*为贪婪匹配会一次性吞掉所有字符无法正确分段,二是多余的分隔符不符合路径匹配规则,因此无法正常运行。
内容的提问来源于stack exchange,提问作者pyramid13
相关产品推荐
相关产品推荐

