Aufgabe 06 - Musterjagd
Aufgabe 06 - Musterjagd
Abschnitt betitelt „Aufgabe 06 - Musterjagd“Worum geht es?
Abschnitt betitelt „Worum geht es?“Erste Schritte mit regulären Ausdrücken: fremde Muster entschlüsseln, eigene Muster für Alltagsformate entwickeln und Teilinformationen mit Gruppen extrahieren (siehe Kapitel Reguläre Ausdrücke). Reguläre Ausdrücke funktionieren in fast jeder Sprache und jedem Werkzeug gleich; was Sie hier üben, nutzen Sie auch in VS Code, in Datenbanken und auf der Kommandozeile.
Was Sie dafür brauchen
Abschnitt betitelt „Was Sie dafür brauchen“- Kapitel Reguläre Ausdrücke, insbesondere Bausteine, Anker und Gruppen.
- Python (
re-Modul), regex101.com mit Flavor “Python”.
Welche Kompetenzen Sie erwerben und zeigen
Abschnitt betitelt „Welche Kompetenzen Sie erwerben und zeigen“- Sie lesen vorhandene Muster und sagen ihr Verhalten präzise voraus.
- Sie entwickeln eigene Muster iterativ und prüfen sie systematisch mit Positiv- und Negativbeispielen.
- Sie extrahieren und transformieren Textbestandteile mit Capture-Gruppen und
re.sub.
Pädagogische Einordnung
Abschnitt betitelt „Pädagogische Einordnung“- Reproduktion: die Bedeutung der Regex-Bausteine wiedergeben, gegebene Muster beschreiben (Teil A).
- Reorganisation und Transfer: Muster für neue Formate entwickeln und Testfälle konstruieren (Teile B und C).
- Reflexion, Problemlösung und Urteilsbildung: ein komplexes Format vollständig modellieren und Grenzen des Werkzeugs beurteilen (Teil D).
Arbeitsaufträge
Abschnitt betitelt „Arbeitsaufträge“Die Übung ist auf etwa zwei Stunden ausgelegt. Entwickeln Sie jedes Muster zuerst auf regex101 und übernehmen Sie es dann in den Code. Teil D ist der Expertenteil.
Teil A - Muster lesen
Abschnitt betitelt „Teil A - Muster lesen“Beschreiben Sie in je einem Satz, worauf diese Muster passen, und geben Sie je ein Beispiel und ein Gegenbeispiel an:
^\d{4}$[A-Z][a-z]+\d+([.,]\d{1,2})?^[ABC]\d{3}[a-z]?$
Prüfen Sie Ihre Antworten anschließend auf regex101 und korrigieren Sie, wo nötig.
Teil B - Muster schreiben
Abschnitt betitelt „Teil B - Muster schreiben“Entwickeln Sie Muster und testen Sie jedes mit re.fullmatch:
- eine österreichische Postleitzahl (vier Ziffern, beginnt nicht mit 0),
- ein Datum im Format
TT.MM.JJJJmit grober Bereichsprüfung (Tag 01 bis 31, Monat 01 bis 12), - eine Uhrzeit im Format
HH:MM(00:00 bis 23:59), - ein österreichisches Kennzeichen wie
VI-123AB(ein bis zwei Buchstaben, Bindestrich, ein bis vier Ziffern, ein bis zwei Buchstaben).
Zu jedem Muster gehört eine kleine Testfunktion mit assert: mindestens drei Strings, die passen müssen, und drei, die scheitern müssen. Wählen Sie die Gegenbeispiele bösartig (fast richtig, um eine Stelle daneben).
Teil C - Extrahieren und Ersetzen
Abschnitt betitelt „Teil C - Extrahieren und Ersetzen“- Extrahieren Sie mit Capture-Gruppen aus
"Termin: 14.03.2026 um 09:30"die Werte Tag, Monat, Jahr, Stunde und Minute, und geben Sie sie einzeln aus. - Wiederholen Sie das mit benannten Gruppen (
(?P<day>...)) und begründen Sie in einem Satz, welche Variante Sie bei fünf Gruppen bevorzugen. - Formen Sie mit
re.subund Gruppenreferenzen alle Datumsangaben eines Textes vonTT.MM.JJJJnachJJJJ-MM-TTum.
Teil D - Expertenteil: Produktionsdateinamen
Abschnitt betitelt „Teil D - Expertenteil: Produktionsdateinamen“Eine Filmproduktion benennt Dateien nach dem Schema project_scene-take_camera_version.extension, etwa imagefilm_04-7_B_v03.mp4. Regeln: Projektname aus Kleinbuchstaben und Ziffern, Szene zweistellig, Take ein- bis zweistellig, Kamera ein Großbuchstabe, Version v plus zwei Ziffern (optional, fehlt bei Rohmaterial), Endung mp4, mov oder wav.
- Entwickeln Sie ein Muster mit benannten Gruppen, das gültige Namen vollständig zerlegt und ungültige ablehnt. Dokumentieren Sie das Muster mit einem Kommentar je Baustein.
- Schreiben Sie
parse_filename(name): liefert ein Dictionary mit den Bestandteilen oderNone. Testen Sie mit mindestens fünf gültigen und fünf ungültigen Namen (darunter: Version fehlt, Szene dreistellig, Endungavi). - Schreiben Sie mit
re.subeine Umbenennungsvorschau:imagefilm_04-7_B_v03.mp4wird zuS04T07_B_imagefilm.mp4(Take zweistellig aufgefüllt; recherchieren Sie, wie eine Ersetzungsfunktion beire.subdas Auffüllen übernimmt). - Beurteilen Sie abschließend in drei Sätzen: Welche Prüfungen dieses Formats kann die Regex leisten, und welche (etwa “Take 7 existiert wirklich im Projekt”) grundsätzlich nicht? Wo gehört die zweite Sorte hin?
Wissenscheck
Abschnitt betitelt „Wissenscheck“- Was unterscheidet
re.searchvonre.fullmatch, und welches der beiden gehört zur Validierung von Benutzereingaben? - Worauf passt
ab+, und worauf passt(ab)+? - Warum steht vor jedem Regex-String ein
r? - Was leisten Anker wie
^und$, und was passiert ohne sie? - Ein Kollege will HTML-Dateien mit Regex auswerten. Was raten Sie ihm, und warum?
patterns.py mit allen Mustern und Testfunktionen (laufen fehlerfrei durch), die Antworten aus Teil A als Kommentar, gegebenenfalls filenames.py für Teil D.