📘 Wichtigste Konzepte von re in Python (Regex)
🔹 Grundfunktionen
| Funktion | Beschreibung | Beispiel |
|---|
re.search() | Sucht erstes Vorkommen des Musters | re.search(r'\d+', 'abc123') |
re.findall() | Gibt alle Treffer als Liste zurück | re.findall(r'\w+', 'Hallo Welt!') |
re.finditer() | Iterator über alle Match-Objekte | for m in re.finditer(r'\d+', text): ... |
re.match() | Prüft, ob das Muster am Anfang des Textes passt | re.match(r'abc', 'abcdef') |
re.fullmatch() | Prüft, ob der gesamte String passt | re.fullmatch(r'\d{3}', '123') |
re.sub() | Ersetzt Treffer durch neuen Text oder Funktion | re.sub(r'\d+', 'X', 'A1 B2') |
re.split() | Zerlegt Text anhand eines Musters | re.split(r'[;,]', 'A;B,C') |
🔹 Wichtige Musterbestandteile (Regex-Symbole)
| Symbol | Bedeutung | Beispiel |
|---|
. | Beliebiges Zeichen (außer Zeilenumbruch) | a.c → abc, acc |
^ | Zeilenanfang | ^Start |
$ | Zeilenende | End$ |
* | 0 oder mehr Wiederholungen | ab* → a, ab, abb |
+ | 1 oder mehr Wiederholungen | ab+ |
? | 0 oder 1 Vorkommen (optional) | colou?r |
{n} | Genau n Wiederholungen | a{3} → aaa |
{n,} | Mindestens n Wiederholungen | a{2,} |
{n,m} | Zwischen n und m Wiederholungen | a{2,4} |
[] | Zeichenklasse (z. B. [aeiou]) | |
[^] | Negierte Zeichenklasse | [^0-9] |
| ` | ` | Oder (Alternativen) |
() | Gruppierung / Capturing Group | (ab)+ |
🔹 Spezielle Zeichenklassen
| Ausdruck | Bedeutung |
|---|
\d | Ziffer (0–9) |
\D | Kein Ziffernzeichen |
\w | Wortzeichen (a–z, A–Z, 0–9, _) |
\W | Kein Wortzeichen |
\s | Whitespace (Leerzeichen, Tab, \n) |
\S | Kein Whitespace |
\\ | Wörtlicher Backslash |
🔹 Flags (Optionale Einstellungen)
| Flag | Beschreibung |
|---|
re.IGNORECASE / re.I | Ignoriert Groß-/Kleinschreibung |
re.DOTALL / re.S | . matcht auch Zeilenumbrüche |
re.MULTILINE / re.M | ^/$ gelten zeilenweise |
re.VERBOSE / re.X | Ermöglicht mehrzeilige lesbare Regex |
🧠 Beispiele
# Alle Zahlen finden
re.findall(r'\d+', 'Hausnummer: 123, Postleitzahl: 45678')
# E-Mails extrahieren
re.findall(r'\b[\w.-]+@[\w.-]+\.\w+\b', text)
# Sections in LaTeX extrahieren
re.findall(r'\\section\{(.*?)\}(.*?)(?=\\section|\Z)', text, re.DOTALL)