Las expresiones regulares (regex o regexp) son una poderosa herramienta para buscar, reemplazar y validar texto usando patrones. Se utilizan en todos los lenguajes de programación, editores de texto y línea de comandos. Aunque las expresiones regulares pueden parecer complicadas a primera vista, los conceptos básicos son bastante simples. En esta guía, pasaremos de lo básico a las técnicas avanzadas.
Qué son las expresiones regulares
Una expresión regular es una secuencia de caracteres que describe un patrón de texto. Por ejemplo, la expresión \d{3}-\d{2}-\d{2} describe un número de teléfono con el formato "123-45-67". En lugar de buscar un texto específico, la expresión regular le permite buscar por pattern: cualquier texto que coincida con un formato determinado.
Regex son compatibles con los principales lenguajes de programación: JavaScript, Python, PHP, Java, C#, Go, Ruby y otros. La sintaxis es prácticamente la misma, aunque existen ligeras diferencias entre las implementaciones.
Sintaxis básica
Caracteres literales
La expresión regular más simple es solo texto. La expresión hello encontrará la palabra "hola" en el texto. La mayoría de los símbolos coinciden automáticamente.
Metacaracteres
Los caracteres especiales tienen un significado especial en expresiones regulares:
.— cualquier carácter (excepto nueva línea)^es el comienzo de la línea$— fin de línea\d— cualquier número (0-9)\w— cualquier letra, número o guión bajo\s— carácter de espacio (espacio, tabulación, nueva línea)\b— límite de palabra
Las letras mayúsculas significan lo contrario: \D no es un número, \W no es una letra, \S no es un espacio.
Clases de personajes
Los corchetes definen el juego de caracteres:
[abc]— símbolo a, b o c[a-z]— cualquier letra latina minúscula[A-Z0-9]— letra mayúscula o número[^abc]— cualquier carácter excepto a, b, c[а-яА-ЯіІїЇєЄґҐ]— Letras ucranianas
Cuantificadores
Los cuantificadores determinan el número de repeticiones:
*— 0 o más veces+— 1 o más veces?— 0 o 1 vez{3}— exactamente 3 veces{2,5}— de 2 a 5 veces{3,}— 3 o más veces
Ejemplos: \d+ - uno o más números, [a-z]{2,4} - de 2 a 4 letras minúsculas.
Grupos y alternativas
Agrupación
Los paréntesis () agrupan partes de una expresión y capturan el texto encontrado:
(\d{2})-(\d{2})-(\d{4})— fecha con tres grupos (día, mes, año)(?:abc)— grupo sin captura (para velocidad)
Alternativas
El símbolo | significa "o":
cat|dog— "gato" o "perro"(Mon|Tue|Wed|Thu|Fri)— cualquier día laborable
Plantillas típicas
Dirección de correo electrónico
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
URL
https?://[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(/[^\s]*)?
Teléfono (Ucrania)
\+?380[\s-]?\d{2}[\s-]?\d{3}[\s-]?\d{2}[\s-]?\d{2}
Dirección IPv4
\b(?:\d{1,3}\.){3}\d{1,3}\b
Fecha (DD.MM.AAAA)
(?:0[1-9]|[12]\d|3[01])\.(?:0[1-9]|1[0-2])\.\d{4}
Mirada hacia adelante y hacia atrás
Construcciones avanzadas para comprobar el contexto sin incluirlo en el resultado:
(?=...)— anticipación positiva: el texto posterior debe coincidir con el patrón(?!...)- anticipación negativa: el texto posterior NO debe coincidir con(?
Ejemplo: \d+(?= грн) — encontrará números antes de "UAH" (UAH 100 → captura "100").
Banderas (modificadores)
i— no distingue entre mayúsculas y minúsculasg— búsqueda global (encuentra todas las coincidencias,no sólo el primero)m- modo multilínea (^y$funcionan por línea)s— el punto.también coincide con la nueva línea
Consejos para un uso eficaz
- Empiece simple: primero escriba una plantilla básica y luego vuélvase más compleja
- Prueba con diferentes datos - prueba tanto en casos positivos como negativos
- Evita la codicia - usa
*?y+?para cuantificadores perezosos - Comentar expresiones complejas: utilice el indicador
xpara expresiones regulares legibles - No analice HTML con expresiones regulares - use el analizador DOM
Práctica: probar expresiones regulares en línea
La mejor manera de aprender expresiones regulares es la práctica. Utilice nuestro probador de expresiones regulares para resaltar coincidencias en tiempo real y ayudarlo a comprender cómo funciona su patrón.
Conclusión
Las expresiones regulares son una herramienta indispensable para cualquier desarrollador. Le permiten buscar, validar y transformar texto de manera eficiente. Comience con patrones simples, aprenda gradualmente nuevas construcciones y, con el tiempo, las expresiones regulares se convertirán en su poderoso aliado cuando trabaje con datos de texto.