Python

Python Menu

Reguläre Ausdrücke (manchmal abgekürzt als regexp, regex oder re) sind Werkzeuge zum Abgleichen von Mustern in Text. In Python gibt es das Modul re. Die Anwendungen für reguläre Ausdrücke sind weit verbreitet, aber sie sind ziemlich komplex. Wenn du also in Erwägung ziehst, eine Regex für eine bestimmte Aufgabe zu verwenden, solltest du über Alternativen nachdenken und erst als letzten Ausweg auf Regexe zurückgreifen.

Ein Beispiel für eine Regex ist r"^(From|To|Cc).*?python-list@python.org" Nun zur Erklärung: Das Caret ^ passt auf Text am Anfang einer Zeile. Die folgende Gruppe, der Teil mit (From|To|Cc) bedeutet, dass die Zeile mit einem der Wörter beginnen muss, die durch die Pipe | getrennt sind. Das wird als ODER-Operator bezeichnet, und der Regex passt, wenn die Zeile mit irgendeinem der Wörter in der Gruppe beginnt. Das .*? bedeutet, dass die Regex auf eine beliebige Anzahl von Zeichen passt, mit Ausnahme des Zeilenumbruchs \n Zeichen. Der un-greedy Teil bedeutet, dass so wenig Wiederholungen wie möglich übereinstimmen sollen. Das Zeichen . steht für ein beliebiges Nicht-Neustrich-Zeichen, das * bedeutet, dass 0 oder mehr Wiederholungen durchgeführt werden sollen, und das Zeichen ? macht es un-greedy.

Die folgenden Zeilen würden also von dieser Regex gefunden werden: From: python-list@python.org To: !asp]<,. python-list@python.org

Eine vollständige Referenz für die re-Syntax findest du in den Python-Dokumenten.

Übung

Probiere, den Code so zu korrigieren, dass er die richtigen Informationen ausgibt.

# Beispiel: import re muster = re.compile(r"\[(on|off)\]") # Geringfügige Optimierung print(re.search(muster, "Mono: Playback 65 [75%] [-16.50dB] [on]")) # Liefert ein Match-Objekt! print(re.search(muster, "Nada...:-(")) # Gibt nichts zurück # Beispiel Ende
# Übung: Erstelle einen regulären Ausdruck, der auf eine E-Mail passt def test_email(dein_muster): muster = re.compile(dein_muster) emails = ["john@example.com", "python-list@python.org", "wha.t.`1an?ug{}ly@email.com"] for email in emails: if not re.match(muster, email): print("Sie konnten %s nicht zuordnen" % (email)) elif not dein_muster: print("Sie haben vergessen, eine Musterung einzugeben!") else: print("Bestanden") muster = r"" # Dein Muster hier! test_email(muster)
# Übung: Erstelle einen regulären Ausdruck, der auf eine E-Mail passt import re def test_email(dein_muster): muster = re.compile(dein_muster) emails = ["john@example.com", "python-list@python.org", "wha.t.`1an?ug{}ly@email.com"] for email in emails: if not re.match(muster, email): print("Sie konnten %s nicht zuordnen" % (email)) elif not dein_muster: print("Sie haben vergessen, eine Musterung einzugeben!") else: print("Bestanden") # Dein Muster hier! muster = r"\"?([-a-zA-Z0-9.`?{}]+@\w+\.\w+)\"?" test_email(muster) test_output_contains("Bestanden") success_msg("Gute Arbeit!")

Einführung

Python Basics

Python Advance

Data Science Python Tutorials

Python Eingebaute Funktionen