Las expresiones regulares, también conocidas como regex, son patrones que permiten buscar, filtrar, validar y manipular texto de forma precisa. Se utilizan en programación, administración de sistemas, editores de texto, herramientas de línea de comandos y análisis de archivos.
En este artículo veremos qué son las expresiones regulares, cómo funcionan sus símbolos básicos y cómo aplicarlas con ejemplos prácticos. El objetivo es que puedas entender patrones comunes y utilizarlos para encontrar coincidencias en texto, logs, comandos o archivos de configuración.
👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis
👉 También te dejo por aquí una guía de comandos Linux por categorías
BRE vs ERE: dos modos de expresiones regulares
- BRE (básicas): modo tradicional.
- ERE (extendidas): más cómodo (menos escapes).
En la práctica:
- grep suele usar BRE por defecto.
- grep con la opción para extendidas usa ERE.
Tabla de las expresiones regurales
| Expresión | Significado | Ejemplo | Coincide con |
|---|---|---|---|
| . | Cualquier carácter, excepto salto de línea | c.sa | casa, cosa, cusa |
| ^ | Inicio de una línea o cadena | ^Hola | Líneas que empiezan por Hola |
| $ | Final de una línea o cadena | fin$ | Líneas que terminan en fin |
| * | Cero o más repeticiones | go*gle | ggle, gogle, google |
| + | Una o más repeticiones | go+gle | gogle, google |
| ? | Cero o una repetición | colou?r | color, colour |
| {n} | Exactamente n repeticiones | [0-9]{3} | 123, 456 |
| {n,} | n o más repeticiones | [0-9]{2,} | 12, 1234 |
| {n,m} | Entre n y m repeticiones | [0-9]{2,4} | 12, 123, 1234 |
| [abc] | Cualquier carácter dentro del grupo | c[ao]sa | casa, cosa |
| [^abc] | Cualquier carácter que no esté en el grupo | [^0-9] | Letras, símbolos o espacios |
| [a-z] | Rango de caracteres | [a-z]+ | linux, regex |
| [0-9] | Cualquier número del 0 al 9 | [0-9]+ | 123, 2024 |
| \d | Dígito numérico | \d+ | 123, 45 |
| \D | Cualquier carácter que no sea dígito | \D+ | linux, abc |
| \w | Letra, número o guion bajo | \w+ | usuario_1 |
| \W | Cualquier carácter que no sea \w | \W+ | !, -, espacio |
| \s | Espacio en blanco | hola\smundo | hola mundo |
| \S | Cualquier carácter que no sea espacio | \S+ | texto, abc123 |
| () | Agrupa una parte del patrón | (ab)+ | ab, abab |
| ` | ` | Alternativa lógica, significa “o” | `linux |
| \ | Escapa caracteres especiales | \. | Un punto literal . |
Tools habituales para expresiones regulares
- grep: buscar patrones.
- sed: sustituciones y transformaciones.
- awk: patrones + acciones por campos.
Si trabajas mucho con texto, también te puede interesar: Comando awk.
Metacaracteres esenciales
- . cualquier carácter.
- ^ inicio de línea.
- $ fin de línea.
- * cero o más repeticiones del elemento anterior.
- [] clase de caracteres.
- [^] clase negada.
Ejemplos:
# Líneas que empiezan por "Error"
grep '^Error' archivo.log
# Líneas que terminan con un punto
grep '\.$' texto.txt
# Contiene "abc" + cualquier carácter + "x"
grep 'abc.x' archivo.txtCuantificadores (ERE) y rangos
En ERE (por ejemplo, grep en modo extendido) dispones de cuantificadores como más, opcional y rangos:
# Uno o más espacios
grep -E ' +' archivo.txt
# Número de 1 a 3 dígitos
grep -E '^[0-9]{1,3}$' archivo.txtAlternancia y agrupación (ERE)
# Coincide con "cat" o "dog"
grep -E 'cat|dog' archivo.txt
# Coincide con "http" o "https"
grep -E '^https?://' urls.txtEn GNU sed puedes habilitar ERE con la opción extendida:
sed -E 's/colou?r/COLOR/g' archivo.txtClases POSIX (más portables)
- [[:digit:]] dígitos
- [[:alpha:]] letras
- [[:alnum:]] alfanumérico
- [[:space:]] espacios
grep -E '^[[:digit:]]+$' archivo.txtRecetas útiles con grep
Búsqueda recursiva con número de línea:
grep -R --line-number --color=auto -E 'pattern' /rutaIgnorar mayúsculas y minúsculas:
grep -i -E 'error|fail' archivo.logMostrar contexto:
grep -n -C 2 -E 'ERROR' archivo.logError típico: regex vs glob del shell
No es lo mismo un comodín del shell (glob) que una expresión regular. Por eso conviene usar comillas para que el shell no interprete caracteres:
grep -E '.*\.log$' lista.txtMini recetario (patrones prácticos)
# Email “útil” para logs (no perfecto)
grep -E '[[:alnum:]._%-]+@[[:alnum:].-]+\.[[:alpha:]]{2,}' archivo.txt
# IPv4 simple
grep -E '(^|[^0-9])([0-9]{1,3}\.){3}[0-9]{1,3}([^0-9]|$)' archivo.txt
# Fecha tipo 2026-05-13
grep -E '^[0-9]{4}-[0-9]{2}-[0-9]{2}$' archivo.txtConclusión
Las expresiones regulares son una herramienta muy potente para trabajar con texto de forma rápida y flexible. Aunque al principio pueden parecer difíciles, entender sus elementos básicos como caracteres, rangos, cuantificadores y anclas permite crear patrones útiles para muchas tareas.
Dominar las expresiones regulares ayuda a mejorar la productividad en Linux, programación, análisis de logs y automatización. Con práctica, los patrones regex se convierten en una habilidad esencial para buscar información, validar datos y procesar texto de manera eficiente.
📌 Referencia oficial: grep(1) — man7.org
