So verwenden Sie reguläre Ausdrücke (Regex) in Python

Beherrschen Sie reguläre Python-Ausdrücke mit dem integrierten re-Modul. Lernen Sie den String-Abgleich, die Mustersuche, das Finden aller Vorkommen und das Ersetzen von Text.

Probieren Sie diese Lösung im Editor aus

Übersicht

Reguläre Ausdrücke, allgemein als Regex bekannt, sind leistungsstarke Vorlagen, die zum Abgleichen, Suchen und Bearbeiten von Textzeichenfolgen basierend auf bestimmten Mustern verwendet werden. Regex wird häufig zur E-Mail-Verifizierung, Telefonnummernvalidierung, Web-Scraping, Protokollanalyse und zum Suchen und Ersetzen von Texten verwendet. Python bietet über das integrierte „re“-Modul vollständige Regex-Funktionen.

Das „re“-Modul bietet je nach Ziel mehrere Hauptfunktionen. Die Funktion „re.search(pattern, string)“ scannt einen String und gibt ein Übereinstimmungsobjekt für das erste Vorkommen des Musters zurück. Die Funktion „re.match(pattern, string)“ ist ähnlich, sucht jedoch nur vom Anfang der Zeichenfolge an. Wenn Sie alle Instanzen eines Musters in einem Textblock abrufen möchten, gibt „re.findall(pattern, string)“ sie als Liste von Zeichenfolgen zurück.

Regex-Muster verwenden spezielle Metazeichen wie „\d“ für Ziffern, „\w“ für alphanumerische Zeichen, „+“ für ein oder mehrere Vorkommen und „*“ für null oder mehr. Beim Schreiben von regulären Ausdrücken in Python ist es üblich, rohe String-Literale (mit dem Präfix „r“, z. B. „r“\d+““) zu verwenden, um zu verhindern, dass Python Backslashes als Escape-Sequenzen behandelt.

Code- und Ausführungsausgabe

Dieses Skript demonstriert die Validierung von Formatstrukturen, das Extrahieren numerischer Token und das Ersetzen übereinstimmender Muster mithilfe des re-Moduls.

import re

# 1. Searching for a pattern in text
log_message = "ERROR: Connection timeout at 04:30:15 on port 8080"
pattern_port = r"port \d+"

match = re.search(pattern_port, log_message)
if match:
    print("Found port pattern:", match.group())

# 2. Extracting all email addresses from a block of text
text = "Contact sales@pyrun.xyz or support@example.com for help."
pattern_email = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"

emails = re.findall(pattern_email, text)
print("Extracted emails:", emails)

# 3. Replacing patterns using re.sub
date_string = "2026/05/25"
# Replace slashes with dashes
clean_date = re.sub(r"/", "-", date_string)
print("Replaced Date:", clean_date)
Terminal-Ausgabe
Found port pattern: port 8080
Extracted emails: ['sales@pyrun.xyz', 'support@example.com']
Replaced Date: 2026-05-25

Schrittweise Umsetzung

  • Importieren Sie das integrierte re-Modul.
  • Definieren Sie Regex-Suchmuster mithilfe von Rohzeichenfolgen wie r"\d+", um Probleme mit der Escape-Sequenz zu vermeiden.
  • Verwenden Sie re.search(), um das erste Vorkommen zu finden, oder re.findall(), um alle passenden Teilzeichenfolgen zu sammeln.
  • Verwenden Sie re.sub(pattern, replacement, string), um musterbasierte Ersetzungen innerhalb von Text durchzuführen.

Häufig gestellte Fragen

Welchen Vorteil hat die Verwendung von Rohzeichenfolgen (r"...") für Regex-Muster?

Rohe Zeichenfolgen behandeln Backslashes als Literalzeichen und nicht als Escape-Zeichen. Beispielsweise stellt r"\n" einen Backslash gefolgt von einem "n" dar, während "\n" ein Zeilenumbruchzeichen darstellt.

Wie überprüfe ich, ob ein Regex-Match erfolgreich war?

re.search() und re.match() geben bei Erfolg ein Match-Objekt zurück, oder None, wenn keine Übereinstimmung gefunden wird. Sie sollten das Ergebnis mithilfe einer bedingten Anweisung überprüfen (z. B. if match:).

Verwandte Themen

Empfohlene Python-Ressourcen

Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.