Home | Clases | Programación en PHP | Expresiones regulares o Patrones

Expresiones regulares o Patrones


Introducción

Una expresión regular (regex o patrón) es un un string que describe una serie de reglas a cumplir por otro string del que, en principio, no sabemos nada. Los patrones consumen muchos recursos de cálculo, con lo que es recomendable usarlos solo cuando es necesario.

En general, un patrón estará compuesto de:

  • dos delimitadores, uno de inicio y otro de fin, normalmente con el caracter /
  • uno o varios metacaracteres, que representarán el tipo de reglas que los caracteres del string de entrada deben cumplir


Metacaracteres

Los metacaracteres más comunes son los siguientes:

  • . Concuerda con cualquier caracter
  • ^ Concuerda con el inicio del string
  • $ Concuerda con el final del string
  • \s Concuerda con un espacio en blanco
  • \d Concuerda con un dígito
  • \w Concuerda con una letra o caracter de palabra

Por ejemplo, la expresión agrupada:

/ab[cd]e/

concordará con los strings abce y abde, mientras que la expresión:

/ab[c-e\d]/

concordará con los strings abc, abd, abe y con cualquier combinación de ab más un dígito.


Cuantificadores

Los cuantificadores nos permiten especificar la cantidad de veces que un determinado carácter o metacaracter puede aparecer en el string:

  • * El carácter o metacaracter puede aparecer 0 o más veces
  • + El carácter o metacaracter puede aparecer 1 o más veces
  • ? El carácter o metacaracter puede aparecer 0 o 1 vez
  • {n,m} El carácter o metacaracter puede aparecer al menos n veces, pero no más de m veces, Si sólo incluyo uno de los dos, indicará el mínimo de veces (si indico el primero) o el máximo de veces (si indico el segundo).

De esta manera, la expresión:

/ab?c/

concordará con los strings ac y abc, mientras que la expresión:

/ab{1,3}c/

concordará con los strings abc, abbc y abbbc.


Sub-patrones

Un sub-patrón es un patrón contenido dentro de otro, y se define encerrándolo entre paréntesis. Por ejemplo, el patrón:

/a(bc.)e/

concordará con a seguido de bc más cualquier carácter, y seguido de una e, mientras que:

/a(bc.)+e/

concordará con la letra a, seguido de bc. (bc más cualquier carácter) repetido una o más veces, y seguido de una e.


Clases de caracteres

Son grupos de caractres a buscar encerrados entre corchetes, por ejemplo:

/[A-Za-z]/ o /[a-z]/i (i insensible a mayúsculas o minúsculas)

concordará si encuentra alguna letra mayúscula o minúscula, por ejemplo Abc123 mientras que:

/[0-9]/

concordará si encuentra algún número. De igual modo:

/[^A-Za-z]/

concordará si escribo algún carácter que no esté entre a-z o A-Z mientras que:

/[^0-9]/

concordará si escribo algún carácter que no sea un número.


Comparación con patrones

Para llevar a cabo las comparaciones, PHP proporciona la función preg_match($regex,$string), que devuelve 1 si el patrón se encuentra en el string de entrada, 0 si no se encuentra o false si ocurrió un error:

Existe una web de ayuda para comprobar expresiones regulares, a la que puedes acceder haciendo clic aquí.
Fecha de publicación: 06/09/2019
Asignaturas: desarrollo web en entorno servidor
Temas: php variables bucles arrays
Utilizamos cookies propias y de terceros para mejorar su experiencia en la navegación. Al seguir navegando entendemos que acepta su uso.
Si lo desea, consulte nuestras políticas de privacidad y cookies
ENTENDIDO
[X] Cerrar

Contacta conmigo


[X] Cerrar

Acceso alumnos