RegEx mit mehreren Gruppen?
Ich bin immer verwirrt, Rückkehr mehrere Gruppen in Python. Meine RegEx ist:
lun_q = 'Lun:\s*(\d+\s?)*'
Und mein string ist
s = '''Lun: 0 1 2 3 295 296 297 298'''`
Habe ich wieder ein passendes Objekt, und dann wollen die zu schauen, die Gruppen, aber alle es zeigt, dass es die Letzte Zahl (258):
r.groups()
(u'298',)
Warum ist es nicht zurückgeben Gruppen von 0,1,2,3,4
etc.?
Ich denke, was man direkt Lesen ist Aufnahme eine Wiederholte Gruppe oder entlang der Linien 'Zugriff auf jedes Spiel in einer quantifizierten / wiederholte Abscheidung Gruppe'. siehe eine ähnliche Antwort für javascript. weiß es nicht sicher, aber Sie scheinen nicht unterstützt python ' s regex Geschmack. siehe Verwandte python enhancement request und Fragen
InformationsquelleAutor joslinm | 2011-02-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre regex enthält nur ein einziges paar von Klammern (eine capturing-group), so erhalten Sie nur eine Gruppe in Ihr Spiel. Wenn Sie eine Wiederholung Betreiber auf eine capturing group (
+
oder*
), die Gruppe wird "überschrieben" jedes mal, wenn die Gruppe wiederholt wird, was bedeutet, dass nur das Letzte match wird eingespielt.In Ihrem Beispiel hier, sind Sie wahrscheinlich besser dran mit
.split()
in Kombination mit einem regex:re.match()
vsre.split()
ist eine nicht-triviale EntscheidungInformationsquelleAutor Ben Blank
Manchmal einfacher ohne regex.
InformationsquelleAutor kurumi
Ein weiterer Ansatz wäre die Verwendung der regex-Sie müssen die Daten überprüfen, und verwenden Sie dann eine spezifischere regex, dass die Ziele jedes Element, das Sie extrahieren möchten mit einem match-iterator.
InformationsquelleAutor pokstad
Wenn Sie sich für eine Ausgang wie 0,1,2,3,4, usw.
Die Antwort ist sehr einfach, siehe code unten.
print re.findall('\d',s)
InformationsquelleAutor Rakesh kumar