Kapitel 13
Verarbeitung von Zeichenketten
382
13.5.3 Analyse von Strings mit match() und search()
Eine Standardanwendung für reguläre Ausdrücke ist die Analyse eines Strings. Ein Dialog-
system muss herausfinden, worum es in der Benutzereingabe geht, um angemessen reagie-
ren zu können. Dazu verwendet man
search() und match().
Die beiden Methoden leisten fast dasselbe. Der Unterschied liegt allein darin, dass
search() den gesamten String untersucht, während match() prüft, ob ein Anfangsstück des
Strings auf den regulären Ausdruck passt. Ich beschränke mich deshalb in der folgenden
Darstellung auf
search().
Wenn
re ein RE-Objekt ist und s eine Zeichenkette, liefert re.search(s) ein so genanntes
Match-Objekt, falls
s auf den regulären Ausdruck von re passt. Anderenfalls wird das leere
Objekt
None zurückgegeben. Das Match-Objekt kann auf bestimmte Weise ausgewertet und
zur Produktion einer Antwort herangezogen werden. Dazu kommen wir später. Im folgen-
den Beispiel wird in E-Mails geprüft, ob sie die Angabe einer Bankleitzahl enthalten. So
etwas kann für Systeme zur automatischen Bearbeitung von E-Mail-Korrespondenzen wich-
tig sein.
Methode Erklärung
findall(string)
Liefert eine Liste von nicht überlappenden Teil-
strings, auf die der reguläre Ausdruck passt.
match(string[, pos[, endpos]])
Wenn der reguläre Ausdruck auf ein Anfangs-
stück des Strings
string passt, wird ein Match-
Objekt (siehe Abschnitt 13.5.7) zurückgegeben,
sonst
None. Die optionalen Argumente pos und
endpos markieren einen Suchbereich.
search(string[, pos[, endpos]])
Liefert ein Match-Objekt, falls der reguläre
Ausdruck auf den String passt. Ansonsten wie
match().
split(string[, maxsplit])
Liefert zu string eine Liste von maximal max-
split
Teilstrings. Durch den regulären Aus-
druck wird der Trennstring definiert.
sub(replace, string[, count])
Liefert einen String, der aus string wie folgt
ermittelt wird: Teilstücke, auf die der reguläre
Ausdruck passt, werden durch
replace ersetzt.
Tabelle 13.11: Methoden von RE-Objekten (regular expression objects)
>>> from re import *
>>> re = compile('\d+')
>>> if re.search('Geschichten aus 1001 Nacht'):
print('Zahl enthalten')
Zahl enthalten
>>> if re.match('1001 Nacht'):
print('Beginnt mit Zahl')
Beginnt mit Zahl

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.