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).
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
Trova ogni riga che inizia con `ERROR`. Ogni riga e' separata da \\n; usa flag `g` e `m`.
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
Trova ogni riga che TERMINA con un punto. Usa l'ancora `$` con flag `m` e `g`.
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
Trova tutte le righe in un log multilinea che iniziano esattamente con la stringa `ID:` seguita da una cifra.
Mostra suggerimento
Usa ^ prima di ID: e assicurati che la flag m sia attiva nel pattern.
Soluzione disponibile dopo 3 tentativi