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
- Erweiterte Platzhalterverwendung und Quantifizierer
- Kombination von Platzhaltern für komplexe Muster
- Beispiele aus der Praxis: Extraktion von E-Mail-Adressen und Telefonnummern
- Fazit
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.