Grupos de captura para transformar CSV a SQL
Clase 19 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
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
Las expresiones regulares pueden convertir texto caótico en datos útiles con precisión y velocidad. Aquí verás cómo extraer títulos y años de un listado de películas con separadores :: y categorías con |, agrupar con paréntesis, y convertir el resultado en SQL o JSON con reemplazos usando grupos de captura. Además, entenderás cuándo usarlas y cuándo no.
¿Por qué las expresiones regulares no lo resuelven todo?
Las regex son como una navaja suiza: siempre útil, pero no reemplaza otras herramientas. Valida la forma, no el significado. Por ejemplo, puede detectar que hay tres dígitos, pero no si esos valores caen en un rango válido; o reconocer que un teléfono empieza con 55 o 777, sin garantizar que el número exista.
- Validan estructura: longitudes, prefijos, rangos simples, patrones repetidos.
- No validan semántica: rangos geográficos correctos o reglas de negocio complejas.
- Asigna responsabilidades: regex para el patrón; el lenguaje o script para las reglas y la lógica.
Idea clave: no busques que las regex solucionen todo. Úsalas donde brillan: detección y extracción rápida de patrones.
¿Cómo estructurar el patrón para extraer título y año?
El archivo tiene un formato constante y explota muy bien con regex. Esto permite separar campos con precisión y preparar la transformación de datos.
¿Qué formato tiene cada línea?
- Un id numérico incremental.
- Separador :: entre campos.
- Un título, un espacio, y el año entre paréntesis: Título (1995).
- Otro :: y una lista de categorías separadas por pipes |.
Ejemplo conceptual: id::Título (Año)::Categoría1|Categoría2.
¿Cómo agrupar con paréntesis y clases de caracteres?
Se usan grupos de captura para reutilizar partes del texto en reemplazos. El grupo 1 puede ser el título, y el grupo 2 el año.
- Ancla de inicio y fin de línea para precisión.
- Dígitos con cuantificador + para el id.
- Separadores :: explícitos.
- Título en una clase de caracteres que incluya letras, espacios y signos que realmente aparecen.
- Año con cuatro dígitos entre paréntesis.
- Lo que sigue no importa ahora: .*.
Ejemplo de patrón descrito:
^\d+::([A-Za-z0-9 ,:()'&!\-]+) \((\d{4})\)::.*$
Puntos prácticos al ajustar la clase de caracteres del título:
- Agrega solo lo necesario: comas, guion medio, comillas, paréntesis, ampersand, signo de admiración.
- Evita meter “todo”: podrías romper el patrón y aceptar basura.
- Escapa lo que el motor requiera: paréntesis, guiones o comillas según el contexto.
- Revisa “no coincidencias” como señal de casos faltantes y corrige con criterio.
¿Cómo convertir el texto a SQL o JSON con reemplazos?
Con los grupos, el reemplazo es directo: el grupo 1 se referencia como $1 y el grupo 2 como $2. Un replace all bien pensado crea salidas listas para usar.
¿Cómo generar SQL con grupos de captura?
- Idea: invertir el orden y escribir primero el año.
- Ejemplo de reemplazo para inserciones:
insert into movies (year, title) values ('$2', '$1');
- Guarda como archivo .sql y ejecútalo; podrían fallar líneas que no coincidan al 100 %, pero el lote útil queda listo.
- Tip: si algo sale mal, usa control z en el editor para deshacer.
¿Cómo producir JSON rápidamente?
- Con el mismo patrón, genera objetos en una línea:
{ "title": "$1", "year": "$2" }
- Rodea con corchetes y, si quieres, aplica un beautifier para formatear.
- También puedes filtrar lo que no haga match y descartarlo como basura durante una iteración.
¿Qué rendimiento y herramientas considerar?
- Motores y lenguajes: en Perl, Go o Java suele ejecutarse en milisegundos; en Python puede tomar segundos; PHP es más lento pero útil.
- Línea de comandos: usa GREP para búsquedas con patrones.
- Edición segura: prueba, ajusta, y luego aplica replace all con posibilidad de deshacer.
Habilidades y conceptos reforzados hoy: - Clases de caracteres bien definidas para títulos con signos reales. - Grupos de captura para reutilizar $1, $2 en reemplazos. - Cuantificadores (+, ) y anclas de línea para precisión. - Escapado correcto de paréntesis y guiones. - Transformación de datos: de texto a SQL o JSON con un patrón. - Depuración por no coincidencia: busca lo que no hace match* para detectar casos faltantes.
¿Tienes un patrón que quieras optimizar o un caso límite que no hace match? Compártelo en los comentarios y lo revisamos juntos.