Python -RegEx
Ein RegEx oder Regulärer Ausdruck ist eine Zeichenfolge, die ein Suchmuster bildet.
RegEx kann verwendet werden, um zu prüfen, ob ein String das angegebene Suchmuster enthält.
RegEx-Modul
Python hat ein eingebautes Paket namens re
, das verwendet werden kann, um mit regulären Ausdrücken zu arbeiten.
Modul re
importieren:
import re
RegEx in Python
Wenn Sie das re
Modul importiert haben, können Sie mit der Verwendung regulärer Ausdrücke beginnen:
Beispiel
Durchsuchen Sie die Zeichenfolge, um zu sehen, ob sie mit „The“ beginnt und mit „Spain“ endet:
import
re
txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
RegEx-Funktionen
Das re
Modul bietet eine Reihe von Funktionen, mit denen wir eine Zeichenfolge nach einer Übereinstimmung durchsuchen können:
Function | Description |
---|---|
findall | Returns a list containing all matches |
search | Returns a Match object if there is a match anywhere in the string |
split | Returns a list where the string has been split at each match |
sub | Replaces one or many matches with a string |
Metazeichen
Metazeichen sind Zeichen mit besonderer Bedeutung:
Character | Description | Example | Try it |
---|---|---|---|
[] | A set of characters | "[a-m]" | |
\ | Signals a special sequence (can also be used to escape special characters) | "\d" | |
. | Any character (except newline character) | "he..o" | |
^ | Starts with | "^hello" | |
$ | Ends with | "planet$" | |
* | Zero or more occurrences | "he.*o" | |
+ | One or more occurrences | "he.+o" | |
? | Zero or one occurrences | "he.?o" | |
{} | Exactly the specified number of occurrences | "he{2}o" | |
| | Either or | "falls|stays" | |
() | Capture and group |
Spezielle Sequenzen
Eine spezielle Sequenz ist ein \
gefolgt von einem der Zeichen in der folgenden Liste und hat eine spezielle Bedeutung:
Character | Description | Example | Try it |
---|---|---|---|
\A | Returns a match if the specified characters are at the beginning of the string | "\AThe" | |
\b | Returns a match where the specified characters are at the beginning or at the
end of a word (the "r" in the beginning is making sure that the string is being treated as a "raw string") |
r"\bain" r"ain\b" |
|
\B | Returns a match where the specified characters are present, but NOT at the beginning
(or at
the end) of a word (the "r" in the beginning is making sure that the string is being treated as a "raw string") |
r"\Bain" r"ain\B" |
|
\d | Returns a match where the string contains digits (numbers from 0-9) | "\d" | |
\D | Returns a match where the string DOES NOT contain digits | "\D" | |
\s | Returns a match where the string contains a white space character | "\s" | |
\S | Returns a match where the string DOES NOT contain a white space character | "\S" | |
\w | Returns a match where the string contains any word characters (characters from a to Z, digits from 0-9, and the underscore _ character) | "\w" | |
\W | Returns a match where the string DOES NOT contain any word characters | "\W" | |
\Z | Returns a match if the specified characters are at the end of the string | "Spain\Z" |
Sets
Ein Satz ist ein Satz von Zeichen in einem Paar eckiger Klammern
[]
mit einer besonderen Bedeutung:
Set | Description | Try it |
---|---|---|
[arn] | Returns a match where one of the specified characters (a ,
r , or n ) are
present |
|
[a-n] | Returns a match for any lower case character, alphabetically between
a and n |
|
[^arn] | Returns a match for any character EXCEPT a ,
r , and n |
|
[0123] | Returns a match where any of the specified digits (0 ,
1 , 2 , or
3 ) are
present |
|
[0-9] | Returns a match for any digit between
0 and 9 |
|
[0-5][0-9] | Returns a match for any two-digit numbers from 00 and
59 |
|
[a-zA-Z] | Returns a match for any character alphabetically between
a and z , lower case OR upper case |
|
[+] | In sets, + , * ,
. , | ,
() , $ ,{}
has no special meaning, so [+] means: return a match for any
+ character in the string |
Die Funktion findall()
Die findall()
Funktion gibt eine Liste mit allen Übereinstimmungen zurück.
Beispiel
Drucken Sie eine Liste aller Übereinstimmungen:
import re
txt = "The rain in Spain"
x = re.findall("ai",
txt)
print(x)
Die Liste enthält die Übereinstimmungen in der Reihenfolge, in der sie gefunden wurden.
Wenn keine Übereinstimmungen gefunden werden, wird eine leere Liste zurückgegeben:
Beispiel
Gibt eine leere Liste zurück, wenn keine Übereinstimmung gefunden wurde:
import re
txt = "The rain in Spain"
x = re.findall("Portugal",
txt)
print(x)
Die search()-Funktion
Die search()
Funktion durchsucht den String nach einer Übereinstimmung und gibt ein Match-Objekt zurück, wenn es eine Übereinstimmung gibt.
Wenn es mehr als eine Übereinstimmung gibt, wird nur das erste Vorkommen der Übereinstimmung zurückgegeben:
Beispiel
Suchen Sie nach dem ersten Leerzeichen in der Zeichenfolge:
import re
txt = "The rain in Spain"
x = re.search("\s",
txt)
print("The first white-space character is located in
position:", x.start())
Wenn keine Übereinstimmungen gefunden werden, wird der Wert None
zurückgegeben:
Beispiel
Führen Sie eine Suche durch, die keine Übereinstimmung zurückgibt:
import re
txt = "The rain in Spain"
x = re.search("Portugal",
txt)
print(x)
Die Funktion split()
Die split()
Funktion gibt eine Liste zurück, in der die Zeichenfolge bei jeder Übereinstimmung geteilt wurde:
Beispiel
Bei jedem Leerzeichen teilen:
import re
txt = "The rain in Spain"
x = re.split("\s",
txt)
print(x)
Sie können die Anzahl der Vorkommen steuern, indem Sie den
maxsplit
Parameter angeben:
Beispiel
Teilen Sie die Zeichenfolge nur beim ersten Auftreten:
import re
txt = "The rain in Spain"
x = re.split("\s",
txt,
1)
print(x)
Die sub()-Funktion
Die sub()
Funktion ersetzt die Treffer durch den Text Ihrer Wahl:
Beispiel
Ersetzen Sie jedes Leerzeichen durch die Zahl 9:
import re
txt = "The rain in Spain"
x = re.sub("\s",
"9", txt)
print(x)
Sie können die Anzahl der Ersetzungen steuern, indem Sie den
count
Parameter angeben:
Beispiel
Ersetzen Sie die ersten 2 Vorkommen:
import re
txt = "The rain in Spain"
x = re.sub("\s",
"9", txt, 2)
print(x)
Objekt abgleichen
Ein Match-Objekt ist ein Objekt, das Informationen über die Suche und das Ergebnis enthält.
Hinweis: Wenn es keine Übereinstimmung gibt, wird der Wert None
anstelle des Übereinstimmungsobjekts zurückgegeben.
Beispiel
Führen Sie eine Suche durch, die ein Match-Objekt zurückgibt:
import re
txt = "The rain in Spain"
x = re.search("ai",
txt)
print(x) #this will print an object
Das Match-Objekt verfügt über Eigenschaften und Methoden, die verwendet werden, um Informationen über die Suche und das Ergebnis abzurufen:
.span()
gibt ein Tupel zurück, das die Start- und Endposition der Übereinstimmung enthält.
.string
gibt den an die Funktion übergebenen String
.group()
zurück gibt den Teil des Strings zurück, in dem es eine Übereinstimmung gab
Beispiel
Druckt die Position (Start- und Endposition) des ersten Übereinstimmungsvorkommens.
Der reguläre Ausdruck sucht nach Wörtern, die mit einem großen „S“ beginnen:
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.span())
Beispiel
Drucken Sie die an die Funktion übergebene Zeichenfolge:
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.string)
Beispiel
Gibt den Teil der Zeichenfolge aus, in dem es eine Übereinstimmung gab.
Der reguläre Ausdruck sucht nach Wörtern, die mit einem großen „S“ beginnen:
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.group())
Hinweis: Wenn es keine Übereinstimmung gibt, wird der Wert None
anstelle des Übereinstimmungsobjekts zurückgegeben.