Lektionen des Moduls (4/4)
Maskierung von Metazeichen
Einige Zeichen in Regexes haben eine besondere Bedeutung: Sie werden Metazeichen genannt. Wenn du das literale Zeichen matchen möchtest (z. B. einen echten ., ein echtes +, eine echte Klammer), musst du ihnen einen Backslash \ voranstellen, was sie escaped (maskiert).
Es gibt zwölf Metazeichen, die du dir merken solltest:
. * + ? ^ $ | \ ( ) [ ] { } /(Das / ist eigentlich kein Metazeichen der Engine, muss aber in der literalen JavaScript-Schreibweise /.../ escaped werden.)
Pattern: \$\d+\.\d\d
Sample: Prezzi: $9.99, $12.50, totale $22.49.
^^^^^ ^^^^^^ ^^^^^^Hier escapen wir $ (Ende-des-Strings-Anker) und . (Wildcard), um die literalen Zeichen im Preisformat "Dollar + Zahl + Punkt + zwei Ziffern" zu matchen.
Doppelter Backslash in JS-Strings
Wenn du ein Muster in einen JavaScript-String schreibst (wie in unseren Übungen), muss der Backslash verdoppelt werden. Der JS-String '\\d' enthält zwei Zeichen (\ und d) und ist genau das Regex-Muster \d.
const re1 = /\d+/; // literale Schreibweise: ein einzelner Backslash
const re2 = new RegExp('\\d+'); // String: doppelter BackslashDer Kurseditor zeigt das Muster bereits decodiert an (du siehst einen einzelnen \d); du musst selbst nichts verdoppeln.
Die 12 speziellen Metazeichen
Die Zeichen mit besonderen Bedeutungen in der Engine sind genau 12: \\ ^ $ . | ? * + ( ) [ {. Wenn du sie als literalen Text matchen möchtest, musst du ihnen einen Backslash voranstellen. In einigen Umgebungen (z. B. Nicht-Raw-JS-Strings) musst du den Backslash möglicherweise verdoppeln (\\\\).
Probiere es aus
Finde jeden Preis im Format `$N.NN` (Dollar, eine oder mehrere Ziffern, Punkt, zwei Ziffern). Denke daran, `$` und `.` zu escapen.
Hinweis anzeigen
$ muss als \$ escaped werden, der Punkt als \. - andernfalls matcht der Punkt jedes Zeichen.
Lösung nach 3 Versuchen verfügbar
Wiederholungsübung
Finde jedes literale Fragezeichen `?` im Text. `?` ist ein Metazeichen und muss escaped werden.
Hinweis anzeigen
Ohne Escape wäre ? ein Quantifizierer (Modul 2). Setze ein \ davor.
Lösung nach 3 Versuchen verfügbar
Zusätzliche Herausforderung
Finde alle Vorkommen von `.tar.gz` im Text und stelle sicher, dass die Punkte literal gematcht werden.
Hinweis anzeigen
Füge vor jedem Punkt einen Backslash ein, um ihn zu escapen.
Lösung nach 3 Versuchen verfügbar