Modificadores de Patr贸n

Modificadores de Patr贸n

Modificadores de Patr贸n -- Describe los posibles modificadores en patrones de expresiones regulares

Descripci贸n

Los modificadores PCRE disponibles en la actualidad son listados a continuaci贸n. Los nombres entre par茅ntesis se refieren a nombres internos de PCRE para dichos modificadores. Los espacios y saltos de l铆nea son ignorados en los modificadores, otros caracteres generan error.

i (PCRE_CASELESS)

Si 茅ste modificador es definido, las letras en el patr贸n coincidir谩n tanto con letras may煤sculas como min煤sculas.

m (PCRE_MULTILINE)

Por defecto, PCRE trata la cadena de asunto como si consistiera de una "煤nica" l铆nea de caracteres (aun si en realidad contiene varias). El meta-caracter de "inicio de l铆nea" (^) coincide s贸lo al principio de la cadena, mientras que el meta-caracter de "fin de l铆nea" ($) coincide s贸lo el final de la cadena, o antes un caracter de nueva l铆nea final (a menos que el modificador D sea definido). Esto es igual que en Perl.

Cuando este modificador es definido, los constructores de "inicio de l铆nea" y "fin de l铆nea" coinciden inmediatamente despu茅s o inmediatamente antes de cualquier caracter de nueva l铆nea, respectivamente, al igual que al comienzo o final absoluto de la cadena. Este comportamiento es equivalente al modificador /m del Perl. Si no hay caracteres "\n" en la cadena de asunto, o no hay ocurrencias de ^ o $ en un patr贸n, este modificador no tiene efecto alguno.

s (PCRE_DOTALL)

Si se define 茅ste modificador, un meta-caracter de punto en el patr贸n coincidir谩 con todos los caracteres, incluyendo el de nueva l铆nea. Sin 茅l, los saltos de l铆nea son exclu铆dos. Este modificador es equivalente a /s en Perl. Una clase negativa como [^a] siempre coincide con un caracter de nueva l铆nea, independientemente del uso de este modificador.

x (PCRE_EXTENDED)

Si 茅ste modificador es definido, los caracteres de datos que representan espacios en blanco en el patr贸n son completamente ignorados, excepto cuando son escapados o cuando se encuentran al interior de una clase caracter, y los caracteres entre un # sin escapar fuera de una clase de caracter y el siguiente caracter de nueva l铆nea, inclusive, son ignorados tambi茅n. Esto es equivalente al modificador /x de Perl y hace posible incluir comentarios al interior de patrones complicados. Note, sin embargo, que esto es s贸lo aplicable a caracteres de datos. Los caracteres de espacio en blanco nunca pueden aparecer en secuencias de caracteres especiales en un patr贸n, por ejemplo al interior de la secuencia (?(, la cual inicia un sub-patr贸n condicional.

e

Si 茅ste modificador es usado, preg_replace() realiza las sustituciones normales de referencias hacia atr谩s en la cadena de reemplazo, eval煤a 茅sta como c贸digo PHP y usa el resultado para reemplazar la cadena de b煤squeda. Las comillas sencillas y dobles son escapadas con barras invertidas en las referencias hacia atr谩s sustituidas.

S贸lo preg_replace() usa 茅ste modificador; es ignorado por otras funciones de PCRE.

Nota: Este modificador no se encontraba disponible en PHP 3.

A (PCRE_ANCHORED)

Si este modificador es definido, el patr贸n es obligado a ser "anclado", es decir, es limitado para que coincida s贸lo al inicio de la cadena que est谩 siendo analizada (la "cadena de asunto"). Este efecto puede alcanzarse tambi茅n mediante las construcciones apropiadas en el patr贸n mismo, la cual es la 煤nica manera de hacerlo en Perl.

D (PCRE_DOLLAR_ENDONLY)

Si este modificador es definido, un meta-caracter de signo d贸lar en el patr贸n coincide 煤nicamente al final de la cadena de asunto. Sin 茅ste modificador, un d贸lar coincide tambi茅n inmediatamente antes del caracter final si 茅ste es un salto de l铆nea (pero no antes de cualquier otra nueva l铆nea). Este modificador es ignorado si m es definido. No hay equivalente en Perl para este modificador.

S

Cuando un patr贸n va a ser usado varias veces, vale la pena dedicar m谩s tiempo a analizarlo para acelerar el proceso de comparaciones. Si 茅ste modificador es definido, entonces se realizar谩 este an谩lisis adicional. Por el momento, el estudio de un patr贸n es 煤til s贸lo para patrones no-anclados que no tienen un car谩cter de inicio 煤nico arreglado.

U (PCRE_UNGREEDY)

Este modificador invierte la "ambici贸n" de los cuantificadores, de modo que no sean codiciosos por defecto, en su lugar se vuelven codiciosos si son seguidos por un "?". No es compatible con Perl. Tambi茅n puede definirse con un modificador (?U) al interior del patr贸n o con un signo de interrogaci贸n antes del cuantificador (p.ej. .*?).

X (PCRE_EXTRA)

Este modificador activa funcionalidad adicional de PCRE que no es compatible con Perl. Cualquier barra invertida en un patr贸n que sea seguida por una letra que no tenga un significado especial provocar谩 un error, logrando en efecto reservar 茅stas combinaciones para futuras ampliaciones. Por defecto, como en Perl, una barra invertida seguida por una letra sin un significado especial es tratada como un literal. No hay otras caracter铆sticas controladas por este modificador a la fecha de hoy.

u (PCRE_UTF8)

Este modificador activa funcionalidad adicional de PCRE que no es compatible con Perl. Las cadenas de patrones son tratadas como UTF-8. Este modificador se encuentra disponible a partir de PHP 4.1.0 o versiones posteriores en Unix, y desde PHP 4.2.3 en win32. La validez UTF-8 del patr贸n es verificada desde PHP 4.3.5.