Ich schreibe eine Lösung für ein Problem, in dem ich die Befehlszeilenargumente analysieren muss. Vor dem Parsen habe ich zuerst die Validierung durchgeführt.Python3 regex Problem
Zulässige Argumente sind:
someKey=(apps IN (app1))
someKey=(apps IN (app1,app2))
someKey=(apps IN (app1,app2, app3))
Aber wenn Komma am Ende der letzten App-Name ist, dann möchte ich die Validierung fehlschlägt.
someKey=(apps IN (app1,app2,))
Ich schrieb die Regex wie folgt.
\(apps\sIN\s\((app\d|,)+\)\)
Aber es nimmt sowohl gültige als auch ungültige Fälle. Ich habe einige Referenzen in Bezug auf Look-Ahead und Look-Up Lookup, aber es wurde nicht richtig implementiert. Kann jemand von euch mir helfen zu verstehen, was die Lösung für dieses Problem ist?
Ich empfehle veeeeeeeeeeeeeryly stark, um solchen Code nicht selbst zu schreiben, aber zu verwenden https://docs.python.org/3/library/argparse.html – mnagel
Nur ein FYI, dass die Gruppe '(app \ d |,)' (oder der in der Antwort von Keith Hall) wird nur das letzte Vorkommen dieser Gruppe erfassen, es werden keine separaten Gruppen für getrennte Einträge erstellt. –
@mnagel arparse ist in Ordnung, um das 'somekey' Attribut korrekt zu lesen. Aber ob wir Validierung des "Wertes" mit dem Argeparse-Modul selbst durchführen können? – appu