Direct naar de hoofdinhoud
Module 3 · Les 3 van 411/32 in de cursus~10 min
Modulelessen (3/4)

De `m`-vlag: meerdere regels

Met de vlag m (meerdere regels) veranderen de ankers ^ en $ van betekenis: ze zijn niet langer het begin/einde van de gehele string, maar het begin/einde van elke regel. Een regel wordt begrensd door \n (of door het begin/einde van de touwtje).

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

Zonder m zou het slechts overeenkomen met Errore aan het absolute begin van de voorbeeld (1 wedstrijd). Met m komt dit overeen met het begin van elke regel (2 wedstrijden).

m verandert de punt NIET

Een veel voorkomende verwarring: de vlag m verandert NIET de betekenis van de punt BESCHERMD_INLINE_9. De punt komt nog steeds NIET overeen met \n, zelfs niet met m. Om de punt te maken match alles wat je nodig hebt de vlag s (behandeld in module 1).

m en s zijn orthogonaal: je kunt ze samen (ms) afzonderlijk gebruiken, of geen van beide.

Meerregelige vlag en regel-voor-regel verwerking

De vlag m wijzigt het gedrag van ^ en $ door ze te laten overeenkomen met het begin en einde van elke regel (gescheiden door \\n) binnen een tekstblok met meerdere regels, in plaats van alleen naar het absolute begin en einde van de hele tekenreeks te kijken.

Probeer het

Oefening#regex.m3.l3.e1
Pogingen: 0Laden…

Zoek elke regel die begint met `ERROR`. Elke regel wordt gescheiden door \\n; gebruik de vlaggen `g` en `m`.

Editor laden…
Toon hint

De m-vlag zorgt ervoor dat ^ ook overeenkomt met het begin van de binnenste regels, en niet alleen met het absolute eerste teken.

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#regex.m3.l3.e2
Pogingen: 0Laden…

Zoek elke regel die EINDIGT met een punt. Gebruik het `$` anker met vlaggen `m` en `g`.

Editor laden…
Toon hint

\\.$ met GM-vlaggen komt overeen met de punt aan het einde van elke regel, niet alleen aan het einde van het voorbeeld.

Oplossing beschikbaar na 3 pogingen

Extra uitdaging

Oefening#regex.m3.l3.e3
Pogingen: 0Laden…

Find all lines in a multiline log that start exactly with the string `ID:` followed by a digit.

Editor laden…
Toon hint

Gebruik ^ vóór ID: en zorg ervoor dat de m-vlag actief is.

Oplossing beschikbaar na 3 pogingen