regex-literales-y-caracteres-especiales

Literales y caracteres especiales en Regex

Para trabajar empezar a trabajar con consultas Regex, lo primero es empezar por las dos patrones más sencillos: literales y caracteres especiales.

Vamos a verlos 👇

Qué son los literales en Regex

Los literales son simplemente patrones exactos que buscamos en una cadena de texto (es decir, mismos caracteres, en el mismo orden).

Cuando escribimos un literal en una expresión regular, estamos indicando que queremos encontrar ese exactamente ese texto, en el texto que estamos evaluando.

Por ejemplo, si queremos encontrar la palabra "hola" en una cadena de texto, podemos escribir:

hola

Esto coincidirá con cualquier aparición exacta de la palabra "hola" en el texto. Vamos a verlo en funcionamiento,

hola, ¿cómo estás?

¡Hola, mundo!

hola123 y hola mundo

En el ejemplo, podemos observar que:

  • En el primer caso, la palabra "hola" coincide de manera exacta con la cadena.
  • En el segundo ejemplo, no hay coincidencia, ya que el literal "hola" no tiene en cuenta la mayúscula "H".
  • En el tercer caso, coincide dos veces: la primera dentro de "hola123" y la segunda en "holamundo".

Si quisiéramos ignorar las mayúsculas y minúsculas, usaríamos un modificador (lo veremos en su propio artículo).

Los literales son las búsquedas más sencillas. Cuando empiezan a tener gracia es cuando se mezclan con caracteres especiales y cuantificadores.

Qué son los caracteres especiales en Regex

Los caracteres especiales son aquellos que puede cumplir más de un caracter (por ejemplo todas las letras, o todos los dígitos).

Estos caracteres permiten crear patrones más complejos que simplemente buscar literales.

A continuación, se presentan algunos de los caracteres especiales más utilizados en Regex:

Aquí tienes la lista convertida en una tabla:

SímboloCoincide con
.Cualquier carácter
\wCualquier carácter alfanumérico
\WCualquier carácter que no sea alfanumérico
\dCualquier dígito
\DCualquier carácter que no sea un dígito

Alfanumérico significa letra o número, es decir, a-z, A-Z, o 0-9]

Vamos a verlo con un ejemplo

abc123 123!@#

Fecha: 2023-09-15

Hay 25 personas aquí
  • El uso de \w encuentra todos los caracteres alfanuméricos, mientras que \W busca caracteres no alfanuméricos.
  • Por otro lado, \d busca números, y \D busca cualquier cosa que no sea un número.

En ejemplo anterior, prueba a poner \w, \W, \d o \D

Escapando caracteres especiales

Si queremos usar un carácter especial como un literal, necesitamos escaparlo usando la barra invertida (\).

Escapar significa tratar un carácter especial como si fuera un literal normal, eliminando su significado especial.

Por ejemplo, si quisiéramos buscar un punto (.) literal en una cadena de texto, no podemos poner . porque en RegEX un punto significa “cualquier caracter”.

Por lo que debemos escaparlo, así:

\.

Vamos a verlo en un ejemplo

archivo.txt

No hay punto aquí

Versión 1.0.3

En este ejemplo,

  • En la primera línea, coincide únicamente con el carácter "." que aparece en "archivo.txt"
  • En la segunda línea, como no hay ningún punto en el texto, no hay coincidencias
  • En la tercera línea, el patrón coincide con todos los puntos en "1.0.3", ya que están presentes en el texto