Python RegEx
Reguläre Ausdrücke (Regex) sind ein leistungsfähiges Werkzeug zur Textverarbeitung in Python. Sie ermöglichen es Ihnen, effizient Muster in Texten zu suchen, zu ersetzen und zu extrahieren. Dieser Leitfaden behandelt die grundlegende Syntax regulärer Ausdrücke sowie die am häufigsten verwendeten Funktionen im re-Modul von Python.
Grundlegende Syntax
Reguläre Ausdrücke kombinieren Metazeichen und Literale Zeichen. Metazeichen haben spezielle Bedeutungen. Zum Beispiel matcht der Punkt (.) jedes Zeichen außer einem Zeilenumbruch, während das Sternchen (*) null oder mehr Vorkommen des vorhergehenden Zeichens matcht. Literale Zeichen matchen sich selbst genau. Zum Beispiel matcht das Muster hello den String "hello".
Hinweis zu Raw-Strings: Regex-Muster werden typischerweise als Raw-Strings geschrieben (mit dem Präfix r, z. B. r'\d+'). Dies weist Python an, Backslashes nicht als Escape-Zeichen zu interpretieren, was für die Regex-Syntax wie \d, \w oder \s entscheidend ist.
Quantifizierer
Quantifizierer geben an, wie oft ein Muster matchen soll. Die am häufigsten verwendeten Quantifizierer sind:
*matcht null oder mehr Vorkommen des vorhergehenden Zeichens oder der vorhergehenden Gruppe.+matcht ein oder mehr Vorkommen des vorhergehenden Zeichens oder der vorhergehenden Gruppe.?matcht null oder ein Vorkommen des vorhergehenden Zeichens oder der vorhergehenden Gruppe.{}gibt eine genaue Anzahl oder einen Bereich von Vorkommen des vorhergehenden Zeichens oder der vorhergehenden Gruppe an.
import re
print(re.findall(r'a*', 'baaa')) # ['', 'aaa', '']
print(re.findall(r'a+', 'baaa')) # ['aaaa']
print(re.findall(r'a?', 'baaa')) # ['', 'a', 'a', 'a', '']
print(re.findall(r'a{3}', 'baaa')) # ['aaa']Zeichenklassen
Zeichenklassen matchen genau ein Zeichen aus einer angegebenen Menge. Zum Beispiel matcht [aeiou] einen beliebigen Vokal und [0-9] eine beliebige Ziffer.
import re
print(re.findall(r'[aeiou]', 'hello')) # ['e', 'o']
print(re.findall(r'[0-9]', 'a1b2c3')) # ['1', '2', '3']Anker
Anker geben die Position eines Musters im Text an. Die am häufigsten verwendeten Anker sind:
^matcht den Anfang eines Strings.$matcht das Ende eines Strings.
import re
print(re.findall(r'^Python', 'Python is great')) # ['Python']
print(re.findall(r'great$', 'Python is great')) # ['great']Gruppen
Gruppen erfassen Submuster zur späteren Extraktion. Sie können sie verwenden, um bestimmte Teile eines Strings zu extrahieren. Zum Beispiel matcht das Muster (\d+)-(\d+)-(\d+) ein Datum im Format YYYY-MM-DD und erfasst Jahr, Monat und Tag.
import re
match = re.search(r'(\d{4})-(\d{2})-(\d{2})', '2023-10-05')
if match:
print(match.groups()) # ('2023', '10', '05')Das re-Modul
Das re-Modul stellt Funktionen zur Arbeit mit regulären Ausdrücken in Python bereit. Die am häufigsten verwendeten Funktionen sind:
re.search()sucht nach einem Muster und gibt das erste Match-Objekt zurück.re.findall()sucht nach allen Vorkommen und gibt eine Liste der Matches zurück.re.sub()ersetzt alle Vorkommen eines Musters durch einen angegebenen String.re.split()teilt einen String an den Vorkommen eines Musters.
Sie können das Matching-Verhalten auch über Flags anpassen. Zum Beispiel macht re.IGNORECASE das Muster groß-/kleinschreibungsfrei.
import re
text = 'apple banana apple'
print(re.search(r'banana', text)) # <re.Match object; span=(6, 12), match='banana'>
print(re.findall(r'apple', text)) # ['apple', 'apple']
print(re.sub(r'apple', 'orange', text)) # 'orange banana orange'
print(re.split(r'\s+', 'one two three')) # ['one', 'two', 'three']
print(re.findall(r'python', 'Python is great', re.IGNORECASE)) # ['Python']Fazit
Reguläre Ausdrücke sind ein leistungsfähiges Werkzeug zur Textverarbeitung in Python. In Kombination mit dem re-Modul ermöglichen sie es Ihnen, komplexe Textmanipulationsaufgaben effizient zu bewältigen. Dieser Leitfaden hat die Kernsyntax und die wesentlichen Funktionen behandelt, um Ihnen den Einstieg zu erleichtern.
Practice
Welche Funktion hat das 're'-Modul in Python?