You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grafana正则匹配数据库名:提取指定分组并排除-cluster后缀

Grafana数据库名匹配正则解决方案

针对你需要匹配的两类数据库名格式,这里提供可行的正则表达式方案,并解释之前的问题所在:

问题原因

你之前使用的(\w*-\w*)|(.*)-cluster之所以得到错误结果,是因为正则分支匹配是从左到右优先匹配:当处理production-aa-db3-cluster这类字符串时,左侧的(\w*-\w*)会先匹配到production-aa(两个由-连接的单词),正则就会停止后续匹配,不会触发右侧的(.*)-cluster分支,导致提取结果不符合预期。

可行正则方案

方案一:正向预查优先匹配(推荐)

这个方案逻辑简洁,能直接提取你需要的内容:

^(.*)(?=-cluster$)|^.*$

逻辑说明:

  • 首先尝试匹配所有位于-cluster结尾之前的内容((?=-cluster$)是正向预查,仅做条件判断,不会将-cluster包含在匹配结果中)
  • 如果字符串不以-cluster结尾(即第一类<name>-<environment>格式),则直接匹配整个字符串

方案二:调整分支匹配顺序

通过将-cluster相关的匹配分支放在前面,避免被短匹配抢占:

^(.*)-cluster$|^(\w+(-\w+)+)$

逻辑说明:

  • 先匹配以-cluster结尾的字符串,捕获-cluster之前的全部内容
  • 若不满足上述条件,则匹配至少两个由-连接的单词组成的字符串(对应第一类格式)

验证结果

使用上述任意正则,都能得到你预期的结果:

  • db1-producion → 完整匹配
  • db2-production → 完整匹配
  • production-aa-db3-cluster → 提取production-aa-db3
  • production-aa-db4-cluster → 提取production-aa-db4

内容的提问来源于stack exchange,提问作者Ricardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:00:27