Ich verwende re-Modul Python, und ich möchte eine von zwei möglichen Elementen suchen und zu erfassen, aber ich kann nicht herausfinden, wie die Gruppierung und nicht Capturing erhalten Gruppierung Recht auf Arbeit:Python Regex Gruppierung
Können sagen, mein Muster:
(?:(test)55)|(apple)
Also im Grunde mag ich ‚Test‘ oder ‚Apfel‘ erfassen, sondern nur erfassen ‚Test‘, wenn er hier gefolgt wird von 55.
Das Problem ist, dass ich am Ende mit 2 Capture-Gruppen, so dass ich entweder mit (keine, 'Apple') oder ("Test", Keine).
Ich weiß, dass ich kann einfach nachbearbeiten es:
next(item for item in groups() if item is not None)
aber ich habe mich gefragt, ob es einen Weg zur Phrase ist es in der Regex, die es funktionieren würde (ich will nur lernen regex besser).
Danke.
Sie zwei bekommen, weil '(Test)' eine Erfassungsgruppe ist, auch. – alexis
Ein Match-Objekt hat ein Attribut 'lastindex', das den Index der letzten erfassenden Gruppe zurückgibt, die mit etwas übereinstimmte. Wenn sich die Capture-Gruppen gegenseitig ausschließen, wie in Ihrem Beispiel, könnte Ihre Post-Verarbeitung zu 'matchobject.group (matchobject.lastindex)' vereinfacht werden – RootTwo