Python Programming

Regex-Wildcards mit Pythons re.sub() meistern

Spread the love

Reguläre Ausdrücke (Regex oder Regexp) sind leistungsstarke Werkzeuge zum Musterabgleich in Zeichenketten. Pythons re-Modul bietet robuste Funktionen für Regex-Operationen, wobei Platzhalter eine entscheidende Rolle spielen. Dieser Artikel untersucht, wie man Platzhalter effektiv mit der Funktion re.sub() für verschiedene Zeichenkettenmanipulationsaufgaben verwendet.

Inhaltsverzeichnis

Grundlegende Regex-Substitutionen mit Platzhaltern

Die Funktion re.sub() ist grundlegend für Regex-Substitutionen. Ihre Syntax lautet re.sub(pattern, replacement, string, count=0, flags=0). Das pattern ist ein regulärer Ausdruck, replacement ist die zu ersetzende Zeichenkette, string ist die Eingabe, count begrenzt die Substitutionen und flags modifizieren das Matching-Verhalten. Platzhalter verbessern die Flexibilität des pattern erheblich.

Ersetzen wir alle Vokale in einer Zeichenkette durch „X“:


import re

text = "Hello, World!"
replaced_text = re.sub(r"[aeiou]", "X", text, flags=re.IGNORECASE)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")

[aeiou] ist eine Platzhalter-Zeichenmenge, die jeden Vokal (aufgrund von re.IGNORECASE unabhängig von Groß-/Kleinschreibung) findet.

Erweiterte Platzhalterverwendung und Quantifizierer

re.sub() unterstützt komplexe Platzhalter. Ersetzen wir Sequenzen von einer oder mehreren Ziffern durch „NUMBER“:


import re

text = "Meine Telefonnummer ist 123-456-7890 und meine Postleitzahl ist 90210."
replaced_text = re.sub(r"d+", "NUMBER", text)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")

d+ findet eine oder mehrere Ziffern (d findet eine Ziffer, + steht für eine oder mehrere Wiederholungen).

Hier ist eine Tabelle, die wichtige Platzhalter zusammenfasst:

Platzhalter Beschreibung
. Findet jedes Zeichen außer Zeilenumbruch.
* Findet null oder mehr Vorkommen des vorhergehenden Elements.
+ Findet ein oder mehr Vorkommen des vorhergehenden Elements.
? Findet null oder ein Vorkommen des vorhergehenden Elements.
[] Definiert eine Zeichenmenge (z. B. [abc]).
[^] Definiert eine negierte Zeichenmenge (z. B. [^abc]).
() Erstellt eine Erfassungsgruppe.
Escapes Sonderzeichen (z. B. . findet einen literalen Punkt).

Kombination von Platzhaltern für komplexe Muster

Die Kombination von Platzhaltern erzeugt leistungsstarke Muster. Ersetzen wir Wörter, die mit „a“ beginnen, gefolgt von beliebigen Zeichen:


import re

text = "Ein Apfel am Tag hält den Arzt fern."
replaced_text = re.sub(r"aw*", "WORD", text, flags=re.IGNORECASE)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")

aw* findet „a“ gefolgt von null oder mehr Wortzeichen (w).

Beispiele aus der Praxis: Extraktion von E-Mail-Adressen und Telefonnummern

re.sub() eignet sich hervorragend für die Behandlung komplexer Muster. Ersetzen wir E-Mail-Adressen durch „EMAIL“:


import re

text = "Kontaktieren Sie uns unter [email protected] oder [email protected]."
replaced_text = re.sub(r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}", "EMAIL", text)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")

Dieser Regex findet ein übliches E-Mail-Format.

Fazit

Die Funktion re.sub() bietet in Kombination mit Regex-Platzhaltern eine flexible und effiziente Methode zur Zeichenkettenmanipulation in Python. Die Beherrschung dieser Techniken ist wertvoll für Textverarbeitungs- und Datenbereinigungsaufgaben. Eine sorgfältige Konstruktion von Regex ist entscheidend, um unbeabsichtigte Ersetzungen zu vermeiden. Experimentieren und das Verständnis der Nuancen von Platzhaltern sind der Schlüssel zu einer effektiven Zeichenkettenmanipulation.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert