re — einfache reguläre Ausdrücke¶
Dieses Modul implementiert Operationen für reguläre Ausdrücke. Die unterstützte Syntax für reguläre Ausdrücke ist eine Teilmenge des CPython-Moduls re (und tatsächlich eine Teilmenge der erweiterten regulären Ausdrücke nach POSIX).
Unterstützte Operatoren und Spezialsequenzen sind:
.Passt auf ein beliebiges Zeichen.
[...]Passt auf eine Menge von Zeichen. Einzelne Zeichen und Bereiche werden unterstützt, einschließlich negierter Mengen (z. B.
[^a-c]).^Passt auf den Anfang der Zeichenkette.
$Passt auf das Ende der Zeichenkette.
?Passt auf null oder eins des vorherigen Teilmusters.
*Passt auf null oder mehr des vorherigen Teilmusters.
+Passt auf eins oder mehr des vorherigen Teilmusters.
??Nicht-gierige Version von
?, passt auf null oder eins, mit Vorzug für null.*?Nicht-gierige Version von
*, passt auf null oder mehr, mit Vorzug für die kürzeste Übereinstimmung.+?Nicht-gierige Version von
+, passt auf eins oder mehr, mit Vorzug für die kürzeste Übereinstimmung.|Passt entweder auf das linke oder das rechte Teilmuster dieses Operators.
(...)Gruppierung. Jede Gruppe ist erfassend (eine erfasste Teilkette kann mit der Methode
match.group()abgerufen werden).(?:...)Nicht-erfassende Gruppierung. Jede Gruppe wird nach denselben Regeln wie bei der regulären Gruppierung abgeglichen, ist aber nicht Teil des Match-Objekts.
\dPasst auf eine Ziffer. Entspricht
[0-9].\DPasst auf eine Nicht-Ziffer. Entspricht
[^0-9].\sPasst auf Leerraum. Entspricht
[ \t-\r].\SPasst auf Nicht-Leerraum. Entspricht
[^ \t-\r].\wPasst auf „Wortzeichen“ (nur ASCII). Entspricht
[A-Za-z0-9_].\WPasst auf Nicht-„Wortzeichen“ (nur ASCII). Entspricht
[^A-Za-z0-9_].\Escape-Zeichen. Jedes andere Zeichen, das auf den Backslash folgt und nicht oben aufgeführt ist, wird wörtlich genommen. Zum Beispiel ist
\*gleichbedeutend mit dem wörtlichen*(es wird nicht als Operator*behandelt). Beachten Sie, dass\r,\nusw. nicht speziell behandelt werden und gleichbedeutend mit den wörtlichen Buchstabenr,nusw. sind. Aus diesem Grund wird davon abgeraten, rohe Python-Zeichenketten (r"") für reguläre Ausdrücke zu verwenden. Zum Beispiel istr"\r\n"als regulärer Ausdruck verwendet gleichbedeutend mit"rn". Um auf ein CR-Zeichen gefolgt von LF zu passen, verwenden Sie"\r\n".
NICHT UNTERSTÜTZT:
gezählte Wiederholungen (
{m,n})benannte Gruppen (
(?P<name>...))fortgeschrittenere Assertionen (
\b,\B)Escapes für Sonderzeichen wie
\r,\n- verwenden Sie stattdessen das eigene Escaping von Pythonusw.
Beispiel:
import re
# As re doesn't support escapes itself, use of r"" strings is not
# recommended.
regex = re.compile("[\r\n]")
regex.split("line1\rline2\nline3\r\n")
# Result:
# ['line1', 'line2', 'line3', '', '']
Funktionen¶
- re.compile(regex_str: str, flags: int = 0) 'regex'¶
Kompiliert den regulären Ausdruck und gibt ein regex-Objekt zurück.
- re.search(regex_str: str, string: str) 'match | None'¶
Kompiliert regex_str und sucht danach in einer string. Anders als
matchdurchsucht dies die Zeichenkette nach der ersten Position, die auf den regulären Ausdruck passt (die immer noch 0 sein kann, wenn der reguläre Ausdruck verankert ist).
- re.sub(regex_str: str, replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str¶
Kompiliert regex_str und sucht danach in string, ersetzt alle Übereinstimmungen durch replace und gibt die neue Zeichenkette zurück.
replace kann eine Zeichenkette oder eine Funktion sein. Wenn es eine Zeichenkette ist, können Escape-Sequenzen der Form
\<number>und\g<number>verwendet werden, um auf die entsprechende Gruppe zu expandieren (oder eine leere Zeichenkette für nicht passende Gruppen). Wenn replace eine Funktion ist, muss sie ein einzelnes Argument (die Übereinstimmung) annehmen und sollte eine Ersatzzeichenkette zurückgeben.Wenn count angegeben und ungleich null ist, stoppt die Ersetzung, nachdem so viele Ersetzungen vorgenommen wurden. Das Argument flags wird ignoriert.
Regex-Objekte¶
Kompilierter regulärer Ausdruck. Instanzen dieser Klasse werden mit re.compile() erstellt.
- class re.regex
Kompiliertes Regex-Objekt, das von
re.compile()zurückgegeben wird.- match(string: str, pos: int = 0, endpos: int | None = None) 'match | None'¶
Wendet diesen kompilierten regulären Ausdruck auf string an, verankert am Anfang des Suchbereichs, und gibt ein
match-Objekt zurück, oderNone, wenn der reguläre Ausdruck nicht passt. Dies ist das Äquivalent zum modulebenenmatchfür kompilierte Muster und ist deutlich effizienter, wenn dasselbe Muster auf mehrere Zeichenketten angewendet wird.Der optionale Parameter pos gibt einen Index in string an, an dem die Suche beginnen soll; standardmäßig ist er
0. Dies ist nicht vollständig gleichbedeutend mit dem Slicen der Zeichenkette; das Musterzeichen'^'passt am tatsächlichen Anfang der Zeichenkette und an Positionen direkt nach einem Zeilenumbruch, aber nicht notwendigerweise an dem Index, an dem die Suche beginnen soll.Der optionale Parameter endpos begrenzt, wie weit string durchsucht wird; es ist so, als wäre die Zeichenkette endpos Zeichen lang, sodass nur die Zeichen von pos bis
endpos - 1durchsucht werden. Wenn endposNoneist (der Standardwert), wird die gesamte Zeichenkette durchsucht.
- search(string: str, pos: int = 0, endpos: int | None = None) 'match | None'¶
Durchsucht string nach der ersten Stelle, an der dieser kompilierte reguläre Ausdruck eine Übereinstimmung erzeugt, und gibt ein
match-Objekt zurück, oderNone, wenn keine Position passt. Dies ist das Äquivalent zur modulebenen Funktionsearch()für kompilierte Muster und ist deutlich effizienter, wenn dasselbe Muster auf mehrere Zeichenketten angewendet wird.Der optionale Parameter pos gibt einen Index in string an, an dem die Suche beginnen soll; standardmäßig ist er
0. Dies ist nicht vollständig gleichbedeutend mit dem Slicen der Zeichenkette; das Musterzeichen'^'passt am tatsächlichen Anfang der Zeichenkette und an Positionen direkt nach einem Zeilenumbruch, aber nicht notwendigerweise an dem Index, an dem die Suche beginnen soll.Der optionale Parameter endpos begrenzt, wie weit string durchsucht wird; es ist so, als wäre die Zeichenkette endpos Zeichen lang, sodass nur die Zeichen von pos bis
endpos - 1durchsucht werden. Wenn endposNoneist (der Standardwert), wird die gesamte Zeichenkette durchsucht.
- sub(replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str¶
Sucht nach diesem kompilierten regulären Ausdruck in string, ersetzt alle Übereinstimmungen durch replace und gibt die neue Zeichenkette zurück. Dies ist das Äquivalent zur modulebenen Funktion
sub()für kompilierte Muster und ist deutlich effizienter, wenn dasselbe Muster auf mehrere Zeichenketten angewendet wird.replace kann eine Zeichenkette oder eine Funktion sein. Wenn es eine Zeichenkette ist, können Escape-Sequenzen der Form
\<number>und\g<number>verwendet werden, um auf die entsprechende Gruppe zu expandieren (oder eine leere Zeichenkette für nicht passende Gruppen). Wenn replace eine Funktion ist, muss sie ein einzelnes Argument (die Übereinstimmung) annehmen und sollte eine Ersatzzeichenkette zurückgeben.Wenn count angegeben und ungleich null ist, stoppt die Ersetzung, nachdem so viele Ersetzungen vorgenommen wurden. Das Argument flags wird ignoriert.
- split(string: str, max_split: int = -1, /) List[str]¶
Teilt eine string anhand eines regulären Ausdrucks auf. Wenn max_split angegeben ist, gibt es die maximale Anzahl der durchzuführenden Teilungen an. Gibt eine Liste von Zeichenketten zurück (es können bis zu max_split+1 Elemente sein, wenn es angegeben ist).
Match-Objekte¶
Ein Match-Objekt enthält das Ergebnis einer erfolgreichen Übereinstimmung.
- class re.match(regex_str: str, string: str)¶
Gleicht regex_str gegen string ab, verankert am Anfang der Zeichenkette, und gibt ein Match-Objekt zurück, oder
None, wenn es nicht passt. Dies ist die Abkürzung auf Modulebene:re.match(regex_str, string)ist gleichbedeutend mitre.compile(regex_str).match(string).Dasselbe Match-Objekt wird auch von
search(), von den Methodenregex.match()/regex.search()für kompilierte Muster zurückgegeben und an die vonsub()verwendete Ersatzfunktion übergeben.