Zum Inhalt

Nutzung mit Python

Python bietet das Modul re um Regular Expressions zu verwenden. Eine Regex wird in Python immer als String angegeben.

Das re Modul bietet die 2 wesentlichen Funktion search und match um Regular Expressions auf Strings anzuwenden. Der wichtige Unterschied zwischen den beiden Funktionen ist, dass search einen Match im gesamten Subjektstring suchen würde und match beginnend von links nach rechts. Wobei für match bereits das erste Zeichen des Subjektstrings teil der Regular Expression sein muss.

Beispiel: Prüfung auf Übereinstimmung

Die Funktion match würde sich anbieten, wenn ein String auf Gültigkeit gegenüber einem Regex Muster geprüft werden soll. Im Beispiel soll geprüft werden, ob Datumsangaben korrekt sind. Die Funktion match übernimmt als ersten Parameter eine Regular Expression und als zweiten Parameter einen Subjektstring. Die Rückgabe der Funktion ist entweder ein Objekt der Klasse Match im positiven Fall oder None im negativen Fall.

import re

regex = "\d{2}\.\d{2}\.\d{4}"

print(re.match(regex, "12.12.2004"))  # Match Objekt
print(re.match(regex, "12-12-2004"))  # None

Beispiel: Suche im Text

Die Funktion search würde sich anbieten, wenn ein Muster in einem beliebigen Text gesucht werden müsste. Beispielsweise soll eine Uhrzeitangabe in einem Satz gefunden und extrahiert werden.

import re

regex = "(?P<hours>\d{2}):(?P<minutes>\d{2})(?: Uhr)?"
match = re.search(regex, 'Ab 07:30 Uhr gibt es Frühstück.')

if match:
    print("Uhrzeit {}:{}".format(match.group('hours'), match.group('minutes')))

Beispiel: Alle Übereinstimmungen

Die Funktion search oder match stoppt nach dem Auffinden der ersten Übereinstimmung im Subjekt. Durch die Funktion findall werden alle Übereinstimmungen im Subjekt gesucht.

import re

regex = '(?P<hours>\d{2}):(?P<minutes>\d{2})(?: Uhr)?'
subject = 'Von 07:30 bis 10:00 Uhr gibt es Frühstück und von 12:00 bis 13:30 Uhr wird das Mittagessen serviert.'
matches = re.findall(regex, subject)

Das Resultat der Funktion findall liefert dabei eine Liste mit Tuple für alle Matches. Die definierten Gruppierungen, werden als Elemente im Tuple repräsentiert:

[('07', '30'), ('10', '00'), ('12', '00'), ('13', '30')]