Regex Python Cheat Sheet
Hallo, du Code-Zauberer und Text-Dompteur! Hast du dich jemals gefragt, wie du in einem Meer von Text, E-Mails oder sogar Code die Nadel im Heuhaufen finden kannst? Oder wie du bestimmte Muster erkennst, bevor sie dir überhaupt auffallen? Die Antwort ist so elegant wie ein perfekt geformter Algorithmus: Regex (oder reguläre Ausdrücke)! Und das Ganze im gemütlichen Python-Gewand. Stell dir Regex als deinen Superhelden-Sidekick vor, der dir die Textmanipulation erleichtert! Bereit für eine kleine, aber feine Spickzettel-Reise?
Die Basics: Wir legen los!
Bevor wir uns in die Tiefen des Regex-Universums stürzen, lass uns die Grundlagen klären. In Python nutzen wir das re Modul, um Regex-Magie zu wirken. Also, importieren wir es: import re. Tadaa! Das ist schon die halbe Miete!
Zeichen für Zeichen: Die Bausteine des Erfolgs
Regex ist im Grunde genommen eine Sprache, mit der du Textmuster beschreibst. Hier sind ein paar wichtige Vokabeln:
- . (Punkt): Steht für irgendein einzelnes Zeichen (außer einem Zeilenumbruch). Willst du also irgendetwas finden, das mit "H" anfängt und mit "t" aufhört, und dazwischen ein beliebiges Zeichen hat, wäre
H.tdein Freund. - \d: Eine Ziffer (0-9). Perfekt, um Telefonnummern oder Postleitzahlen zu finden!
- \w: Ein "Wort"-Zeichen (Buchstaben, Zahlen und Unterstrich). Super, um Benutzernamen zu validieren.
- \s: Ein Whitespace (Leerzeichen, Tabulator, Zeilenumbruch). Nützlich, um Texte zu formatieren.
- ^: Der Anfang der Zeile. Möchtest du sicherstellen, dass etwas genau am Anfang steht? Hier ist dein Anker!
- $: Das Ende der Zeile. Das Gegenstück zu
^.
Quantifizierer: Wie oft?
Okay, jetzt wird's richtig spannend! Quantifizierer sagen uns, wie oft ein Zeichen oder eine Gruppe von Zeichen vorkommen soll:
- *: Null oder mehr Vorkommnisse.
a*findet also "", "a", "aa", "aaa" usw. - +: Ein oder mehr Vorkommnisse.
a+findet "a", "aa", "aaa", aber nicht "". - ?: Null oder ein Vorkommnis.
a?findet "" oder "a". - {n}: Genau n Vorkommnisse.
a{3}findet nur "aaa". - {n,m}: Zwischen n und m Vorkommnisse.
a{2,4}findet "aa", "aaa" oder "aaaa".
Python und Regex: Ein Dreamteam
Jetzt, wo wir die Grundlagen kennen, sehen wir uns an, wie wir das alles in Python anwenden können.
re.search(): Auf die Suche, fertig, los!
re.search(muster, text) sucht nach dem ersten Vorkommnis des Musters im Text. Wenn es gefunden wird, gibt es ein Match-Objekt zurück, ansonsten None.
Beispiel:
match = re.search(r"Hallo", "Hallo Welt!")
re.findall(): Sammle sie alle!
re.findall(muster, text) findet alle Vorkommnisse des Musters und gibt sie als Liste zurück.
Beispiel:
emails = re.findall(r"\w+@\w+\.\w+", "Meine E-Mail ist [email protected] und seine ist [email protected]"). (Achtung, das ist eine sehr einfache E-Mail-Regex, die nicht alle Fälle abdeckt!)
re.sub(): Ersetzen wie ein Profi!
re.sub(muster, ersetzung, text) ersetzt alle Vorkommnisse des Musters im Text durch die Ersetzung.
Beispiel:
neuer_text = re.sub(r"alt", "neu", "Der alte Text ist alt."). Das Ergebnis wäre: "Der neue Text ist neu."
Der rohe Nervenkitzel: Raw Strings (r"...")
In Regex verwenden wir oft Backslashes (\) für spezielle Zeichen. Da Python Backslashes auch für Escape-Sequenzen verwendet, kann das schnell zu Verwirrung führen. Die Lösung? Raw Strings! Wenn du ein r vor den String setzt (z.B. r"\d+"), behandelt Python den Backslash als literal.
Beispiele aus dem echten Leben (mit einem Augenzwinkern)
Stell dir vor, du bist ein Geheimagent und musst alle Telefonnummern aus einem geheimen Dokument extrahieren. Mit Regex kein Problem!
telefonnummern = re.findall(r"\d{3}-\d{3}-\d{4}", geheimes_dokument)
Oder du bist ein Marketing-Guru und willst alle Hashtags aus einem Social-Media-Post sammeln:
hashtags = re.findall(r"#\w+", social_media_post)
Oder du bist einfach nur müde von doppelten Leerzeichen in deinen Texten:
sauberer_text = re.sub(r"\s+", " ", schmutziger_text)
Regex mag am Anfang etwas abschreckend wirken, aber mit Übung wird es zu einem deiner mächtigsten Werkzeuge. Also, schnapp dir deinen Spickzettel, experimentiere herum und werde zum Regex-Meister! Viel Spaß beim Codieren!
