Greedy vs lazy en regex: cuándo usar cada uno
Clase 9 de 29 • Curso de Expresiones Regulares
Contenido del curso
El lenguaje: caracteres, operadores, y construcciones
- 5

El punto en regex: selecciona cualquier carácter
09:55 min - 6

\d \w \s: las 3 clases que localizan todo
13:55 min - 7

Cuantificadores regex: *, + y ? en acción
17:42 min - 8

Contadores en expresiones regulares
14:02 min - 9

Greedy vs lazy en regex: cuándo usar cada uno
Viendo ahora - 10

Negaciones con gorrito en expresiones regulares
06:49 min - 11

Cómo detectar números telefónicos sin letras
01:06 min - 12

Cómo procesar archivos CSV con millones de líneas
08:00 min
Uso práctico de Expresiones Regulares
- 13

Filtrar logs gigantes con expresiones regulares
07:22 min - 14

Expresiones regulares para URLs HTTP
08:07 min - 15

Regex para validar teléfonos con separadores y extensiones
12:30 min - 16

Validación de emails con regex
13:42 min - 17

Validación de coordenadas GPS con regex
17:16 min - 18

Validar nombres propios con regex
03:21 min
Usos avanzados en Expresiones Regulares
Expresiones Regulares en lenguajes de programación
- 20

Cómo extraer variables de URLs con regex
10:48 min - 21

Regex en múltiples lenguajes con CSV real
03:29 min - 22

Perl: CSV de fútbol en cero segundos
23:35 min - 23

Expresiones regulares en PHP: preg_match con CSV
09:29 min - 24

Extraer empates de archivos masivos con PHP
16:25 min - 25

Python regex para análisis de archivos CSV
21:58 min - 26

Lectura de archivos con BufferedReader en Java
07:59 min - 27

Escapar regex en Java: doble barra
08:48 min - 28

Validación de emails en JavaScript con regex
17:35 min - 29

Grep: filtra archivos masivos con regex
08:18 min
Domina expresiones regulares en CSV y evita errores comunes: aprende a separar columnas con precisión, usar el símbolo de interrogación para controlar greedy/lazy, y capturar la última columna sin cortar datos. Ideal para limpieza de datos, validación y búsqueda en logs.
¿Cómo extraer columnas de un CSV con expresiones regulares?
Para separar columna por columna, el truco está en combinar el punto (.) con cuantificadores y una coma como delimitador. Primero, recuerda que el punto significa «cualquier carácter». Luego, el cuantificador más (+) asegura «uno o más». Sin embargo, por defecto el motor hace el match completo en modo greedy: intenta llevarse lo máximo posible antes de la coma.
¿Qué patrón usar para separar por coma?
- Greedy básico que se come de más:
.+,
- Hacerlo mínimo con lazy para obtener la coincidencia más corta posible por columna:
.+?,
Con find, los matches salen «chiquitos» y en orden: primero la primera columna hasta la coma, luego la segunda, y así sucesivamente.
¿Cómo incluir la última columna si no termina en coma?
Cuando la última columna no tiene coma, necesitas permitir que el match termine en coma o en fin de línea. Crea una clase con la coma o el final:
.+?(,|$)
- El más (+) asegura «siempre hay algo» antes del delimitador.
- El modificador lazy (?) mantiene los matches cortos y consecutivos. Este patrón trae todas las columnas, incluyendo la última aunque cierre con salto de línea.
¿Qué significa greedy y lazy en regex y cómo usar el símbolo de interrogación?
El símbolo de interrogación (?) tiene dos usos clave:
¿Cómo funciona el símbolo de interrogación?
- Cuantificador opcional: indica «cero o uno» del elemento anterior. Por ejemplo,
a?permite que haya o no haya una «a». - Modificador de cuantificador: vuelve lazy a
*o+, es decir, busca el match más pequeño posible. Ejemplo:.+?frente a.+.
Puntos clave: - Sin ?, el motor es greedy: trae «todo lo que pueda» antes del delimitador. - Con ?, el motor es lazy: hace los matches más pequeños posibles y encadena resultados columna por columna. - Con find, verás coincidencias consecutivas bien delimitadas.
¿Qué cuidados prácticos evitan errores al limpiar y validar datos?
Los detalles importan al construir clases, delimitadores y cuantificadores. Evita sorpresas al procesar datos reales.
- Clases de caracteres: pueden incluir rangos y caracteres puntuales. Úsalas para delimitar con coma o fin de línea
(,|$). - Asterisco (*) vs más (+):
*permite «cero o más»;+exige «uno o más». Para columnas,+suele ser más útil. - Editor Atom: marca en rojo cuando la expresión no compila. Útil para detectar corchetes sin cerrar o escapes incorrectos.
- Emojis: pueden representarse como varios caracteres bajo un solo ícono. Evita tratarlos a la ligera.
- Caracteres especiales del español: acentos y la Ñ requieren atención específica.
- Limpieza de CSVs grandes: filas con solo comas agregan ceros en lugar de null y pueden romper promedios o calificaciones.
- Validación de input: las regex ayudan a limpiar entradas, validar formatos y buscar patrones en logs de servidores.
¿Con qué patrón te quedas hoy? Prueba, rompe y ajusta tus expresiones: juega con find, alterna entre greedy y lazy, y cuéntame en qué casos te funcionó mejor.