12/10/2026 a 2026-10-12? Las expresiones regulares (regex) describen patrones de texto con una notación compacta, y casi todos los lenguajes y editores las entienden. Al principio parecen jeroglíficos, pero con una docena de símbolos se resuelve la mayoría de los casos.
Lo que vas a aprender
- Los caracteres especiales y las clases de caracteres.
- Los cuantificadores y las anclas.
- Los grupos, las capturas y las alternativas.
- La diferencia entre cuantificadores voraces y perezosos.
- Cómo usarlas en Python con el módulo
re. - Patrones útiles para validar datos.
Fundamentos
Caracteres
La mayoría de los caracteres se representan a sí mismos: el patróngato encuentra “gato”. Algunos son especiales: . ^ $ * + ? { } [ ] \ | ( ). Para buscarlos literalmente se escapan con \: \. es un punto.
Clases de caracteres
En Python,
\w incluye por defecto letras con tilde y la ñ.
Cuantificadores
Se aplican a lo que tienen justo delante:
ab+ es “a” seguida de una o más “b”; (ab)+ es “ab” repetido.
Anclas
Para validar que todo el texto cumple un formato se usa
^…$ (o re.fullmatch). Sin anclas, el patrón se busca en cualquier parte.
Grupos y alternativas
( … )agrupa y captura lo que coincide, para usarlo después.(?: … )agrupa sin capturar.(?P<nombre> … )captura con nombre.a|bes una alternativa: “a” o “b”.\1,\2se refieren a lo capturado por el grupo 1, 2…
Voraces y perezosos
Por defecto los cuantificadores son voraces: cogen todo lo posible. En<b>uno</b> y <b>dos</b>, el patrón <b>.*</b> coincide con todo, de la primera <b> a la última </b>. Añadiendo ? se vuelven perezosos (lo mínimo posible): <b>.*?</b> coincide con cada etiqueta por separado.
El módulo re de Python
Se escriben los patrones como cadenas crudasr"…", para que Python no interprete las barras invertidas.
Opciones útiles:
re.IGNORECASE (sin distinguir mayúsculas) y re.MULTILINE.
Ejemplos resueltos
Ejemplo 1 · Extraer números
Ejemplo 1 · Extraer números
Ejemplo 2 · Validar un DNI
Ejemplo 2 · Validar un DNI
Ocho dígitos y una letra mayúscula:La regex solo comprueba el formato. La letra correcta se calcula aparte: es la posición
número % 23 en la cadena "TRWAGMYFPDXBNJZSQVHLCKE".Ejemplo 3 · Buscar correos electrónicos
Ejemplo 3 · Buscar correos electrónicos
Ejemplo 4 · Cambiar el formato de las fechas
Ejemplo 4 · Cambiar el formato de las fechas
Ejemplo 5 · Grupos con nombre
Ejemplo 5 · Grupos con nombre
Ejemplo 6 · Voraz frente a perezoso
Ejemplo 6 · Voraz frente a perezoso
Ejemplo 7 · Teléfonos españoles
Ejemplo 7 · Teléfonos españoles
Nueve dígitos que empiezan por 6, 7, 8 o 9, con espacios opcionales cada tres cifras y prefijo +34 opcional:
Errores frecuentes
- Olvidar escapar el punto.
.es “cualquier carácter”; para un punto literal,\.. - Validar sin anclas.
re.search(r"\d{8}[A-Z]", "abc12345678Zxyz")encuentra coincidencia; usafullmatcho^…$. - No usar cadenas crudas
r"…"en Python:"\b"es un retroceso, no un límite de palabra. - Usar
.*voraz cuando hay varias coincidencias en la misma línea. - Intentar procesar HTML o JSON con regex. Para eso hay analizadores específicos; las regex fallan con estructuras anidadas.
Preguntas frecuentes
¿Qué relación tienen con los autómatas?
¿Qué relación tienen con los autómatas?
Las expresiones regulares (en su forma teórica) describen exactamente los lenguajes que reconoce un autómata finito, como las máquinas de estados. Los motores de regex convierten el patrón en un autómata y lo recorren con el texto. Las regex de los lenguajes modernos añaden extras (referencias hacia atrás) que ya no son “regulares” en sentido estricto.
¿Dónde más se usan?
¿Dónde más se usan?
En los editores de código (buscar y reemplazar), en la terminal (
grep, sed), en hojas de cálculo, en bases de datos (REGEXP en SQL), en la validación de formularios web y en el análisis de registros (logs) de servidores.Temas relacionados
Fundamentos de Python
Cadenas y métodos de texto.
Máquinas de estados
Los autómatas detrás de las regex.
Git
Otra herramienta del día a día.