我有一长串来自石墨实例的名称空间,并且正在尝试运行一些验证并滤除未使用正确格式输入的名称空间。

我通常可以用正则表达式做得很好,但是这个正伤害着我,希望有人能帮上忙。

有一些基本的验证需要完成,而我已经走到了这一步:

^(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)\.)

关于python - 在python中需要一点正则表达式帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40392713/

10-12 23:12