Python Regular Expressions meistern: re.match(), re.search(), re.findall() – Praxisbeispiele
Was ist ein Regular Expression in Python?
In Python wird das re-Modul mit dem Interpreter ausgeliefert und stellt eine reichhaltige API für Kompilieren von Patterns, Suchen und Ersetzen von Text bereit. Ob Sie Benutzereingaben filtern, Logs parsen oder Content von Websites scrapen – ein solides Verständnis von Regex-Grundlagen spart Zeit und reduziert Bugs.
Kernkonzepte von Regex
- Literal Characters – matchen den exakten Text, den Sie schreiben.
- Metazeichen – spezielle Symbole, die Klassen, Ranges oder Quantifier beschreiben (z. B.
\d,\w,+,?,*). - Anchors –
^und$heften das Pattern an Start oder Ende eines Strings. - Quantifier – spezifizieren, wie oft ein Token sich wiederholen darf.
- Groups & Alternation – capturen Sub-Matches und erlauben multiple Optionen.
- Flags – justieren Pattern-Verhalten (Case-Insensitivity, Multiline, etc.).
Gängige Identifier-Tabelle
| Identifier | Beschreibung | Whitespace | Special Escape |
|---|---|---|---|
| \d | Beliebige Ziffer (0‑9) | \n | ., +, *, ?, [], $, ^, (, ), {}, |, \ |
| \D | Nicht-Ziffer | \s | |
| \s | Space, Tab, Newline, etc. | \t | |
| \S | Nicht-Space | \e | |
| \w | Alphanumerisch plus Underscore | \r | |
| \W | Nicht-alphanumerisch (außer Underscore) | \f | |
| . | Beliebiges Zeichen außer Newline | — | |
| \b | Wortgrenze | — | |
| \. | Literaler Punkt | — | |
| \{x} | Exakt x Vorkommen | — |
Einstieg mit re
import re
Das re-Modul ist Teil von Pythons Standardbibliothek und erfordert keine externen Dependencies. Häufige Use Cases:
- String-Validierung (z. B. E-Mail-Adressen, Telefonnummern)
- Datenextraktion aus unstrukturiertem Text
- Automatisiertes Web Scraping
Beispiel 1: \w+ und ^
^– Anchor am String-Anfang.\w+– ein oder mehr Wortzeichen (Buchstaben, Ziffern, Underscore).
Damit können wir das erste Wort eines Strings erfassen:
import re sample = "guru99, education is fun" result = re.findall(r"^\w+", sample) print(result) # Output: ['guru99']
Entfernt man das +, wird nur das erste Zeichen zurückgegeben: ["g"].
Beispiel 2: Auf Whitespace splitten mit \s
Die re.split()-Funktion kann einen String dort teilen, wo ein Pattern matcht. \s splittet an jedem Whitespace-Zeichen.
import re text = "we are splitting the words" print(re.split(r"\s", text)) # ['we', 'are', 'splitting', 'the', 'words']
Wird der Backslash weggelassen, wird s als Literal behandelt, was Splits an jedem s-Zeichen ergibt.
Regex-Methoden Übersicht
re.match()– prüft Match nur am String-Anfang.re.search()– scannt gesamten String und gibt ersten Match zurück.re.findall()– gibt Liste aller nicht-überlappenden Matches zurück.
re.match() verwenden
import re text = "guru99 is a great platform" match = re.match(r"^\w+", text) print(match.group() if match else "No match") # Output: guru99
re.search() verwenden
import re
text = "Software Testing is fun"
for pattern in ["Software testing", "guru99"]:
found = re.search(pattern, text, re.IGNORECASE)
print(f"Looking for '{pattern}' in '{text}' - {'found a match!' if found else 'no match'}")
re.findall() verwenden
import re
emails = "guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com"
found = re.findall(r"[\w\.-]+@[\w\.-]+", emails)
for e in found:
print(e)
Regex Flags
Flags modifizieren Pattern-Verhalten. Gängige Flags:
| Flag | Beschreibung |
|---|---|
| re.M (re.MULTILINE) | ^ und $ matchen Start/Ende jeder Zeile. |
| re.I (re.IGNORECASE) | Ignoriert Groß-/Kleinschreibung. |
| re.S (re.DOTALL) | Punkt matched Newlines. |
| re.U (re.UNICODE) | Unicode-bewusste Zeichenklassen. |
| re.L (re.LOCALE) | Klassen hängen von aktuellem Locale ab. |
| re.X (re.VERBOSE) | Erlaubt Whitespace und Comments im Pattern. |
Multiline Beispiel
import re text = """guru99 careerguru99 selenium""" print(re.findall(r"^\w", text)) # ['g'] print(re.findall(r"^\w", text, re.MULTILINE)) # ['g', 'c', 's']
Python 2 Kompatibilität
Alle Beispiele oben sind für Python 3 geschrieben. Falls Sie sie unter Python 2 ausführen müssen, ersetzen Sie print()-Statements mit Python-2-Syntax und stellen Sie sicher, dass das re-Modul identisch importiert wird.
Fazit
Python Regex zu meistern gibt Ihnen ein mächtiges Toolkit für Textverarbeitung:
re.match()für Patterns am String-Anfang nutzen.re.search()für globale Suche nutzen.re.findall()um alle Matches zu extrahieren.- Flags (z. B.
re.IGNORECASE,re.MULTILINE) anwenden, um Verhalten feinabzustimmen. - Patterns mit Regex101 oder ähnlichen Tools testen vor Deployment.
Python
- Pythons strip()-Methode meistern: Umfassender Leitfaden & Praxisbeispiele
- Pythons str.count(): Zeichen & Teilstrings zählen mit Beispielen
- Python format()-Strings meistern mit klaren Beispielen
- Python len(): Praktischer Leitfaden zur Messung von Objektlängen
- Pythons String.find()-Methode meistern: Syntax, Beispiele & Alternativen
- Python round()-Funktion erklärt mit praktischen Beispielen
- Pythons map()-Funktion meistern: Syntax, Beispiele und Best Practices
- Python timeit(): Ausführungszeit messen mit praktischen Beispielen
- Python Counter in collections: Effizientes Zählen, Aktualisieren und arithmetische Operationen
- Python list.count(): Experten-Guide mit praktischen Beispielen