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 .