Traductor

Expresiones Regulares en PHP

Las expresiones regulares son una herramienta muy importante para procesar cadenas alfanuméricas en los lenguajes de programación moderno.

A lo largo de su labor en este mundo de la programación, usted requerirá que los usuarios tecleen datos, y ellos pueden escribir lo que quieran, sin embargo, en muchas ocasiones nosotros deseamos que tecleen un texto preciso, es aquí donde las las expresiones regulares entran en acción.

El uso de expresiones regulares permite filtrar hasta cierto punto, algunos errores o mal funcionamiento de nuestras aplicaciones.

Introducción

Las expresiones regulares son básicamente patrones que se encargan de comprobar una cadena, obteniendo un valor booleano true o false si la cadena se ajusta al patrón y un false en caso contrario.
De esta manera si el usuario introduce un dato incorrecto, el resultado será mostrarle al usuario una página en la que le pide introducir nuevamente el dato.
Los Patrones:
Los patrones se construyen a base de lo que se conoce como metacaracteres, los cuales dentro del lenguaje representan una instrucción determinada.
Las expresiones regulares en PHP se pueden usar siguiendo dos estándares que el lenguaje acepta:
  • El estándar Proxi
  • El estándar Perl

Introducción a los patrones 

A continuación veremos como crear los patrones que luego se usarán para filtrar cadenas. La mayoría de los patrones se ajustan a los estándares de Proxi y Perl, mas adelante veremos específicamente cada uno de ellos.
Los patrones que se usan para construir expresiones regulares se pueden considerar clasificados en cuatro categorías:
  • De secuencia o fijación
  • Multiplicadores
  • De alternativa
  • Paréntesis

Patrones de Fijación

El patrón más simple está compuesto por un solo caracter. Por ejemplo "a".
Con esta expresión coincidirán todas las cadenas todas las cadenas que contengan la letra "a" (minúsculas).
Así pues, coincidirán "Sonia", "Eva", y "Jaime", pero no coincidirán "Pedro", "coche" ni "globo". 
La expresión más simple usando un metacaracter "." (el punto), que representa a un carácter cualquiera.
Por supuesto esto sería una regla muy ambigua, solo se limitaría a marcar como errores las cadenas vacías.
A partir de esto que acabamos de ver, ya podemos empezar a construir expresiones regulares mas complejas.
  • Por ejemplo "a.t". Con esta expresión coincidirían todas las cadenas que contengan la letra "a", y a continuación un carácter cualquiera y después la letra "t".
  • Por ejemplo, "masticas", "aptitud" y "antiguo".
Los metacaracteres "[" y "]" permiten referirnos a un rango de caracteres que definimos para buscar coincidencias.
Por ejemplo, supongamos el patrón "[abcde]". Con él coincidirán cualquier cadena que contengan alguna letra especificada, como: "Coco", "sábado", y "Septiembre" y no coincidirán "tifus", "sino", y "divino".
Cuando los caracteres que forman parte de un rango, tienen valores ASCII consecutivos, se puede expresar el rango mediante e primer caracter, seguido de un guión y él último caracter así: "[a-e]".
En ocasiones queremos usar las expresiones regulares para identificar cadenas  que no contengan caracteres de un determinado rango. Para ello usamos el metacaracter "^" anteponiéndolo al primer caracter del rango.
Suponga que quiere identificar cadenas que no contengan las letras de la a "a" la "e" (minúsculas). El patrón sería: "[^a-e]".
A menudo debemos expresar una expresión destinada a identificar un carácter al principio o al final de una cadena. 
  • Si creamos un patrón como "^F", coincidirán con él todas las cadenas que comiencen con la letra F mayúscula. (no confundir con el de negar un rango).
  • Para determinar que una cadena deba acabar  con un caracter concreto pondremos el metacarácter $ a continuación de aquel que queramos establecer como final asi: "a$", de esta manera coincidirán todas las cadenas que terminen con la "a" minúscula.

Patrones multiplicadores

Son aquellos que se usan para repetir una cadena en la expresión regular.
Suponga que quiere una expresión tal que coincidan con ella todas las cadenas que tengan tres letras "a" (minúsculas seguidas). 
  • Lo podría hacer asi: "aaa".
  • Pero es mas adecuado "a{3}".
Al expresar entre llaves un número a continuación de un caracter, le indicamos que para coincidir con la expresión regular, la cadena debe incluir este caracter repetido tantas veces como indica el número (por supuesto seguidas). Con el patron "a{3}" las cadenas que coincidirían serían : "jdcwjbaaasa873nd" o "jfh76rjnaaaaau8fr".
Para comprobar si un caracter se repite n y m veces, estableceremos los dos límites, entre llaves, a continuación de dicho caracter. Suponga el patrón "a{2,5}". Con el concordarán todas las cadenas en las que se encuentre el carácter "a" que tengan, al menos, dos veces seguidas la letra "a" y no mas de 5 veces.
  • Existe otro multiplicador, en el que se pone el límite inferior de veces que queremos que aparezca el carácter en la cadena, a fin de determinar si concuerda o no. La sintaxis es la siguiente: "a{2,}". De esta manera coincidirán todas las cadenas que tengan, al menos, dos veces seguida la letra "a".
  • El multiplicador "*" a continuación de un carácter determina que, la cadena coincida con la expresión, dicho caracter debe repetirse cualquier número de veces (incluso ninguna), esto no tiene un uso práctico.
  • El multiplicador "+" a continuación de un carácter determina que, para que haya coincidencia, dicho carácter debe estar presente, al menos, una vez en la cadena.
  • El multiplicador "?" a continuación de un carácter indica que, la cadena coincida, dicho carácter deberá estar presente una vez, o ninguna. No habrá coincidencia si aparece mas de una vez.
Cuando veamos la construcción de expresiones regulares a partir de estos patrones elementales, verá que formar una expresión usando únicamente multiplicadores puede arrojar resultados un tanto curiosos. Esto es debido a que PHP analiza las cadenas de manera secuencial no global. (Luego hablaremos de esto).
Aún falta analizar los patrones de alternancia, de paréntesis etc, pero estos los veremos la próxima semana.

Si te hemos ayudado : )

Te agradeceríamos que apoyaras este proyecto



No se te olvide Comentar y Compartir
en:
                          

0 comentarios:

Publicar un comentario