Modificadores de Patrones

Modificadores de Patrones -- describe los modificadores posibles en los patrones de expresiones regulares (regex)

Descripción

Los posibles modificadores PRCE (Funciones de Expresiones Compatibles con Perl), en este momento, son mostrados a continuación. Los nombres entre paréntesis se refieren a nombres internos PCRE para dichos modificadores.

i (PCRE_CASELESS)

Si es usado, no se distinguirá entre mayúsculas y minúsculas.

m (PCRE_MULTILINE)

Por defecto, PCRE trata la cadena de entrada como si fuera una sola línea de caracteres (aun cuando tenga varias). El carácter especial de "inicio de línea" (^) empareja sólo al principio de la cadena, mientras el carácter especial de "fin de línea" ($) casa sólo el fin de la entrada, o antes un carácter de nueva línea (a menos que el modificador E sea definido). Esto es lo mismo que en Perl.

Cuando este modificador es utilizado, los constructores de "inicio de línea" y "fin de línea" son emparejados con el carácter de nueva línea. Esto es equivalente al modificador /m del Perl. Si no hay caracteres "\n" en la cadena de entrada, o no existen ^ o $ en el patrón, entonces este modificador no alterará el resultado.

s (PCRE_DOTALL)

Si se usa, el carácter especial de un punto en el patrón emparejará todos los caracteres, incluyendo el de nueva línea. Sin él, el carácter de nueva línea es excluido. Este modificador equivale a /s en Perl. Una cláusula como [^a] siempre casa con un carácter de nueva línea, independientemente de la utilización de este modificador.

x (PCRE_EXTENDED)

Si es definido, los caracteres de información con espacios en blanco en el patrón son ignorados excepto cuando son precedidos por una barra invertida o dentro de una clase carácter, y los caracteres entre un # fuera de una clase carácter y los siguientes caracteres de nueva línea, incluidos, son ignorados también. Esto es equivalente al /x en Perl y hace posible incluir comentarios dentro de patrones complejos. Sin embargo, esto es sólo aplicable a caracteres de información. Los caracteres de espacio en blanco nunca pueden aparecer en la secuencia de caracteres especiales de un patrón, por ejemplo en la secuencia (?( la cual introduce un subpatrón condicional.

e

Si es usado, preg_replace() hace las sustituciones \\ de forma habitual, evalúa el código PHP y usa el resultado para realizar una sustitución en la cadena de búsqueda.

Sólo preg_replace() hace uso de este modificador y es ignorado por las otras funciones PCRE.

Nota: Este modificador fue añadido en PHP 4.0.

A (PCRE_ANCHORED)

Si es definido, el patrón es forzado a ser "anclado", esto es, es obligado a emparejar sólo desde el inicio de la cadena (el "subject string"). Esta característica también puede realizarse con el apropiado patrón, y esta es la única manera de hacerlo en Perl.

E (PCRE_DOLLAR_ENDONLY)

Si es usado, el carácter del dólar en el patrón casará sólo con fin de la cadena de entrada (subject).Sin este modificador, un dólar es también emparejado con el carácter inmediatamente antes del de una nueva 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, es mejor dedicar más tiempo a analizarlo para acelerar el proceso de casamientos. Si es definido entonces se realizar un análisis adicional. Estudiar a un patrón es sólo útil para los no anclados, esto es, no tienen un carácter de inicio fijado.

U (PCRE_UNGREEDY)

Este modificador invierte la "codicia" de los cuantificadores aunque no son ansiosos por defecto, se vuelven codiciosos si son seguidos por un "?". No es compatible con Perl. también puede usarse dentro del patrón.

X (PCRE_EXTRA)

Este modificador activa características adicionales del PCRE que no son compatible con Perl. Cualquier barra invertida en el patrón que sea seguida por una letra que no tenga una interpretación especial provocará un error, estas combinaciones están reservado para futuras ampliaciones. Por defecto, como en Perl, una barra invertida seguida por una letra sin un significado especial es tratada literalmente. No hay otras características controladas por este modificador a la fecha de hoy.