我有一长串来自 Graphite 实例的命名空间,我正在尝试运行一些验证并过滤掉未使用正确格式输入的命名空间。
我通常可以使用正则表达式,但这个正则表达式伤害了我,希望有人能提供帮助。
有一些基本的验证需要完成,我已经走到这一步了:
^(stats\.gauges\..*\.(?:dur|hop|scz|led|bgi|shi|crk|sas)\.(?:p|s|q|u|d|x)\.)
目标是根据标准化的stats.gaugues.*.(exact OR match).(exact OR match).
这适用于类似的东西:
stats.gauges.gitswarm.dur.p.durgitswarm1.service.repos.eeps-merge_demo.users
但不幸的是有人输入了一些像:
stats.gauges.gitswarm.dur.p.durgitswarm1.dur.p.service.repos.eeps-merge_demo.users
所以这些一直匹配到第二个 dur.p. 跳过完全匹配的可能错误,例如 stats.gauges.gitswarm.durham.p.durgitswarm1.dur.p。 service.repos.eeps-merge_demo.users;我不想要。
我觉得这是一件很简单的事情,但到目前为止似乎还没有掌握。
非常感谢任何帮助。
谢谢!
请您参考如下方法:
这应该有效。基本上你需要让你的 .* 非贪婪 ^(stats\.gauges\..*?\.(?:dur|hop|scz|led|bgi|shi|crk|sas)\.(?:p|s|q|u|d| x)\.)
