In Python 2.6. Es scheint, dass Markierungen am Ende der Zeichenfolge $
und \Z
nicht mit Gruppenausdrücken kompatibel sind. Fo Beispiel
gibt
zurück %Vor% (so funktioniert $
effektiv nicht). Und mit
führt zu einem Fehler:
%Vor%Warum funktioniert es so und wie geht es?
Ein [..]
Ausdruck ist eine Zeichengruppe , was bedeutet, dass er mit jedem darin enthaltenen Zeichen übereinstimmt. Sie stimmen also mit einem Literal $
-Zeichen überein. Eine Zeichengruppe gilt immer für ein Eingabezeichen und kann daher niemals einen Anker enthalten.
Wenn Sie entweder das Zeichen whitespace oder am Ende der Zeichenkette suchen möchten, verwenden Sie stattdessen eine nicht erfassende Gruppe, kombiniert mit |
oder selector:
Sehen Sie sich alternativ den Wortgrenzenanker \b
an. Es passt überall dort, wo eine \w
-Gruppe beginnt oder endet (also an Punkten im Text verankert, an denen einem \w
-Zeichen ein \W
-Zeichen vorausgeht oder folgt oder am Anfang oder Ende der Zeichenfolge steht) .
Eckige Klammern geben keine Gruppe an, sie geben einen Zeichensatz an, der eins Zeichen entspricht (eines davon in den Klammern). Wie documented , "Sonderzeichen verlieren ihre besondere Bedeutung innerhalb von Mengen" (sofern nicht anders angegeben als bei Klassen wie \s
).
Wenn Sie \s
oder das Ende von string anpassen möchten, verwenden Sie etwas wie \s|$
.
Die Antwort von Martijn Pieters ist richtig. Etwas ausführlicher, wenn Sie einfangende Gruppen verwenden
%Vor%Sie erhalten:
%Vor% Das liegt daran, dass re.findall()
die Werte der erfassten Gruppe (\s|$)
zurückgibt.
Klammern ()
werden für zwei Zwecke verwendet : Zeichengruppen und erfasste Gruppen. Um gefangene Gruppen zu deaktivieren, aber immer noch als Zeichengruppen zu fungieren, verwenden Sie (?:...)
syntax: