mirror of
https://github.com/Asabeneh/30-Days-Of-Python.git
synced 2026-06-03 21:02:42 +08:00
4.2 KiB
4.2 KiB
30 Tage Python: Tag 18 - Reguläre Ausdrücke (Regular Expressions)
Autor:
Asabeneh Yetayeh
Zweite Edition: Juli 2021
📘 Tag 18
Reguläre Ausdrücke
Ein regulärer Ausdruck (Regular Expression oder kurz RegEx) ist eine spezielle Zeichenfolge, die hilft, Muster in Texten zu finden. RegEx wird verwendet, um Daten zu validieren, zu suchen oder zu ersetzen. In Python nutzen wir dafür das eingebaute Modul re.
Das re-Modul
Zuerst müssen wir das Modul importieren:
import re
Methoden im re-Modul
re.match(): Sucht nur am Anfang der ersten Zeile.re.search(): Sucht im gesamten String nach dem ersten Vorkommen.re.findall(): Gibt eine Liste aller Treffer zurück.re.split(): Teilt den String an den Stellen, an denen das Muster passt.re.sub(): Ersetzt einen oder mehrere Treffer durch einen neuen Text.
Match
import re
txt = 'Ich liebe es, Python zu lernen'
match = re.match('Ich liebe', txt, re.I) # re.I ignoriert Groß/Kleinschreibung
print(match) # <re.Match object; span=(0, 9), match='Ich liebe'>
Search
match = re.search('Python', txt, re.I)
print(match.span()) # (14, 20) - Start- und Endposition
Findall
txt = 'Python ist toll. Ich mag Python.'
matches = re.findall('Python', txt)
print(matches) # ['Python', 'Python']
Sub (Ersetzen)
txt = 'Ich liebe %Python% und %Java%.'
clean_txt = re.sub('%', '', txt)
print(clean_txt) # Ich liebe Python und Java.
Regex-Muster schreiben
Um ein Regex-Muster zu definieren, nutzen wir in Python "Raw Strings" mit einem vorangestellten r, z. B. r'apple'.
Wichtige Meta-Charaktere:
[]: Ein Zeichensatz (z. B.[a-z]für alle Kleinbuchstaben).\: Maskiert Sonderzeichen (z. B.\dfür Ziffern,\Dfür Nicht-Ziffern)..: Jedes Zeichen außer Zeilenumbruch.^: Beginnt mit (z. B.^Hallo).$: Endet mit (z. B.Welt$).*: Null oder mehr Male.+: Ein oder mehr Male.?: Null oder ein Mal (optional).{n}: Genau n Mal.|: Entweder oder (z. B.Apfel|Birne).(): Gruppierung.
💻 Übungen - Tag 18
Level 1
- Was ist das häufigste Wort im folgenden Absatz? (Nutze Regex zur Reinigung).
paragraph = 'I love teaching. If you do not love teaching what else can you love...' - Extrahiere alle Zahlen aus folgendem Text und berechne die Distanz zwischen den beiden am weitesten entfernten Punkten auf einer x-Achse:
'Die Positionen der Teilchen sind -12, -4, -3, -1, 0, 4 und 8.'
Level 2
- Schreibe ein Muster, das prüft, ob ein String ein gültiger Python-Variablenname ist (keine Zahlen am Anfang, nur Alphanumerik und Unterstriche).
Level 3
- Reinige den folgenden Text von Sonderzeichen (
%,$,@,&,#) und finde danach die drei häufigsten Wörter:sentence = '''%I $am@% a %tea@cher%, &and& I lo%#ve %tea@ching%;...'''
🎉 HERZLICEN GLÜCKWUNSCH! 🎉
