Hoja de trucos/conceptos básicos de Regex
Las expresiones regulares (regex o regexp) son una herramienta muy útil para identificar patrones específicos en cualquier texto, lo que ayuda a extraer información independientemente del formato del texto.
Regex se puede usar para validar entradas, web scraping, encontrar cadenas específicas en documentos, validación de sintaxis para compiladores y muchos otros ejemplos.
Regex se usa ampliamente en varios lenguajes de programación que usan casi la misma sintaxis, por lo que este artículo pretende mostrar los operadores básicos de expresiones regulares.
Las siguientes secciones mostrarán los diferentes operadores utilizados para expresiones regulares y algunos ejemplos. También puede probar sus expresiones regulares con algunas explicaciones de ellas en esta página.
Anclajes
Caracteres | Usar |
---|---|
^ | Indica el comienzo de la cadena. Solo coincidirá con la cadena que comienza con los caracteres que siguen |
$ | Indica el final de la cadena. Esto coincidirá con cualquier cadena que termine con los caracteres antes del símbolo '$' |
abc | Coincide con cualquier cadena que contenga la secuencia de caracteres 'abc' |
Algunos ejemplos son:
Ejemplo | Descripción | Ejemplos de cadenas coincidentes |
---|---|---|
^A | Coincide con todas las cadenas que comienzan con A | “A n manzana está en el árbol”, “A nuevo restaurante” |
end$ | Coincide con una cadena que termina con la secuencia de caracteres 'final' | “El fin ”, “Pretendamosterminar ” |
^Hola mundo$ | Coincide con la cadena exacta 'Hola mundo' | “Hola mundo ” |
orden | Coincide con cualquier cadena que contenga el texto 'orden' | “Mi pedido número es 54” |
Cuantificadores
Los cuantificadores se utilizan para representar las veces que queremos que el personaje o grupo de personajes anterior aparezca en nuestra coincidencia.
Caracteres | Usar |
---|---|
* | Indica cero o más |
+ | Indica uno o más |
? | Indica cero o uno |
x{n} | Se utiliza para especificar el número de veces ('n') que debe aparecer el carácter anterior ('x') |
x{n, } | Se utiliza para especificar el número mínimo de veces ('n') que debe aparecer el carácter anterior ('x') |
x{n, m} | Se utiliza para especificar el número mínimo ('n') y máximo ('m') de veces que debe aparecer el carácter anterior ('x') |
Algunos ejemplos son:
Ejemplo | Descripción | Ejemplos de cadenas coincidentes |
---|---|---|
¡hola!* | Coincide con cualquier cadena "hola" seguida de cero o más caracteres "!" | “hola ”, “¡hola! ”, hola!! |
¡hola!+ | Coincide con cualquier cadena "hola" seguida de uno o más caracteres "!" | “¡Hola! ”, “hola!! ” |
¡hola!? | Coincide con cualquier cadena 'hola' seguida de cero o uno '!' caracteres | “hola ”, “¡hola! ” |
(ha){2,4} | Coincide con cualquier cadena que repita el grupo de caracteres 'ha' de dos a cuatro veces | “jaja ”, “jajaja ”, “jajajaja ” |
Operador
Caracteres | Usar |
---|---|
a|b | Coincide con cualquier cadena que contenga 'a' o 'b' |
[ ] | Se usa para representar una lista, por lo que coincide con una cadena que contiene uno de los caracteres dentro de la lista |
Algunos ejemplos son:
Ejemplo | Descripción | Ejemplos de cadenas coincidentes |
---|---|---|
se(a|e) | Coincide con cualquier cadena que contenga el texto 'se' seguido de una 'a' o una 'e' | “ver ”, “mar ” |
a[bcd] | Coincide con cualquier cadena que contenga una 'a' seguida de 'b', 'c' o 'd' | “ab ”, “ac ”, “anuncio ” |
Clases de personajes
Los operadores de clases de caracteres le permiten unir caracteres dentro de una categoría (clase). Estos operadores ofrecen sus negaciones, que son iguales al operador normal pero en mayúsculas.
Caracteres | Usar |
---|---|
\d | Coincide con un único dígito personaje |
\w | Coincide con una sola palabra carácter (letras, números y guión bajo) |
\s | Coincide con un solo espacio en blanco carácter, incluidos tabuladores y saltos de línea |
\D | Coincide con un solo no dígito personaje |
\W | Coincide con una sola no-palabra carácter (letras, números y guión bajo) |
\S | Coincide con un solo espacio no en blanco carácter, incluidos tabuladores y saltos de línea |
. | Coincide con cualquier carácter único |
Banderas
Regex generalmente usa la forma /pattern/
. Al final, podemos usar las siguientes banderas:
Bandera | Descripción |
---|---|
g | El global flag se utiliza para buscar todas las coincidencias individuales dentro de la cadena. Si no se usa, la expresión volverá después de la primera coincidencia |
m | La multilínea flag permite usar ^ y $ como el principio y el final de una línea, no como el principio y el final de la cadena, que puede contener varias líneas |
yo | El insensible flag hace que la expresión regular no distinga entre mayúsculas y minúsculas |
Conclusiones
Regex tiene muchos usos. Puede combinar los operadores simples explicados en este artículo para crear búsquedas de patrones complejos. Un ejemplo es validar una dirección de correo electrónico, esto se puede hacer con la siguiente expresión regular:
^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$
Este ejemplo coincide con una cadena completa para la que busca un patrón con el siguiente orden:
[\w-\.]+
:una combinación de uno o más caracteres de palabras, guiones o puntos@
:el símbolo @([\w-]+\.)+
:una o más combinaciones de uno o más caracteres de palabras o guiones terminados en un punto (para dominios y subdominios en el correo electrónico como email.rackspace.)[\w-]{2,4}
:una combinación de caracteres de 2, 3 o 4 palabras o guiones para la parte final del correo electrónico (com)
Al igual que este ejemplo, hay muchos otros que se pueden implementar fácilmente para diferentes propósitos.