jairogarcíarincón

Expresiones regulares o Patrones


30.5K

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 caracteres 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í.


Publicado el 05 de Febrero de 2025

phpvariablesbuclesarrays