Diccionario

Expresión regular

Un patrón de texto que describe qué buscar, como «cualquier correo electrónico» o «números de 5 cifras», para encontrar, validar o reemplazar texto.

Las expresiones regulares usan símbolos especiales: \d es un dígito, + significa «uno o más», ^ y $ marcan el inicio y el final. Así, ^\d{5}$ encaja con un código postal de 5 cifras.

Casi todos los lenguajes y editores las admiten, así como herramientas de terminal como grep. Son potentes pero fáciles de equivocar: pruébalas siempre con varios ejemplos.

Un ejemplo

grep -E "^ERROR" registro.log muestra solo las líneas que empiezan por «ERROR».

Por qué importa

Una expresión regular (regex) es un patrón que describe un conjunto de cadenas de texto y permite buscarlas, validarlas o reemplazarlas. Con una sola línea puedes comprobar si un texto parece un código postal, extraer todas las fechas de un documento o renombrar archivos en bloque. Están disponibles en casi todos los lenguajes y en muchos editores y herramientas, como grep, VS Code o sed.

Los elementos básicos son los caracteres literales y unos metacaracteres: . (cualquier carácter), *, + y ? (repeticiones), [abc] (uno de varios), \d (un dígito), ^ y $ (inicio y final) y los paréntesis para agrupar y capturar partes. Se aprenden poco a poco, y practicar con una herramienta que resalte las coincidencias en tiempo real facilita muchísimo comprender qué hace cada pieza.

Confusiones frecuentes

Se confunden con los comodines de la terminal (*.txt), que son parecidos pero funcionan distinto: en regex, * repite lo anterior, no significa «cualquier cosa». Otro error de principiante es olvidar escapar los caracteres especiales: para buscar un punto literal hay que escribir \.. Además, los cuantificadores son voraces por defecto y capturan lo máximo posible, lo que da resultados inesperados con etiquetas o comillas; se corrigen con la versión perezosa (.*?). Y no sirven para todo: analizar HTML o validar un correo electrónico de forma completa con una regex es frágil.

Preguntas frecuentes

¿Cómo valido un código postal español con regex?

Uno sencillo es ^\d{5}$: exactamente cinco dígitos. No comprueba que el código exista, solo el formato.

¿Las regex son iguales en todos los lenguajes?

La base es común, pero hay diferencias de sintaxis y de funciones avanzadas entre lenguajes. Consulta la documentación del que uses si algo no se comporta como esperas.