Vai al contenuto
eLearner.app
Modulo 3 · Lezione 3 di 411/32 nel corso~10 min
Lezioni del modulo (3/4)

Flag `m`: multiline

Con la flag m (multiline) le ancore ^ e $ cambiano significato: non sono piu' inizio/fine dell'intera stringa, ma inizio/fine di ogni riga. Una riga e' delimitata da \n (o dall'inizio/fine della stringa).

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

Senza m matcherebbe solo Errore all'inizio assoluto del sample (1 match). Con m, matcha l'inizio di ogni riga (2 match).

m NON cambia il punto

Una confusione frequente: la flag m NON cambia il significato del punto .. Il punto continua a NON matchare \n anche con m. Per far matchare il punto su tutto serve la flag s (vista nel modulo 1).

m e s sono ortogonali: puoi usarle insieme (ms), separatamente, o nessuna delle due.

Multiline flag ed elaborazione riga per riga

La flag m modifica il comportamento di ^ e $ facendoli corrispondere rispettivamente all'inizio e alla fine di ciascuna riga (delimitata da \\n) all'interno di un testo multilinea, anziché fermarsi solo all'inizio e fine assoluti dell'intera stringa.

Prova tu

Esercizio#regex.m3.l3.e1
Tentativi: 0Caricamento…

Trova ogni riga che inizia con `ERROR`. Ogni riga e' separata da \\n; usa flag `g` e `m`.

Caricamento editor…
Mostra suggerimento

La flag m fa si' che ^ matchi anche l'inizio di righe interne, non solo il primo carattere assoluto.

Soluzione disponibile dopo 3 tentativi

Esercizio di ripasso

Esercizio#regex.m3.l3.e2
Tentativi: 0Caricamento…

Trova ogni riga che TERMINA con un punto. Usa l'ancora `$` con flag `m` e `g`.

Caricamento editor…
Mostra suggerimento

\\.$ con flag gm matcha il punto a fine di ogni riga, non solo a fine sample.

Soluzione disponibile dopo 3 tentativi

Sfida aggiuntiva

Esercizio#regex.m3.l3.e3
Tentativi: 0Caricamento…

Trova tutte le righe in un log multilinea che iniziano esattamente con la stringa `ID:` seguita da una cifra.

Caricamento editor…
Mostra suggerimento

Usa ^ prima di ID: e assicurati che la flag m sia attiva nel pattern.

Soluzione disponibile dopo 3 tentativi