我有一长串来自石墨实例的名称空间,并且正在尝试运行一些验证并滤除未使用正确格式输入的名称空间。
我通常可以用正则表达式做得很好,但是这个正伤害着我,希望有人能帮上忙。
有一些基本的验证需要完成,而我已经走到了这一步:
^(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/