Python3 Reguläre Ausdrücke

Ein regulärer Ausdruck ist eine spezielle Zeichenfolge, die Ihnen bequem dabei hilft zu prüfen, ob eine Zeichenkette einem bestimmten Muster entspricht.

In Python verwenden Sie dasre-Modul, um reguläre Ausdrücke zu verarbeiten.

Das re-Modul bietet eine Reihe von Funktionen, mit denen Sie Musterabgleich, Suche und Ersetzungsvorgänge in Zeichenketten durchführen können.

reDas Modul verleiht der Sprache Python vollständige Funktionalität für reguläre Ausdrücke.

Dieses Kapitel stellt hauptsächlich die häufig verwendeten Funktionen zur Verarbeitung regulärer Ausdrücke in Python vor. Wenn Sie mit regulären Ausdrücken nicht vertraut sind, können Sie unserTutorial zu regulären Ausdrücken ansehen。


re.match-Funktion

re.match versucht, ein Muster ab der Startposition der Zeichenkette abzugleichen. Wenn der Abgleich an der Startposition nicht erfolgreich ist, gibt match() None zurück.

Funktionssyntax:

re.match(pattern, string, flags=0)

Beschreibung der Funktionsparameter:

ParameterBeschreibung
patternDer abzugleichende reguläre Ausdruck.
stringDie Zeichenfolge, die abgeglichen werden soll.
FlagsFlags, die verwendet werden, um die Übereinstimmungsmethode des regulären Ausdrucks zu steuern, wie z. B. Groß-/Kleinschreibung, mehrzeiliger Abgleich usw. Siehe:Modifikatoren für reguläre Ausdrücke - Optionale Flags

Bei erfolgreicher Übereinstimmung gibt die Methodere.matchein Match-Objekt zurück, andernfalls gibt sieNone zurück。

Wir könnengroup(num)odergroups()Match-Objekt-Funktionen verwenden, um den übereinstimmenden Ausdruck zu erhalten.

Methoden von Match-ObjektenBeschreibung
group(num=0)Der String des gesamten übereinstimmenden Ausdrucks. group() kann mehrere Gruppennummern gleichzeitig annehmen; in diesem Fall gibt es ein Tupel zurück, das die Werte enthält, die diesen Gruppen entsprechen.
groups()Gibt ein Tupel zurück, das alle Zeichenketten der Untergruppen enthält, von 1 bis zur Anzahl der enthaltenen Untergruppen.

Beispiel

#!/usr/bin/python import re print(re.match('www', 'www.example.com').span()) # Übereinstimmung an der Startposition print(re.match('com', 'www.example.com')) # Keine Übereinstimmung an der Startposition

Die Ausgabe des obigen Beispiels ist:

(0, 3)
None

Beispiel

#!/usr/bin/python3 import re line = "Cats are smarter than dogs" # .* bedeutet Übereinstimmung mit einem einzelnen oder mehreren Zeichen außer Zeilenumbruchzeichen (\n, \r) # (.*?) gibt den "nicht-gierigen" Modus an, der nur den ersten übereinstimmenden Teilstring speichert matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I) if matchObj: print ("matchObj.group() : ", matchObj.group()) print ("matchObj.group(1) : ", matchObj.group(1)) print ("matchObj.group(2) : ", matchObj.group(2)) else: print ("No match!!")

Das Ausführungsergebnis des obigen Beispiels ist wie folgt:

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

re.search-Methode

re.search durchsucht die gesamte Zeichenkette und gibt die erste erfolgreiche Übereinstimmung zurück.

Funktionssyntax:

re.search(pattern, string, flags=0)

Beschreibung der Funktionsparameter:

ParameterBeschreibung
patternDer abzugleichende reguläre Ausdruck.
stringDie Zeichenfolge, die abgeglichen werden soll.
FlagsFlags, die verwendet werden, um die Übereinstimmungsmethode des regulären Ausdrucks zu steuern, wie z. B. Groß-/Kleinschreibung, mehrzeiliger Abgleich usw. Siehe:Modifikatoren für reguläre Ausdrücke - Optionale Flags

Bei erfolgreicher Übereinstimmung gibt die Methode re.search ein Match-Objekt zurück, andernfalls gibt sie None zurück.

Wir können die Match-Objekt-Funktionen group(num) oder groups() verwenden, um den abgeglichenen Ausdruck zu erhalten.

Methoden von Match-ObjektenBeschreibung
group(num=0)Der String des gesamten übereinstimmenden Ausdrucks. group() kann mehrere Gruppennummern gleichzeitig annehmen; in diesem Fall gibt es ein Tupel zurück, das die Werte enthält, die diesen Gruppen entsprechen.
groups()Gibt ein Tupel zurück, das alle Zeichenketten der Untergruppen enthält, von 1 bis zur Anzahl der enthaltenen Untergruppen.

Beispiel

#!/usr/bin/python3 import re print(re.search('www', 'www.example.com').span()) # Übereinstimmung an der Startposition print(re.search('com', 'www.example.com').span()) # Keine Übereinstimmung an der Startposition

Die Ausgabe des obigen Beispiels ist:

(0, 3)
(11, 14)

Beispiel

#!/usr/bin/python3 import re line = "Cats are smarter than dogs" searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I) if searchObj: print ("searchObj.group() : ", searchObj.group()) print ("searchObj.group(1) : ", searchObj.group(1)) print ("searchObj.group(2) : ", searchObj.group(2)) else: print ("Nichts gefunden!!")
Das Ausführungsergebnis des obigen Beispiels ist wie folgt:
searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

Unterschied zwischen re.match und re.search

re.matchEs gleicht nur den Anfang der Zeichenkette ab. Wenn der Anfang der Zeichenkette nicht mit dem regulären Ausdruck übereinstimmt, schlägt der Abgleich fehl und die Funktion gibt None zurück, währendre.searchEs durchsucht die gesamte Zeichenkette, bis eine Übereinstimmung gefunden wird.

Beispiel

#!/usr/bin/python3 import re line = "Cats are smarter than dogs" matchObj = re.match( r'dogs', line, re.M|re.I) if matchObj: print ("Übereinstimmung --> matchObj.group() : ", matchObj.group()) else: print ("Keine Übereinstimmung!!") matchObj = re.search( r'dogs', line, re.M|re.I) if matchObj: print ("search --> matchObj.group() : ", matchObj.group()) else: print ("No match!!")
Die Ausgabe des obigen Beispiels ist:
No match!!
search --> matchObj.group() :  dogs

Suchen und Ersetzen

Das re-Modul von Python bietet re.sub, um Übereinstimmungen in einer Zeichenkette zu ersetzen.

Syntax:

re.sub(pattern, repl, string, count=0, flags=0)

Parameter:

  • pattern: Die Musterzeichenkette im regulären Ausdruck.
  • repl: Die Ersatzzeichenkette, die auch eine Funktion sein kann.
  • string: Die ursprüngliche Zeichenkette, die durchsucht und ersetzt werden soll.
  • count: Die maximale Anzahl der Ersetzungen nach dem Musterabgleich. Der Standardwert 0 bedeutet, alle Übereinstimmungen zu ersetzen.
  • flags: Der Übereinstimmungsmodus, der zur Kompilierzeit verwendet wird, in numerischer Form.

Die ersten drei sind erforderliche Parameter, und die letzten beiden sind optionale Parameter.

Beispiel

#!/usr/bin/python3 import re phone = "2004-959-559 # Dies ist eine Telefonnummer" # Kommentare löschen num = re.sub(r'#.*$', "", phone) print ("Telefonnummer:", num) # Nicht-Ziffern-Inhalt entfernen num = re.sub(r'\D', "", phone) print ("Telefonnummer:", num)

Das Ausführungsergebnis des obigen Beispiels ist wie folgt:

电话号码 :  2004-959-559 
电话号码 :  2004959559

Der repl-Parameter ist eine Funktion

Im folgenden Beispiel werden die übereinstimmenden Zahlen in der Zeichenkette mit 2 multipliziert:

Beispiel

#!/usr/bin/python import re # Die übereinstimmenden Zahlen mit 2 multiplizieren def double(matched): value = int(matched.group('value')) return str(value * 2) s = 'A23G4HFD567' print(re.sub('(?P<value>\d+)', double, s))

Das Ausführungsergebnis ist:

A46G8HFD1134

compile-Funktion

Die compile-Funktion wird verwendet, um einen regulären Ausdruck zu kompilieren und ein reguläres Ausdrucksobjekt (Pattern) zu erzeugen, das von den Funktionen match() und search() verwendet wird.

Das Syntaxformat ist:

re.compile(pattern[, flags])

Parameter:

  • pattern: Ein regulärer Ausdruck in Zeichenkettenform
  • flags ist optional und gibt den Übereinstimmungsmodus an, z. B. Ignorieren der Groß-/Kleinschreibung, Mehrzeilenmodus usw. Die spezifischen Parameter sind:
    • re.IGNORECASE oder re.I- Bewirkt, dass bei der Übereinstimmung die Groß-/Kleinschreibung ignoriert wird
  • re.L gibt an, dass die speziellen Zeichensätze \w, \W, \b, \B, \s, \S von der aktuellen Umgebung abhängen
  • re.MULTILINE oder re.M - Mehrzeilenmodus, ändert das Verhalten von ^ und $, sodass sie mit dem Anfang und dem Ende jeder Zeile der Zeichenkette übereinstimmen.
  • re.DOTALL oder re.S – Bewirkt, dass.jedes Zeichen einschließlich Zeilenumbruch übereinstimmt.
  • re.ASCII – Bewirkt, dass \w, \W, \b, \B, \d, \D, \s, \S nur auf ASCII-Zeichen passen.
  • re.VERBOSE oder re.X – Ignoriert Leerzeichen und Kommentare, wodurch komplexe reguläre Ausdrücke klarer organisiert werden können.

Diese Flags können einzeln oder kombiniert mit bitweisem OR (|) verwendet werden. Zum Beispiel bedeutet re.IGNORECASE | re.MULTILINE, dass sowohl die Groß-/Kleinschreibung ignoriert als auch der Mehrzeilenmodus aktiviert wird.

Beispiel

Beispiel

>>>import re >>> pattern = re.compile(r'\d+') # Wird verwendet, um mindestens eine Ziffer zu matchen >>> m = pattern.match('one12twothree34four') # Suche am Anfang, keine Übereinstimmung >>> print( m ) None >>> m = pattern.match('one12twothree34four', 2, 10) # Übereinstimmung ab der Position von 'e' suchen, keine Übereinstimmung >>> print( m ) None >>> m = pattern.match('one12twothree34four', 3, 10) # Übereinstimmung ab der Position von '1' suchen, stimmt genau überein >>> print( m ) # Gibt ein Match-Objekt zurück <_sre.SRE_Match Objekt bei 0x10a42aac0> >>> m.group(0) # 0 kann weggelassen werden '12' >>> m.start(0) # 0 kann weggelassen werden 3 >>> m.end(0) # 0 kann weggelassen werden 5 >>> m.span(0) # 0 kann weggelassen werden (3, 5)

Oben wird bei erfolgreicher Übereinstimmung ein Match-Objekt zurückgegeben, wobei:

  • group([group1, …])Die Methode wird verwendet, um eine oder mehrere gruppenweise übereinstimmende Zeichenketten zu erhalten. Wenn Sie den gesamten übereinstimmenden Teilstring erhalten möchten, können Sie direkt verwendengroup()odergroup(0);
  • start([group])Die Methode wird verwendet, um die Startposition des gruppenübereinstimmenden Teilstrings im gesamten String zu erhalten (der Index des ersten Zeichens des Teilstrings). Der Standardwert des Parameters ist 0;
  • end([group])Die Methode wird verwendet, um die Endposition des gruppenübereinstimmenden Teilstrings im gesamten String zu erhalten (der Index des letzten Zeichens des Teilstrings + 1). Der Standardwert des Parameters ist 0;
  • span([group])Die Methode gibt zurück(start(group), end(group))。

Sehen wir uns ein weiteres Beispiel an:

Beispiel

>>>import re >>> pattern = re.compile(r'([a-z]+) ([a-z]+)', re.I) # re.I bedeutet Ignorieren der Groß-/Kleinschreibung >>> m = pattern.match('Hello World Wide Web') >>> print( m ) # Übereinstimmung erfolgreich, gibt ein Match-Objekt zurück <_sre.SRE_Match object at 0x10bea83e8> >>> m.group(0) # Gibt den gesamten Teilstring zurück, der erfolgreich übereinstimmte 'Hello World' >>> m.span(0) # Gibt den Index des gesamten übereinstimmenden Teilstrings zurück (0, 11) >>> m.group(1) # Gibt den Teilstring zurück, der von der ersten Gruppe übereinstimmt 'Hello' >>> m.span(1) # Gibt den Index des Teilstrings zurück, der von der ersten Gruppe übereinstimmt (0, 5) >>> m.group(2) # Gibt den Teilstring zurück, der von der zweiten Gruppe übereinstimmt 'World' >>> m.span(2) # Gibt den Index des Teilstrings zurück, der von der zweiten Gruppe übereinstimmt (6, 11) >>> m.groups() # Entspricht (m.group(1), m.group(2), ...) ('Hello', 'World') >>> m.group(3) # Die dritte Gruppe existiert nicht Traceback (most recent call last): File "<stdin>", line 1, in <Modul> IndexError: keine solche Gruppe

findall

Findet alle Teilstrings, die vom Regex im String übereinstimmen, und gibt eine Liste zurück. Wenn es mehrere übereinstimmende Muster gibt, wird eine Liste von Tupeln zurückgegeben. Wenn keine Übereinstimmungen gefunden werden, wird eine leere Liste zurückgegeben.

Hinweis:match und search stimmen einmal überein, findall stimmt mit allen überein.

Die Syntax lautet:

re.findall(pattern, string, flags=0)
oder 
pattern.findall(string[, pos[, endpos]])

Parameter:

  • patternDas übereinstimmende Muster.
  • stringDie Zeichenkette, die abgeglichen werden soll.
  • posOptionaler Parameter, gibt die Startposition in der Zeichenkette an, standardmäßig 0.
  • endposOptionaler Parameter, gibt die Endposition in der Zeichenkette an, standardmäßig die Länge der Zeichenkette.

Alle Zahlen in einer Zeichenkette finden:

Beispiel

import re result1 = re.findall(r'\d+','example 123 google 456') pattern = re.compile(r'\d+') # Zahlen finden result2 = pattern.findall('example 123 google 456') result3 = pattern.findall('run88oob123google456', 0, 10) print(result1) print(result2) print(result3)

Ausgabeergebnis:

['123', '456']
['123', '456']
['88', '12']

Mehrere übereinstimmende Muster, Rückgabe einer Liste von Tupeln:

Beispiel

import re

result = re.findall(r'(\w+)=(\d+)', 'set width=20 and height=10')
print(result)
[('width', '20'), ('height', '10')]

re.finditer

Ähnlich wie findall, findet alle Teilzeichenketten, die vom regulären Ausdruck in der Zeichenkette abgeglichen werden, und gibt sie als Iterator zurück.

re.finditer(pattern, string, flags=0)

Parameter:

ParameterBeschreibung
patternDer reguläre Ausdruck zum Abgleichen
stringDie Zeichenfolge, die abgeglichen werden soll.
FlagsFlags, die verwendet werden, um das Übereinstimmungsverhalten des regulären Ausdrucks zu steuern, z. B. Groß-/Kleinschreibung, Mehrzeilenabgleich usw. Siehe:Modifikatoren für reguläre Ausdrücke – optionale Flags

Beispiel

import re it = re.finditer(r"\d+","12a32bc43jf3") for match in it: print (match.group() )

Ausgabeergebnis:

12 
32 
43 
3

re.split

Die Methode split teilt die Zeichenfolge durch die übereinstimmenden Teilzeichenfolgen und gibt eine Liste zurück. Ihre Verwendung ist wie folgt:

re.split(pattern, string[, maxsplit=0, flags=0])

Parameter:

ParameterBeschreibung
patternDer reguläre Ausdruck zum Abgleichen
stringDie Zeichenfolge, die abgeglichen werden soll.
maxsplitAnzahl der Teilungen, maxsplit=1 teilt einmal, Standard ist 0, keine Begrenzung der Anzahl.
FlagsFlags, die verwendet werden, um das Übereinstimmungsverhalten des regulären Ausdrucks zu steuern, z. B. Groß-/Kleinschreibung, Mehrzeilenabgleich usw. Siehe:Modifikatoren für reguläre Ausdrücke – optionale Flags

Beispiel

>>>import re >>> re.split('\W+', 'example, example, example.') ['example', 'example', 'example', ''] >>> re.split('(\W+)', ' example, example, example.') ['', ' ', 'example', ', ', 'example', ', ', 'example', '.', ''] >>> re.split('\W+', ' example, example, example.', 1) ['', 'example, example, example.'] >>> re.split('a*', 'hello world') # Für eine Zeichenkette, für die keine Übereinstimmung gefunden werden kann, teilt split sie nicht auf ['hello world']

Objekt für reguläre Ausdrücke

re.RegexObject

re.compile() gibt ein RegexObject-Objekt zurück.

re.MatchObject

group() gibt die Zeichenkette zurück, die vom RE gefunden wurde.

  • start()Gibt die Startposition der Übereinstimmung zurück
  • end()Gibt die Endposition der Übereinstimmung zurück
  • span()Gibt ein Tupel zurück, das die (Start-, End-)Positionen der Übereinstimmung enthält

Modifikatoren für reguläre Ausdrücke - Optionale Flags

Reguläre Ausdrücke können einige optionale Flag-Modifikatoren enthalten, um Übereinstimmungsmodi zu steuern.

Die folgenden Flags können allein oder kombiniert mit bitweisem OR (|) verwendet werden. Zum Beispiel bedeutet re.IGNORECASE | re.MULTILINE, dass sowohl der Modus ohne Beachtung der Groß-/Kleinschreibung als auch der Mehrzeilenmodus aktiviert wird.

ModifiziererBeschreibungBeispiel
re.IGNORECASE oder re.IBewirkt, dass beim Abgleich die Groß-/Kleinschreibung ignoriert wird.
import re
pattern = re.compile(r'apple', flags=re.IGNORECASE)
result = pattern.match('Apple')
print(result.group())  # 输出: 'Apple'
re.MULTILINE oder re.MMehrzeilenabgleich, beeinflusst^und$, sodass sie den Anfang und das Ende jeder Zeile in der Zeichenfolge abgleichen.
import re
pattern = re.compile(r'^\d+', flags=re.MULTILINE)
text = '123\n456\n789'
result = pattern.findall(text)
print(result)  # 输出: ['123', '456', '789']
re.DOTALL oder re.S:sorgt dafür, dass.mit jedem Zeichen einschließlich Zeilenumbruch übereinstimmt.
import re
pattern = re.compile(r'a.b', flags=re.DOTALL)
result = pattern.match('a\nb')
print(result.group())  # 输出: 'a\nb'
re.ASCIIBewirkt, dass \w, \W, \b, \B, \d, \D, \s, \S nur mit ASCII-Zeichen übereinstimmen.
import re
pattern = re.compile(r'\w+', flags=re.ASCII)
result = pattern.match('Hello123')
print(result.group())  # 输出: 'Hello123'
re.VERBOSE oder re.XIgnoriert Leerzeichen und Kommentare, sodass komplexe Regexes klarer organisiert werden können.
import re
pattern = re.compile(r'''
    \d+  # 匹配数字
    [a-z]+  # 匹配小写字母
''', flags=re.VERBOSE)
result = pattern.match('123abc')
print(result.group())  # 输出: '123abc'

Muster für reguläre Ausdrücke

Muster-Strings verwenden eine spezielle Syntax, um einen regulären Ausdruck darzustellen.

Buchstaben und Zahlen repräsentieren sich selbst. Buchstaben und Zahlen in einem Regex-Muster stimmen mit denselben Zeichenfolgen überein.

Die meisten Buchstaben und Zahlen haben eine andere Bedeutung, wenn ihnen ein Backslash vorangestellt ist.

Satzzeichen stimmen nur dann mit sich selbst überein, wenn sie escaped sind; andernfalls repräsentieren sie besondere Bedeutungen.

Der Backslash selbst muss mit einem Backslash maskiert werden.

Da reguläre Ausdrücke oft Backslashes enthalten, ist es am besten, Raw-Strings zu ihrer Darstellung zu verwenden. Muster-Elemente (wier'\t', äquivalent zu\\t) stimmen mit den entsprechenden Sonderzeichen überein.

Die folgende Tabelle listet die speziellen Elemente in der Syntax von Regex-Mustern auf. Wenn Sie optionale Flag-Parameter bei der Verwendung von Mustern angeben, ändern sich die Bedeutungen einiger Muster-Elemente.

MusterBeschreibung
^Entspricht dem Anfang der Zeichenkette.
$Entspricht dem Ende der Zeichenkette.
.Entspricht jedem Zeichen außer Zeilenumbruch. Wenn das Flag re.DOTALL angegeben ist, kann es jedem Zeichen einschließlich Zeilenumbruch entsprechen.
[...]Wird verwendet, um auf eines der enthaltenen Zeichen zuzutreffen, z. B. [amk] stimmt mit 'a', 'm' oder 'k' überein.
[^...]Zeichen, die nicht in [] enthalten sind: [^abc] stimmt mit anderen Zeichen als a, b, c überein.
re*Entspricht 0 oder mehr Wiederholungen des Ausdrucks.
re+Entspricht 1 oder mehr Wiederholungen des Ausdrucks.
re?Entspricht 0 oder 1 Vorkommen des vom vorangehenden Regex definierten Fragments, nicht gierig.
re{ n}Entspricht n Vorkommen des vorangehenden Ausdrucks. Zum Beispiel kann "o{2}" nicht mit dem "o" in "Bob" übereinstimmen, aber mit den beiden o's in "food".
re{ n,}Entspricht n oder mehr des vorangehenden Ausdrucks. Zum Beispiel kann "o{2,}" nicht mit dem "o" in "Bob" übereinstimmen, aber mit allen o's in "foooood". "o{1,}" ist äquivalent zu "o+". "o{0,}" ist äquivalent zu "o*".
re{ n, m}Entspricht n bis m Wiederholungen des vom vorangehenden Regex definierten Fragments, gierig.
a| bEntspricht a oder b
(re)Entspricht dem Ausdruck innerhalb der Klammern und stellt auch eine Gruppe dar.
(?imx)Regex enthält drei optionale Flags: i, m oder x. Wirkt sich nur auf den Bereich innerhalb der Klammern aus.
(?-imx)Regex deaktiviert die optionalen Flags i, m oder x. Wirkt sich nur auf den Bereich innerhalb der Klammern aus.
(?: re)Ähnlich wie (...), aber stellt keine Gruppe dar.
(?imx: re)Verwendet die optionalen Flags i, m oder x innerhalb der Klammern.
(?-imx: re)Verwendet nicht die optionalen Flags i, m oder x innerhalb der Klammern.
(?#...)Kommentar.
(?= re)Positive Lookahead-Assertion. Wenn der enthaltene reguläre Ausdruck, gekennzeichnet durch ..., an der aktuellen Position erfolgreich übereinstimmt, gelingt sie; andernfalls schlägt sie fehl. Sobald jedoch der enthaltene Ausdruck versucht wurde, rückt die Matching-Engine überhaupt nicht vor; der Rest des Musters versucht weiterhin die rechte Seite der Assertion.
(?! re)Negative Lookahead-Assertion. Das Gegenteil der positiven Assertion; gelingt, wenn der enthaltene Ausdruck an der aktuellen Position im String nicht übereinstimmen kann.
(?> re)Unabhängiges Matching-Muster, ohne Backtracking.
\wStimmt mit Ziffern, Buchstaben und Unterstrich überein.
\WStimmt mit Zeichen überein, die keine Ziffern, Buchstaben oder Unterstriche sind.
\sStimmt mit jedem Whitespace-Zeichen überein, äquivalent zu [\t\n\r\f].
\SStimmt mit jedem Nicht-Whitespace-Zeichen überein.
\dEntspricht einer beliebigen Ziffer, äquivalent zu [0-9].
\DStimmt mit jeder Nicht-Ziffer überein.
\AEntspricht dem Anfang der Zeichenkette.
\ZStimmt mit dem Ende der Zeichenkette überein. Wenn ein Zeilenumbruch vorhanden ist, stimmt es nur mit dem Ende der Zeichenkette vor dem Zeilenumbruch überein.
\zEntspricht dem Ende der Zeichenkette.
\GEntspricht der Position, an der die letzte Übereinstimmung abgeschlossen wurde.
\bStimmt mit einer Wortgrenze überein, also der Position zwischen einem Wort und einem Leerzeichen. Zum Beispiel kann 'er\b' mit dem 'er' in "never" übereinstimmen, aber nicht mit dem 'er' in "verb".
\BEntspricht einer Nicht-Wortgrenze. 'er\B' kann mit dem 'er' in "verb" übereinstimmen, aber nicht mit dem 'er' in "never".
\n, \t, usw.Stimmt mit einem Zeilenumbruch überein. Stimmt mit einem Tabulator überein, usw.
\1...\9Entspricht dem Inhalt der n-ten Gruppe.
\10Entspricht dem Inhalt der n-ten Gruppe, wenn diese übereingestimmt hat. Andernfalls verweist es auf einen oktalen Zeichencode-Ausdruck.

Beispiele für reguläre Ausdrücke

Zeichenübereinstimmung

BeispielBeschreibung
pythonEntspricht "python".

Zeichenklassen

BeispielBeschreibung
[Pp]ython Entspricht "Python" oder "python"
rub[ye]Entspricht "ruby" oder "rube"
[aeiou]Entspricht einem beliebigen einzelnen Buchstaben innerhalb der Klammern
[0-9]Entspricht einer beliebigen Ziffer. Ähnlich wie
[a-z]Entspricht einem beliebigen Kleinbuchstaben
[A-Z]Entspricht einem beliebigen Großbuchstaben
[a-zA-Z0-9]Entspricht einem beliebigen Buchstaben oder einer Ziffer
[^aeiou]Alle Zeichen außer den Buchstaben aeiou
[^0-9]Entspricht Zeichen, die keine Ziffern sind

Spezielle Zeichenklassen

BeispielBeschreibung
.Stimmt mit jedem einzelnen Zeichen außer "\n" überein. Um mit jedem Zeichen einschließlich '\n' übereinzustimmen, verwenden Sie ein Muster wie '[.\n]'.
\dEntspricht einem Ziffernzeichen. Äquivalent zu [0-9].
\D Entspricht einem Nicht-Ziffernzeichen. Äquivalent zu [^0-9].
\sEntspricht jedem Leerraumzeichen, einschließlich Leerzeichen, Tabulator, Seitenvorschub usw. Äquivalent zu [ \f\n\r\t\v].
\S Entspricht jedem Nicht-Leerraumzeichen. Äquivalent zu [^ \f\n\r\t\v].
\wEntspricht einem beliebigen Wortzeichen einschließlich Unterstrich. Äquivalent zu '[A-Za-z0-9_]'.
\WEntspricht einem beliebigen Nicht-Wortzeichen. Äquivalent zu '[^A-Za-z0-9_]'.
Weitere Erweiterungen