- Activar insensibilidad a mayúsculas y minúsculas
- Solución: aplicar i a ambos grupos
- También puedes aplicar i a todo el patrón
- El modificador s: incluir saltos de línea
- Desactivar modificadores
- También puedes combinarlos
Hasta ahora hemos aprendido a crear patrones que buscan ciertas combinaciones de caracteres. Pero a veces, queremos cambiar un poco el comportamiento de la expresión para que sea más flexible. Para eso existen los modificadores.
Imagina que estás buscando palabras que empiecen con la letra t, pero no te importa si es mayúscula o minúscula. Ahí es donde los modificadores te salvan la vida. 🙌
Supongamos que tenemos esta cadena:
/(?:t.)-(?:t.)/
ta-tu ta-t
Tu-tu tu-T
Y usamos esta expresión regular:
/(?:t.)-(?:t.)/
Este patrón busca dos letras que empiecen con t (minúscula), seguidas por cualquier otro carácter (.), y separadas por un guión. Es decir, algo como ta-tu.
Pero solo encuentra las que tienen la t en minúscula. ¿Por qué?
👉 Porque en las expresiones regulares, el patrón distingue entre mayúsculas y minúsculas por defecto. Es decir, t no es lo mismo que T.
Activar insensibilidad a mayúsculas y minúsculas
Para que t y T sean tratados como lo mismo, podemos usar el modificador i (de insensitive). En PCRE (el motor que usamos aquí), lo escribimos así:
/(?i:t.)-(?:t.)/
Ahora sí encuentra Tu-tu, porque activamos el modificador i para el primer grupo. Pero… ¿por qué no encuentra Tu-Tu?
👉 Porque el modificador i solo aplica a la parte donde lo colocaste. La segunda parte ((?:t.)) no tiene el modificador, así que sigue siendo sensible a mayúsculas.
Solución: aplicar i a ambos grupos
Fácil: agregamos (?i:...) también en el segundo grupo:
/(?i:t.)-(?i:t.)/
¡Listo! Ahora también encuentra Tu-Tu.
Esto es equivalente a:
/(?:[tT].)-(?:[tT].)/
Aquí lo hacemos "a mano", diciendo que puede ser t o T. Ambas formas son válidas, pero usar el modificador suele ser más cómodo.
También puedes aplicar i a todo el patrón
Otra opción es activar el modificador para toda la expresión desde el inicio:
/(?i)(t.)-(t.)/
?:, aquí sí estamos creando dos grupos capturadores, lo cual puede ser útil (o no), dependiendo de lo que necesites.
El modificador s: incluir saltos de línea
Por defecto, el punto (.) no incluye saltos de línea (\n) o retorno de carro (\r). Pero si quieres que lo haga, puedes activar el modificador s.
/(?i:t.)-(?si:t.)/
Aquí, el primer grupo busca como antes, pero el segundo incluye saltos de línea en lo que representa el punto (.). Esto puede ser útil si hay saltos de línea entre los caracteres que buscas.
Desactivar modificadores
Puedes apagar un modificador con un guión -. Por ejemplo:
/(?-i:t.)-(?si:t.)/
Aquí desactivamos i en la primera parte, pero mantenemos s e i en la segunda.
También puedes combinarlos
/(?s-im:t.)-(?si:t.)/
Este patrón:
- Activa
sen el primer grupo. - Desactiva
i(mayúsculas/minúsculas). - Desactiva
m(modo multilínea, que aún no hemos visto). - En el segundo grupo, mantiene
seiactivados.
Resumen
- Los modificadores cambian el comportamiento de una expresión regular.
ipermite ignorar mayúsculas y minúsculas (por ejemplo,ttambién coincidirá conT).shace que el punto.también coincida con saltos de línea.- Puedes aplicar modificadores solo a una parte del patrón usando
(?i:...),(?s:...), etc. - También puedes activarlos o desactivarlos combinando letras y guiones, como
(?s-im:...). - En PCRE, los modificadores se colocan dentro de la expresión. En otros lenguajes, como JavaScript, se escriben fuera.
Materiales adicionales
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.