Erfassung regulärer Ausdrücke mit mehreren Übereinstimmungen

8

Schnelle Frage zum regulären Ausdruck.
Ich versuche, mehrere Instanzen einer Erfassungsgruppe in Python zu erfassen (glaube nicht, dass es pythonspezifisch ist), aber die nachfolgenden Aufzeichnungen scheinen die vorherige zu überschreiben.

In diesem stark vereinfachten Beispiel versuche ich im Wesentlichen, eine Zeichenfolge zu teilen:

%Vor% Ich möchte ('a', 'b', 'c', 'd', 'e', 'f') erhalten, aber weil Regex nachfolgende Captures überschreibt, erhalte ich ('f',)

Soll sich Regex so verhalten? Gibt es eine Möglichkeit, das zu tun, was ich will, ohne die Syntax sechsmal wiederholen zu müssen?

Vielen Dank im Voraus!
Andrew

    
Andrew Klofas 08.04.2011, 16:55
quelle

4 Antworten

13

Sie können dafür keine Gruppen benutzen, fürchte ich. Jede Gruppe kann nur einmal übereinstimmen, ich glaube, dass alle Regexes auf diese Weise funktionieren. Eine mögliche Lösung ist, findall () oder ähnliches zu verwenden.

%Vor%     
sverre 08.04.2011, 17:10
quelle
4

Das Modul regex kann dies tun.

%Vor%

Funktioniert auch mit benannten Captures:

%Vor%

Es wird erwartet, dass das Regex-Modul das "re" -Modul ersetzt - es ist ein Drop-in-Ersatz, der identisch funktioniert, außer dass es viele weitere Funktionen und Fähigkeiten hat.

    
rjh 15.06.2015 15:10
quelle
2

Um alle Übereinstimmungen in einer gegebenen Zeichenfolge zu finden, verwenden Sie re.findall (regex, string) . Wenn Sie hier jeden Buchstaben erhalten möchten, sollte Ihre Regex entweder '(\w){1}' oder nur '(\w)' sein.

Siehe:

%Vor%     
pajton 08.04.2011 17:10
quelle
1

Ich nehme an, dass Ihre Frage eine vereinfachte Darstellung Ihres Bedarfs ist.

Dann nehme ich ein Beispiel etwas komplexer:

%Vor%

Ergebnis

%Vor%     
eyquem 08.04.2011 19:12
quelle

Tags und Links