Ich habe eine lange Liste von Namespaces aus einer Graphite-Instanz und versuche, einige Validierung auszuführen und die Namespaces auszufiltern, die nicht im richtigen Format eingegeben wurden.Benötigen Sie eine kleine Regex-Hilfe in Python
Ich kann in Ordnung mit Regex in der Regel tun, aber dieser eine tut mir weh und hoffte, jemand könnte helfen.
Es gibt einige grundlegende Validierung, die getan werden muss, und ich habe so weit gekommen:
^(stats\.gauges\..*\.(?:dur|hop|scz|led|bgi|shi|crk|sas)\.(?:p|s|q|u|d|x)\.)
Ziel auf den, die im Anschluss an den standardisierten stats.gaugues.*.(exact OR match).(exact OR match).
Dies funktioniert ok zu filtern und Spiel ist für so etwas wie:
stats.gauges.gitswarm.dur.p.durgitswarm1.service.repos.eeps-merge_demo.users
Aber leider trat jemand etwas wie:
stats.gauges.gitswarm.dur.p.durgitswarm1.dur.p.service.repos.eeps-merge_demo.users
So passen diese vollständig zum zweiten überspringen möglichen Fehler auf genaue Übereinstimmungen wie stats.gauges.gitswarm.durham.p.durgitswarm1.dur.p.service.repos.eeps-merge_demo.users
; was ich nicht will.
Ich fühle mich wie das ist ziemlich einfach, aber kann es nicht scheinen, es bis jetzt zu begreifen.
Jede Hilfe würde sehr geschätzt werden.
Vielen Dank!
Warum also ist 'stats.gauges.gitswarm.durham.p.durgitswarm1.dur.p.service.repos.eeps-merge_demo.users' nicht nach den standardisierten' Statistiken .gaugues. *. (genaues OR-Match). (genaues OR-Match). In diesem Fall stimmt '*' mit 'gitswarm.durham.p.durgitswarm1' überein. Das Problem liegt in Ihrer Definition von '*'. –
Es muss fehlschlagen, weil 1) dur der gültige Wert ist, nicht Durham und 2) dur.p. sollte nicht an dem Ort sein, an dem es gerade mit dem ungültigen Wert ist. Ich stimme zu, es ist mit der Definition von *, denke ich, dass ist, was ich Probleme habe, in Regex Form. – NoctemX