Direkt zum Hauptinhalt springen
eLearner.app
Modul 3 · Lektion 3 von 411/32 im Kurs~10 min
Lektionen des Moduls (3/4)

`m`-Flag: Multiline

Mit dem Flag m (Multiline) ändern die Anker ^ und $ ihre Bedeutung: Sie stehen nicht mehr für Anfang/Ende des gesamten Strings, sondern für Anfang/Ende jeder Zeile. Eine Zeile wird durch \n (oder durch den Anfang/das Ende des Strings) begrenzt.

Code
Pattern: ^Errore
Flag:    gm
Sample:  Errore: A\nInfo: B\nErrore: C
         ^^^^^^         ^^^^^^

Ohne m würde es nur Errore am absoluten Anfang des Beispiels matchen (1 Treffer). Mit m matcht es den Anfang jeder Zeile (2 Treffer).

m ändert den Punkt NICHT

Eine häufige Verwirrung: Das Flag m ändert NICHT die Bedeutung des Punktes .. Der Punkt matcht auch mit m KEINEN Zeilenumbruch \n. Damit der Punkt alles matcht, benötigst du das Flag s (behandelt in Modul 1).

m und s sind unabhängig voneinander: Du kannst sie zusammen (ms), separat oder gar nicht verwenden.

Multiline-Flag und zeilenweise Verarbeitung

Das Flag m modifiziert das Verhalten von ^ und $, indem es sie mit dem Anfang und dem Ende jeder Zeile (begrenzt durch \n) innerhalb eines mehrzeiligen Textblocks übereinstimmen lässt, anstatt nur den absoluten Anfang und das absolute Ende des gesamten Strings zu betrachten.

Probiere es aus

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

Finde jede Zeile, die mit `ERROR` beginnt. Jede Zeile ist durch \n getrennt; verwende die Flags `g` und `m`.

Editor wird geladen…
Hinweis anzeigen

Das m-Flag bewirkt, dass ^ auch mit dem Anfang von inneren Zeilen übereinstimmt, nicht nur mit dem absolut ersten Zeichen.

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

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

Finde jede Zeile, die mit einem Punkt ENDET. Verwende den Anker `$` mit den Flags `m` und `g`.

Editor wird geladen…
Hinweis anzeigen

\.$ mit den gm-Flags matcht den Punkt am Ende jeder Zeile, nicht nur am Ende des Beispiels.

Lösung nach 3 Versuchen verfügbar

Zusätzliche Herausforderung

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

Finde alle Zeilen in einem mehrzeiligen Protokoll, die exakt mit der Zeichenkette `ID:` gefolgt von einer Ziffer beginnen.

Editor wird geladen…
Hinweis anzeigen

Verwende ^ vor ID: und stelle sicher, dass das m-Flag aktiv ist.

Lösung nach 3 Versuchen verfügbar