Python Regex Cheat Sheet
Regex. Schon beim Klang des Wortes kräuseln sich die Zehennägel. Irgendwie ist es die kryptische Geheimsprache der Programmierwelt. Aber hey, keine Panik! Wir werfen heute einen lockeren Blick auf den Python Regex Cheat Sheet. Quasi die Schummelzettel-Version für faule Programmierer (wie mich!).
Grundlagen für Regex-Rookies
Los geht's mit den Basics. Punkte sind unsere Freunde. . steht für *irgendein* Zeichen. Stell dir vor, du suchst nach "Hund", aber bist nicht sicher, ob da ein Leerzeichen dahinter kommt. Hund. findet beides! Einfach, oder?
Dann haben wir die Quantoren. Klingt kompliziert, ist es aber nicht. * bedeutet "null oder mehr Vorkommnisse". + heißt "mindestens eins". Und ? bedeutet "null oder eins". Beispiel: Hallo+ findet "Hallo", "Hallooo", "Hallooooo", aber nicht "Hall". Verstanden?
Die Macht der Klammern
Klammern sind genial. Sie bilden Gruppen. Stell dir vor, du willst alle E-Mail-Adressen aus einem Text fischen. Mit Klammern kannst du sagen: "Alles vor dem @ in Gruppe 1, alles danach in Gruppe 2." Super praktisch!
Beispiel: (\w+)@(\w+\.\w+). Das liest sich schrecklich, aber keine Angst! \w steht für "Buchstabe, Zahl oder Unterstrich". + bedeutet "eins oder mehr davon". Also: "Eine oder mehrere Buchstaben, Zahlen oder Unterstriche, gefolgt von einem @, gefolgt von einer oder mehreren Buchstaben, Zahlen oder Unterstrichen, gefolgt von einem Punkt, gefolgt von einer oder mehreren Buchstaben, Zahlen oder Unterstrichen." Puh! Aber es funktioniert!
Spezielle Zeichen - Der Regex-Zoo
Regex hat seinen eigenen Zoo an Sonderzeichen. \d für Zahlen. \s für Leerzeichen. \w für Buchstaben, Zahlen und Unterstriche (hatten wir ja schon). Und \n für einen Zeilenumbruch. Denkt dran: Escape-Zeichen! Oft braucht ihr einen Backslash davor, also \\d, besonders in Python-Strings.
Unbeliebte Meinung: Ich finde es total okay, den Regex Cheat Sheet offen zu haben. Niemand merkt sich das alles! Warum das Rad neu erfinden?
Zeichenklassen - Die Auswahlbox
Mit eckigen Klammern [] definierst du Zeichenklassen. [aeiou] findet alle Vokale. [0-9] alle Ziffern. Und [^0-9] findet *alles* außer Ziffern. Das kleine Dach ^ innerhalb der Klammern bedeutet "nicht".
Also H[ai]llo findet "Hallo" und "Hillo", aber nicht "Hello". Clever, oder?
Python und Regex - Eine Liebesgeschichte (manchmal)
Python hat das re Modul. Importieren, und los geht's! Die wichtigsten Funktionen: re.search(), re.match(), re.findall(), und re.sub().
re.search() sucht *irgendwo* im String nach dem Muster. re.match() prüft, ob das Muster *am Anfang* des Strings passt. re.findall() findet *alle* Vorkommnisse des Musters und gibt sie als Liste zurück. Und re.sub() ersetzt Vorkommnisse des Musters durch etwas anderes.
Beispiel:
import re
text = "Ich habe 3 Äpfel und 5 Birnen."
zahlen = re.findall(r"\d+", text)
print(zahlen) # Output: ['3', '5']
Das r vor dem String r"\d+" bedeutet "raw string". Das ist wichtig, damit Python die Backslashes nicht interpretiert. Sonst wird's noch verwirrender!
Flags - Die kleinen Helfer
Regex hat auch Flags. Das sind kleine Zusätze, die das Verhalten der Suche beeinflussen. re.IGNORECASE (oder re.I) ignoriert Groß- und Kleinschreibung. re.MULTILINE (oder re.M) behandelt jede Zeile in einem mehrzeiligen String als separate Einheit. Und re.DOTALL (oder re.S) sorgt dafür, dass der Punkt . auch Zeilenumbrüche findet.
Beispiel:
import re
text = "Hallo Welt\nhallo welt"
ergebnis = re.findall(r"^hallo", text, re.MULTILINE | re.IGNORECASE)
print(ergebnis) # Output: ['Hallo', 'hallo']
Hier kombinieren wir re.MULTILINE und re.IGNORECASE mit dem | Operator.
Regex-Zen: Übung macht den Meister (oder zumindest erträglicher)
Regex ist wie Kung Fu. Man muss üben, üben, üben. Fang mit einfachen Mustern an und steigere dich langsam. Es gibt viele Online-Tools, mit denen du deine Regex testen kannst. Regex101.com ist zum Beispiel super.
Unbeliebte Meinung Nummer 2: Wenn Regex zu kompliziert wird, ist es manchmal besser, den Text manuell zu parsen. Es gibt eine Grenze, ab der Regex die Lesbarkeit des Codes *verschlechtert*.
Und denkt dran: Der Regex Cheat Sheet ist euer Freund. Benutzt ihn! Niemand erwartet, dass ihr das alles auswendig könnt.
Also, viel Spaß beim Regex-en! Und keine Angst, auch die größten Programmierer googeln Regex-Syntax. 🤫
