Lektionen des Moduls (3/4)
Der Platzhalter: Der Punkt `.`
Der Punkt . in einer Regex ist der Wildcard (Platzhalter): Er matcht jedes einzelne Zeichen... mit einer wichtigen Ausnahme: Er matcht KEINEN Zeilenumbruch (\n).
Pattern: c.t
Sample: cat cot cut c@t c\nt
^^^ ^^^ ^^^ ^^^Drei Buchstaben: ein c, ein beliebiges Zeichen, ein t. Kein Zeilenumbruch dazwischen, daher wird c\nt standardmäßig nicht gematcht.
Der Punkt ist extrem nützlich, aber auch gefährlich: Ohne Disziplin verwendet, erfasst er mehr, als du beabsichtigt hast. Kombiniert mit den Quantifizierern in Modul 2 (.*, .+?) ist er die Quelle von 90 % der Muster, die "nicht so funktionieren, wie ich es erwartet habe".
Das Flag s: "dotAll"
Mit dem Flag s (auch dotAll oder single-line genannt) matcht der Punkt jedes Zeichen, einschließlich Zeilenumbrüchen. Nützlich, um Blöcke zu extrahieren, die sich über mehrere Zeilen erstrecken.
Pattern: <p>.*</p>
Flag: gs
Sample: <p>prima\nseconda</p>
^^^^^^^^^^^^^^^^^^^^^Grenzen und Verhalten des Punkt-Wildcards
Der Punkt . ist ein mächtiger Wildcard, aber standardmäßig matcht er keine Zeilenumbruchzeichen (\n). Wenn der Punkt absolut alles matchen soll, einschließlich Zeilenumbrüchen, musst du das Flag s (dotAll) aktivieren. Sei vorsichtig, wenn du den Punkt mit Quantifizierern kombinierst (.*), da er dazu neigt, zu viel Text zu konsumieren (gieriges Verhalten).
Probiere es aus
Finde jedes Zeichen-Triplett, das durch Klammern begrenzt ist, z. B. `(abc)`, `(xyz)`. Verwende den Wildcard für die 3 inneren Zeichen.
Hinweis anzeigen
Drei Punkte für drei beliebige Zeichen. Die Klammern sind Metazeichen: Sie müssen mit \ escapt werden.
Lösung nach 3 Versuchen verfügbar
Wiederholungsübung
Extrahiere den Block zwischen `[INIZIO]` und `[FINE]`, der sich über mehrere Zeilen erstrecken kann. Du benötigst das Flag `s`, damit der Punkt auch Zeilenumbrüche matcht, und die 'lazy' (faule) Version des Quantifizierers (`.*?`, Modul 2).
Hinweis anzeigen
Ohne das s-Flag stoppt der Punkt am Zeilenende: Füge es hinzu. Die Form .*? (lazy) stoppt den Treffer beim ersten [FINE].
Lösung nach 3 Versuchen verfügbar
Zusätzliche Herausforderung
Finde alle 3-Zeichen-Sequenzen, die mit `c` beginnen und mit `t` enden (z. B. `cat`, `cot`, `c-t`).
Hinweis anzeigen
Das Muster verwendet den Punkt '.', um das mittlere Zeichen als Platzhalter darzustellen.
Lösung nach 3 Versuchen verfügbar