regex-modificadores-inline

Qué son y cómo usar los modificadores inline en expresiones regulares

Los modificadores inline son muy similares a las banderas, pero que podemos incluir directamente dentro de una expresión regular.

Es decir, a diferencia de los modificadores globales que se aplican a toda la expresión, los modificadores inline nos permiten modificar el comportamiento de la expresión solo en la parte donde se insertan.

No todos los lenguajes y herramientas van a tener compatibilidad con los modificadores inline

Sintaxis de los modificadores inline

Los modificadores inline se especifican utilizando la sintaxis (?mod), donde mod es el modificador que deseamos aplicar.

Los modificadores inline más comunes incluyen:

ModificadorDescripción
(?i)Ignora las diferencias entre mayúsculas y minúsculas
(?m)Modificador multilinea
(?s)Permite que el punto (.) coincida con caracteres de nueva línea.
(?x)Modo verbose

Modificador i (Case Insensitive)

El modificador i es útil cuando queremos que la coincidencia no distinga entre mayúsculas y minúsculas.

Hola, hola, y HOLA a todo el mundo!

En este ejemplo, usamos (?i) para permitir que “hola” coincida independientemente de su capitalización.

Modificador m (Multi-line)

El modificador m permite que los anclajes ^ y $ funcionen en cada línea de un texto.

La primera línea

Una línea que no empieza por La

La tercera línea

Aquí, (?m) permite que ^ coincida con el inicio de “Segunda” en la segunda línea del texto.

Modificador s (Dot All)

El modificador s permite que el punto (.) coincida con caracteres de nueva línea.

Hola

aqui cosas en medio

mundo!

Aquí, (?s) hace que .* coincida con el salto de línea entre “Hola,” y “¿cómo estás?“.

Modificador x (Verbose)

El modificador x permite incluir espacios y comentarios en la expresión, mejorando su legibilidad.

We found 1234 and 5678 in the document.

Con (?x), podemos incluir comentarios en la expresión para hacerla más comprensible.

Combinando modificadores inline

Podemos combinar varios modificadores inline en una sola expresión. Para ello simplemente tenemos que juntar los modificadores en nuestra (?mod).

Por ejemplo, si queremos una coincidencia que

  • No distinga entre mayúsculas y minúsculas (?i)
  • Que funcione en múltiples líneas (?m)

Podemos hacerlo simplemente con combinando ambos modificadores así (?im)

Consejos

Los modificadores inline son muy potentes, pero su uso excesivo puede llevar a expresiones difíciles de leer y mantener.

(a.k.a. como no te flipes demasiado poniendo modificadores)