Perl: CSV de fútbol en cero segundos
Clase 22 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
07:47 min - 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
Viendo ahora - 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
Perl y expresiones regulares trabajan juntos para extraer datos reales de un CSV con precisión y velocidad. Aquí verás, paso a paso, cómo leer un archivo, construir patrones efectivos, capturar grupos y medir el tiempo de ejecución, sin enseñar a programar en Perl, pero explicando cada decisión que impacta el análisis.
¿Qué configura el script en Perl para empezar?
Antes de manipular datos, se prepara un script de Unix con la línea que indica quién lo ejecuta, se activa el modo estricto y se muestran los warnings en pantalla. Se inicializa una variable de tiempo para medir la ejecución y se abre el archivo results.csv en modo lectura. La lectura ocurre línea por línea usando la variable por defecto de Perl, y se valida la entrada con una impresión rápida. Luego se aplica chomp para eliminar saltos de línea y caracteres extra.
¿Cómo se lee el archivo CSV línea por línea?
- Apertura del archivo en modo lectura.
- Iteración línea por línea con la variable por defecto.
- Impresión de prueba para verificar lectura.
- Limpieza con chomp para evitar artefactos.
¿Qué buenas prácticas se aplican en Unix y Perl?
- Shebang para declarar el intérprete del script.
- Modo estricto y warnings visibles.
- Medición de tiempo con time: número de segundos desde 1 de enero de 1970.
¿Cómo construir una expresión regular en Perl para febrero?
Las expresiones regulares en Perl van entre diagonales: /. Se usa la función m de match y anclas de inicio y fin de línea ^ y $. Para filtrar partidos en febrero, se busca un patrón con cuatro dígitos de año, guion, el mes 02 y cualquier secuencia después con un wild card.
- Delimitadores de patrón: /.
- Función de match: m.
- Anclas: ^ (inicio) y $ (fin).
- Clases de caracteres para dígitos y cuantificadores: cuatro dígitos del año, guion, 02, y luego cualquier cosa.
- Carácteres especiales como la diagonal pueden requerir escape: especialmente en contextos tipo https://.
Se contaron aciertos y fallos con dos contadores: uno para match y otro para no match. Al corregir el patrón, se obtuvieron todos los partidos jugados en el mes 02, confirmando la eficacia de la búsqueda.
¿Qué errores comunes se corrigieron?
- Escapar indebidamente el inicio de línea: impedía el match correcto.
- Manejo de clases de caracteres: necesidad de declarar correctamente la clase para dígitos y aplicar cuantificadores exactos.
- Confirmación de integridad del CSV: solo la cabecera no hace match, algo esperado en archivos bien formados.
¿Cómo contar matches y no matches?
- Inicializar contadores para match y no match.
- Incrementar según el resultado del patrón.
- Reportar totales al final para validar cobertura.
¿Cómo extraer campos y medir el rendimiento?
Una vez validado el match, se pasa a extraer datos con grupos de captura. Se agrupan, en orden, el equipo local, el visitante y los marcadores de cada uno. En Perl, la cadena completa queda en $0 y las capturas en $1, $2, $3, $4, según el orden. La lógica de comparación es simple: si el marcador del visitante es mayor que el del local, se imprime el resultado con printf usando máscaras de formato.
¿Cómo imprimir victorias del visitante con printf?
- Comparar valores capturados: visitante > local, diferencia estricta.
- Usar printf para formatear salida: %s para strings y %d para enteros.
- Evitar errores de tipo: alinear máscaras con los valores correctos.
- Reordenar grupos cuando se añade la fecha como nueva captura, ajustando índices de $1 a $5.
- Considerar mínimos detalles del texto: acentos y caracteres especiales; favorecer cuantificadores lazy cuando se requiera lo menos posible entre comas.
¿Qué rendimiento se obtuvo procesando el CSV?
- Variable t inicializada con time para medir ejecución.
- Cálculo de diferencia: time - t en segundos.
- Resultado observado: cero segundos para procesar casi cuarenta mil líneas, extraer campos y comparar marcadores.
- Calidad del match: una línea fuera de patrón, la cabecera del CSV.
¿Te gustaría intentar otro patrón, como empates o victorias del local, o capturar más campos con nuevos grupos? Cuéntalo en los comentarios y di qué otro análisis aplicarías usando expresiones regulares.