Lecciones del módulo (3/4)
Flag `m`: multilínea
Con la flag m (multiline), las anclas ^ y $ cambian de significado: ya no representan el inicio/fin de toda la cadena, sino el inicio/fin de cada línea. Una línea está delimitada por \n (o por el inicio/fin de la cadena).
Pattern: ^Errore
Flag: gm
Sample: Errore: A\nInfo: B\nErrore: C
^^^^^^ ^^^^^^Sin m, coincidiría únicamente con Errore al inicio absoluto de la muestra (1 coincidencia). Con m, coincide con el inicio de cada línea (2 coincidencias).
m NO cambia el punto
Una confusión común: la flag m NO cambia el significado del punto .. El punto sigue sin coincidir con \n incluso con m. Para hacer que el punto coincida con todo, necesitas la flag s (vista en el módulo 1).
m y s son independientes (ortogonales): puedes usarlas juntas (ms), por separado o ninguna.
Flag multilínea y procesamiento línea por línea
La flag m modifica el comportamiento de ^ y $ al hacer que coincidan con el inicio y el final de cada línea (delimitada por \n) dentro de un bloque de texto multilínea, en lugar de mirar solo el inicio y final absolutos de toda la cadena.
Pruébalo tú
Encuentra cada línea que comience con `ERROR`. Cada línea está separada por \n; usa las flags `g` y `m`.
Mostrar pista
La flag m hace que ^ coincida también con el inicio de las líneas internas, no solo con el primer carácter absoluto.
Solución disponible después de 3 intentos
Ejercicio de repaso
Encuentra cada línea que TERMINE con un punto. Usa la ancla `$` con las flags `m` y `g`.
Mostrar pista
\.$ con flags gm coincide con el punto al final de cada línea, no solo al final de la muestra.
Solución disponible después de 3 intentos
Desafío adicional
Encuentra todas las líneas en un registro multilínea que comiencen exactamente con la cadena `ID:` seguida de un dígito.
Mostrar pista
Usa ^ antes de ID: y asegúrate de que la flag m esté activa.
Solución disponible después de 3 intentos