Serie: Expresiones Regulares
- Expresiones regulares: Introducción
- Metacaracteres: Anclas
- Exp. Regulares: Clases de caracteres
- Clases de caracteres predefinidas
- Paréntesis, escape de caracteres, y alternación de patrones
- Cuantificadores
- Tipos de coincidencias y referencias
- Diferencias de sintaxis entre POSIX y Perl
- Expresiones regulares con PHP - POSIX
- Expresiones regulares con PHP - Perl
En partes anteriores se menciona varias veces que existen diferencias de sintaxis entre las expresiones regulares POSIX y las expresiones regulares compatibles con Perl.
Hasta ahora se han descrito únicamente las expresiones regulares POSIX. El motivo para esto es que la diferencia entre Perl y POSIX no radica en cuantificadores, metacaracteres y clases, sino que radica en algo que no tiene relación directa con el patrón mismo.
Estas diferencias son basicamente dos: los delimitadores y los modificadores. Fuera de estos dos puntos un patrón POSIX es perfectamente válido para Perl.
Entre los lenguajes que utilizan expresiones regulares compatibles con Perl se encuentran:
- PHP (que puede trabajar con ambas sintaxis)
- Javascript
- Java
- Perl (obviamente)
(y seguramente una miríada de lenguajes más).
Delimitadores
El patrón [a-z] es perfectamente válido para POSIX. No requiere ningún extra, es completo.
Sin embargo, el mismo patrón escrito con sintaxis compatible con Perl, debe escribirse como:
/[a-z]/
Cuando se utiliza la sintaxis de Perl, el patrón completo debe ir delimitado por un caracter "/" al comienzo y al final. Esto implica por supuesto que cualquier barra / que forme parte del patrón mismo debe escaparse con la contrabarra \ (quedando "\/" en vez de "/").
Algo interesante a recordar es que si bien por defecto se utiliza la barra /, en realidad se puede utilizar cualquier caracter especial como delimitador.
En este contexto "caracter especial" significa un caracter que no es un número ni una letra, aunque no todos están permitidos. Los que se usan comunmente son #, @ y !.
Por ejemplo, los siguientes patrones son completamente equivalentes:
/[a-z]\/[0-9]/
@[a-z]/[0-9]@
#[a-z]/[0-9]#
![a-z]/[0-9]!
Nótese cómo gracias a que / no se utiliza como delimitador, solamente en el primer ejemplo se requiere escapar la barra que separa [a-z] y [0-9].
Modificadores
La sintaxis Perl admite el uso de modificadores: letras que tienen un significado especial (que en general dependen del lenguaje que se esté usando) y que modifican el comportamiento del patrón.
Uno de los pocos modificadores que son comunes a todas las implementaciones de expresiones regulares compatibles con Perl es i, que indica que el patrón no debe considerar mayúsculas y minúsculas. Así, los siguientes patrones son equivalentes:
/[a-zA-Z]/
/[a-z]/i
La lista completa de modificadores soportados, como ya se mencionó, depende del lenguaje con el que se esté trabajando.










14/01/2009, a las 22:09
[...] los lenguajes que utilizan expresiones regulares compatibles con Perl se … fique por dentro clique aqui. Fonte: [...]