Descargar PDF

La expresión regular es un grupo de caracteres o símbolos que se utiliza para encontrar un patrón específico de algún texto; se les puede llamar comodines con esteroides, si se quiere. Como desarrollador, el dominio de las expresiones regulares puede ser una poderosa herramienta para tener en su cinturón de herramientas, que sin duda va a tener que utilizar en sus programas en algún momento, buscar y reemplazar el uso de expresiones regulares en IDEs es muy útil a veces y me encuentro con ellos en la línea de comandos todos los días.

Diferentes aplicaciones y lenguajes de programación pueden tener diferentes implementaciones para las expresiones regulares, pero los conceptos subyacentes son en su mayoría los mismos. En este post, voy a explicar todo lo que necesitas saber sobre las expresiones regulares.

Una expresión regular es un patrón que se compara con una cadena de asunto de izquierda a derecha. La palabra «expresión regular» es un trabalenguas, normalmente encontrarás el término abreviado como «regex» o «regexp». La expresión regular se utiliza para reemplazar un texto dentro de una cadena, validar un formulario, extraer una subcadena de una cadena basada en una coincidencia de patrón, y mucho más.

Imagina que estás escribiendo una aplicación y quieres establecer las reglas para cuando un usuario elige su nombre de usuario. Queremos permitir que el nombre de usuario contenga letras, números, guiones bajos y guiones. También queremos limitar el número de caracteres en el nombre de usuario para que no se vea feo. Utilizamos la siguiente expresión regular para validar un nombre de usuario:

Expresión regular

La expresión regular anterior puede aceptar las cadenas john_doe, jo-hn_doe y john12_as. No coincide con Jo porque esa cadena contiene letras mayúsculas y además es demasiado corta.

Tabla de contenidos

  • Comparadores básicos
  • Carácter meta
  • Parada completa
  • Conjunto de caracteres
  • Conjunto de caracteres negados
  • Repeticiones
  • La Estrella
  • El Plus
  • El Signo de interrogación
  • Rayas
  • Grupo de caracteres
  • Alternancia
  • Caracteres especiales de escape
  • Ancores
  • Caret
  • Dólar
  • Conjuntos de caracteres abreviados
  • Búsqueda
  • Búsqueda positiva
  • Búsqueda negativa
  • Búsqueda positiva
  • Bandas
  • Insensible a las mayúsculas
  • Búsqueda global
  • Multilínea
  • Coincidencia rápida vs. perezosa

Coincidencias básicas

Una expresión regular no es más que un patrón de caracteres que utilizamos para realizar
búsqueda en un texto. Por ejemplo, la expresión regular the significa: la letra
t, seguida de la letra h, seguida de la letra e.

the => The fat cat sat on the mat.

Prueba la expresión regular

La expresión regular 123 coincide con la cadena 123. La expresión regular se compara con una cadena de entrada comparando cada carácter de la expresión regular
con cada carácter de la cadena de entrada, uno tras otro. Las expresiones regulares
suelen distinguir entre mayúsculas y minúsculas, por lo que la expresión regular Theno coincidiría con la cadena the.

The => The fat cat sat on the mat.

Prueba de la expresión regular

Caracteres meta

Los caracteres meta son los componentes de las expresiones regulares. Los meta
caracteres no se sostienen por sí mismos, sino que se interpretan de alguna
manera especial. Algunos metacaracteres tienen un significado especial y se escriben dentro de corchetes. Los metacaracteres son los siguientes:

2.1 Punto final

Punto final . es el ejemplo más sencillo de metacarácter. El carácter meta .
coincide con cualquier carácter simple. No coincide con los caracteres de retorno o de nueva línea.
Por ejemplo, la expresión regular .ar significa: cualquier carácter, seguido de la letra a, seguido de la letra r.

.ar => The car parked in the garage.

Prueba la expresión regular

2.2 Conjunto de caracteres

Los conjuntos de caracteres también se denominan clase de caracteres. Los corchetes se utilizan para
especificar conjuntos de caracteres. Utilice un guión dentro de un conjunto de caracteres para especificar el rango de caracteres. El orden del rango de caracteres dentro de los corchetes
no importa. Por ejemplo, la expresión regular he significa: una mayúscula T o una minúscula t, seguida de la letra h, seguida de la letra e.

he => The car parked in the garage.

Probar la expresión regular

Un punto dentro de un conjunto de caracteres, sin embargo, significa un punto literal. La expresión regular
ar significa: un carácter minúsculo a, seguido de la letra r,
seguido de un carácter de punto ..

ar => A garage is a good place to park a car.

Prueba la expresión regular

2.2.1 Conjunto de caracteres negados

En general, el símbolo del signo de intercalación representa el inicio de la cadena, pero cuando se
escribe después del corchete de apertura niega el conjunto de caracteres. Por
ejemplo, la expresión regular ar significa: cualquier carácter excepto c,
seguido del carácter a, seguido de la letra r.

ar => The car parked in the garage.

Prueba la expresión regular

2.3 Repeticiones

Los siguientes metacaracteres +, * o ?se utilizan para especificar cuántas veces puede aparecer un subpatrón. Estos metacaracteres actúan de forma diferente en distintas
situaciones.

2.3.1 La estrella

El símbolo * coincide con cero o más repeticiones del coincidente anterior. La expresión regular a* significa: cero o más repeticiones del carácter minúsculo precedente a. Pero si aparece después de un conjunto o clase de caracteres, entonces encuentra las repeticiones de todo el conjunto de caracteres. Por ejemplo, la expresión regular * significa: cualquier número de letras minúsculas seguidas.

* => The car parked in the garage #21.

Prueba la expresión regular

El símbolo * puede utilizarse con el metacarácter . para coincidir con cualquier cadena de
caracteres .*. El símbolo * puede utilizarse con el carácter de espacio en blanco \s
para coincidir con una cadena de caracteres de espacio en blanco. Por ejemplo, la expresión
\s*cat\s* significa: cero o más espacios, seguidos del carácter minúsculo c,
seguido del carácter minúsculo a, seguido del carácter minúsculo t, seguido de cero o más espacios.

\s*cat\s* => The fat cat sat on the concatenation.

Prueba la expresión regular

2.3.2 El Plus

El símbolo + coincide con una o más repeticiones del carácter precedente. Por ejemplo, la expresión regular c.+t significa: letra minúscula c, seguida de al menos un carácter, seguido del carácter minúsculo t. Hay que aclarar que t es el último t de la frase.

c.+t => The fat cat sat on the mat.

Prueba la expresión regular

2.3.3 El signo de interrogación

En la expresión regular el metacarácter ? hace que el carácter precedente
sea opcional. Este símbolo coincide con cero o una instancia del carácter precedente. Por ejemplo, la expresión regular ?he significa: Opcional la letra mayúscula T, seguida del carácter minúsculo h, seguido del carácter minúsculo e.

he => The car is parked in the garage.

Prueba la expresión regular

?he => The car is parked in the garage.

Prueba la expresión regular

2.4 Tirantes

En la expresión regular los tirantes que también se llaman cuantificadores se utilizan para
especificar el número de veces que se puede
repetir un carácter o un grupo de caracteres. Por ejemplo, la expresión regular {2,3} significa: Coincidir con al menos 2 dígitos pero no más de 3 ( caracteres en el rango de 0 a 9).

{2,3} => The number was 9.9997 but we rounded it off to 10.0.

Probar la expresión regular

Podemos omitir el segundo número. Por ejemplo, la expresión regular
{2,} significa: Coincidir con 2 o más dígitos. Si además eliminamos la coma la expresión regular
{3} significa: Coincidir exactamente con 3 dígitos.

{2,} => The number was 9.9997 but we rounded it off to 10.0.

Prueba la expresión regular

{3} => The number was 9.9997 but we rounded it off to 10.0.

Prueba la expresión regular

2.5 Grupo de caracteres

El grupo de caracteres es un grupo de sub-patrones que se escribe dentro de paréntesis (…). Como hemos dicho antes, si ponemos un cuantificador después de un carácter, se repetirá el carácter anterior. Pero si ponemos el cuantificador después de un grupo de caracteres entonces se repite todo el grupo de caracteres. Por ejemplo, la expresión regular (ab)* coincide con cero o más repeticiones del carácter ab. También podemos utilizar la alternancia | meta carácter dentro del grupo de caracteres. Por ejemplo, la expresión regular (c|g|p)ar significa: carácter minúsculo c, g o p, seguido del carácter a, seguido del carácter r.

(c|g|p)ar => The car is parked in the garage.

Probar la expresión regular

2.6 Alternancia

En la expresión regular se utiliza la barra vertical | para definir la alternancia. La alternancia es como una condición entre varias expresiones. Ahora, usted puede estar pensando que el conjunto de caracteres y la alternancia funcionan de la misma manera. Pero la gran diferencia entre el conjunto de caracteres y la alternancia es que el conjunto de caracteres funciona a nivel de caracteres, pero la alternancia funciona a nivel de expresiones. Por ejemplo, la expresión regular (T|t)he|car significa: carácter mayúsculo T o minúsculo t, seguido del carácter minúsculo h, seguido del carácter minúsculo e o del carácter minúsculo c, seguido del carácter minúsculo a, seguido del carácter minúsculo r.

(T|t)he|car => The car is parked in the garage.

Probar la expresión regular

2.7 Escapar el carácter especial

La barra invertida \se utiliza en la expresión regular para escapar el siguiente carácter. Esto
nos permite especificar un símbolo como carácter coincidente, incluidos los caracteres reservados
{ } / \ + * . $ ^ | ?. Para utilizar un carácter especial como carácter coincidente, anteponga

Por ejemplo, la expresión regular . se utiliza para coincidir con cualquier carácter excepto
newline. Ahora, para que coincida con . en una cadena de entrada, la expresión regular (f|c|m)at\.? significa: letra minúscula f, c o m seguida del carácter minúsculo
a, seguido de la letra minúscula t, seguido del carácter opcional ..

(f|c|m)at\.? => The fat cat sat on the mat.

Prueba la expresión regular

2.8 Anclas

En las expresiones regulares, utilizamos anclas para comprobar si el símbolo coincidente es el
símbolo inicial o el símbolo final de la cadena de entrada. Las anclas son de dos tipos: El primer tipo es Caret ^que comprueba si el carácter coincidente es el comienzo
de la entrada y el segundo tipo es Dollar $que comprueba si el carácter coincidente
es el último carácter de la cadena de entrada.

2.8.1 Caret

El símbolo Caret ^se utiliza para comprobar si el carácter coincidente es el primer carácter
de la cadena de entrada. Si aplicamos la siguiente expresión regular ^a (si a es
el símbolo inicial) a la cadena de entrada abc coincide con a. Pero si aplicamos la expresión regular ^b a la cadena de entrada anterior no coincide con nada. Porque en la cadena de entrada abc b no es el símbolo inicial. Echemos un vistazo a otra expresión regular ^(T|t)he que significa: el carácter en mayúscula T o el carácter en minúscula t es el símbolo de inicio de la cadena de entrada, seguido por
el carácter en minúscula h, seguido por el carácter en minúscula e.

(T|t)he => The car is parked in the garage.

Prueba de la expresión regular

^(T|t)he => The car is parked in the garage.

Prueba de la expresión regular

2.8.2 Dólar

El símbolo del dólar $se utiliza para comprobar si el carácter coincidente es el último carácter
de la cadena de entrada. Por ejemplo, la expresión regular (at\.)$ significa: un carácter minúsculo a, seguido de un carácter minúsculo t, seguido de un carácter . y el coincidente debe ser el final de la cadena.

(at\.) => The fat cat. sat. on the mat.

Prueba de la expresión regular

(at\.)$ => The fat cat. sat. on the mat.

Prueba de la expresión regular

Conjuntos de caracteres abreviados

La expresión regular proporciona abreviaturas para los conjuntos de caracteres de uso común, que ofrecen abreviaturas convenientes para las expresiones regulares de uso común. Los conjuntos de caracteres abreviados son los siguientes:

Lookaround

Lookbehind y lookahead (también llamados lookaround) son tipos específicos de
grupos que no se capturan (Se utilizan para coincidir con el patrón pero no se incluyen en la lista de coincidencia). Los lookaheads se utilizan cuando tenemos la condición de que este patrón está precedido o seguido por otro patrón determinado. Por ejemplo, queremos obtener todos los números precedidos por el carácter $ de la siguiente cadena de entrada .44 and .88. Utilizaremos la siguiente expresión regular (?<=$)* que significa: obtener todos los números que contengan el carácter . y estén precedidos por el carácter $. A continuación se muestran las búsquedas que se utilizan en las expresiones regulares:

4.1 Lookahead positivo

El lookahead positivo afirma que la primera parte de la expresión debe ser
seguido por la expresión lookahead. La coincidencia devuelta sólo contiene el texto que coincide con la primera parte de la expresión. Para definir una búsqueda positiva, se utilizan paréntesis. Dentro de esos paréntesis, se utiliza un signo de interrogación con igual, así (?=…). La expresión Lookahead se escribe después del signo igual dentro de los paréntesis. Por ejemplo, la expresión regular
(T|t)he(?=\sfat) significa: coincidir opcionalmente con la letra minúscula t o la letra mayúscula T, seguida de la letra h, seguida de la letra e. Entre paréntesis definimos el lookahead positivo que indica al motor de expresión regular que debe coincidir con The o the que van seguidos de la palabra fat.

(T|t)he(?=\sfat) => The fat cat sat on the mat.

Prueba de la expresión regular

4.2 Lookahead negativo

El lookahead negativo se utiliza cuando necesitamos obtener todas las coincidencias de la cadena de entrada
que no van seguidas de un patrón. El lookahead negativo se define igual que el lookahead positivo, pero la única diferencia es que en lugar del carácter = utilizamos el carácter ! de negación, es decir, (?!…). Veamos la siguiente expresión regular (T|t)he(?!\sfat) que significa: obtener todas las palabras The o the de la cadena de entrada que no estén seguidas por la palabra fat precedida por un carácter de espacio.

(T|t)he(?!\sfat) => The fat cat sat on the mat.

Prueba la expresión regular

4.3 Lookbehind positivo

El lookbehind positivo se utiliza para obtener todas las coincidencias que están precedidas por un patrón específico
. La búsqueda positiva se indica con (?<=…). Por ejemplo, la expresión regular (?<=(T|t)he\s)(fat|mat) significa: obtener todas las palabras fat o mat de la cadena de entrada que están después de la palabra The o the.

(?<=(T|t)he\s)(fat|mat) => The fat cat sat on the mat.

Prueba la expresión regular

4.4 Lookbehind negativo

El lookbehind negativo se utiliza para obtener todas las coincidencias que no están precedidas por un patrón específico
. La búsqueda negativa se indica con (?<!…). Por ejemplo, la expresión regular (?<!(T|t)he\s)(cat) significa: obtiene todas las cat palabras de la cadena de entrada que no están después de la palabra The o the.

(?<!(T|t)he\s)(cat) => The cat sat on cat.

Prueba la expresión regular

Banderas

Las banderas también se llaman modificadores porque modifican la salida de una expresión regular
. Estas banderas se pueden utilizar en cualquier orden o combinación, y son una
parte integral de la RegExp.

5.1 Insensible a mayúsculas y minúsculas

El modificador ise utiliza para realizar una coincidencia insensible a mayúsculas y minúsculas. Por ejemplo, la expresión regular /The/gi significa: letra mayúscula T, seguida del carácter minúsculo h, seguido del carácter e. Y al final de la expresión regular la bandera i indica al motor de la expresión regular que ignore las mayúsculas y minúsculas. Como puede ver, también proporcionamos la bandera g porque queremos buscar el patrón en toda la cadena de entrada.

The => The fat cat sat on the mat.

Prueba la expresión regular

/The/gi => The fat cat sat on the mat.

Prueba la expresión regular

5.2 Búsqueda global

El modificador g se utiliza para realizar una coincidencia global (encontrar todas las coincidencias en lugar de detenerse después de la primera coincidencia). Por ejemplo, la expresión regular /.(at)/g significa: cualquier carácter excepto nueva línea, seguido del carácter minúsculo a, seguido del carácter minúsculo t. Como proporcionamos la bandera g al final de la expresión regular ahora encontrará todas las coincidencias en la cadena de entrada, no sólo la primera (que es el comportamiento por defecto).

/.(at)/ => The fat cat sat on the mat.

Prueba de la expresión regular

/.(at)/g => The fat cat sat on the mat.

Prueba de la expresión regular

5.3 Multilínea

El modificador m se utiliza para realizar una coincidencia multilínea. Como hemos comentado anteriormente
las anclas (^, $)se utilizan para comprobar si el patrón es el principio de la entrada o el final de la cadena de entrada. Pero si queremos que las anclas funcionen en cada línea utilizamos la bandera
m. Por ejemplo, la expresión regular /at(.)?$/gm significa: minúscula
carácter a, seguido de minúscula t, opcionalmente cualquier cosa excepto
nueva línea. Y debido a la bandera m ahora el motor de la expresión regular coincide con el patrón al final de cada línea en una cadena.

/.at(.)?$/ => The fat
cat sat
on the mat.

Prueba la expresión regular

"/.at(.)?$/gm" => The fat
cat sat
on the mat.

Prueba la expresión regular

Comparación codiciosa vs perezosa

Por defecto regex hará coincidencia codiciosa, significa que coincidirá siempre que
sea posible. Podemos usar ? para hacer coincidir de manera perezosa significa lo más corto posible

/(.*at)/ => The fat cat sat on the mat.

Prueba la expresión regular

/(.*?at)/ => The fat cat sat on the mat.

Prueba la expresión regular

Y con esto, este post llega a su fin. Espero que este post haya sido útil. Asegúrate de practicar lo que has aprendido usando servicios como regexr.com o regex101.com.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.