Grafana中如何编写正则实现变量间的大小写不敏感过滤?
解决Grafana变量正则大小写不敏感过滤的方法
因为Grafana不支持正则的(?i)大小写不敏感标志,我们可以通过将$region变量中的每个字母转换为大小写可选的字符组来实现匹配,具体操作如下:
在数据源变量的「正则表达式」过滤框中,使用以下表达式:
T2-${region:replace(/([a-z])/g, '[$&${&.toUpperCase()}]'):replace(/([A-Z])/g, '[$&${&.toLowerCase()}]')}原理说明:
- 第一个
replace函数:将$region中的所有小写字母(如r)替换为包含大小写的字符组(如[Rr])。 - 第二个
replace函数:将$region中的所有大写字母(如果存在)替换为包含大小写的字符组(如[Rr])。 - 最终生成的正则会自动适配数据源中的大小写差异:
- 当
$region为r1时,正则变为T2-[Rr]1,可匹配数据源中的T2-R1; - 当
$region为nyc-1时,正则变为T2-[Nn][Yy][Cc]-1,可匹配数据源中的T2-nyc-1。
- 当
- 第一个
简化版本(若
$region仅含小写字母):
如果确定$region的值全为小写,可省略第二个replace,直接使用:T2-${region:replace(/([a-z])/g, '[$&${&.toUpperCase()}]')}
内容的提问来源于stack exchange,提问作者Raghav Ravishankar
相关产品推荐
相关产品推荐

