Direkt zum Hauptinhalt springen
eLearner.app
Modul 1 · Lektion 3 von 43/32 im Kurs~8 min
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).

Code
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.

Code
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

Übung#regex.m1.l3.e1
Versuche: 0Wird geladen…

Finde jedes Zeichen-Triplett, das durch Klammern begrenzt ist, z. B. `(abc)`, `(xyz)`. Verwende den Wildcard für die 3 inneren Zeichen.

Editor wird geladen…
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

Übung#regex.m1.l3.e2
Versuche: 0Wird geladen…

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).

Editor wird geladen…
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

Übung#regex.m1.l3.e3
Versuche: 0Wird geladen…

Finde alle 3-Zeichen-Sequenzen, die mit `c` beginnen und mit `t` enden (z. B. `cat`, `cot`, `c-t`).

Editor wird geladen…
Hinweis anzeigen

Das Muster verwendet den Punkt '.', um das mittlere Zeichen als Platzhalter darzustellen.

Lösung nach 3 Versuchen verfügbar