🏆 Gimnasio Regex: Ejercicios para Todos los Niveles

¡Bienvenido al dojo de expresiones regulares!

Aquí tienes una colección meticulosamente organizada de ejercicios para dominar regex desde cero hasta nivel ninja.


🏅 Nivel Starter (Básico)

Objetivo: Familiarizarse con sintaxis básica

  1. Encuentra números de 3 dígitos:

    \b\d{3}\b
  2. Busca palabras que terminen con "ción":

    ción\b
  3. Localiza líneas vacías:

    ^$

Ejemplo de dataset:

123
hola
acción
(espacio vacío aquí)

🥈 Nivel Express (Intermedio)

Objetivo: Manejar patrones más complejos

  1. Palabras con 2-3 vocales al final:

    \b\w*[aeiou]{2,3}\b
  2. URLs que comienzan con http/https:

    ^https?://\S+
  3. Líneas que terminan con "!":

    .*!$

Dataset de prueba:

http://ejemplo.com
¡Hola mundo!
regex es genial!
https://seguro.com

🥇 Nivel Booster (Avanzado)

Objetivo: Dominar grupos y capturas

  1. Extraer usuario y dominio de emails:

    ^(\w+)@([a-z]+\.[a-z]{2,})$
  2. Reorganizar "Apellido, Nombre":

    ^(\w+),\s(\w+)$  → Reemplazar con: \2 \1
  3. Capturar áreas telefónicas sin paréntesis:

    \b(\d{3})-\d{3}-\d{4}\b

Ejemplo:

perez,juan → juan perez
555-123-4567 → 555
user@mail.com → user y mail.com

🏆 Nivel Challenger (Experto)

Objetivo: Resolver problemas del mundo real

  1. Validar direcciones en 3 formatos:

    ^(\d+\s[A-Z]\w+\s(St|Ave|Rd))$|^([A-Z]\w+\s\d+)$|^(PO Box \d+)$
  2. Patrones de trading (velas verdes consecutivas):

    Close > Open(\nClose > Open){2,}
  3. Validador de CURP mexicana:

    ^[A-Z]{4}\d{6}[HM][A-Z]{2}[A-Z\d]{3}$

Dataset complejo:

123 Main St
Close > Open
Close > Open
Close > Open
PEBJ880427HDFLRN01

🧙 Nivel Godmode (Élite)

Objetivo: Dominio absoluto de regex

  1. Analizador léxico para mini lenguaje:

    \b(if|else|while)\b|\d+|[\+\-*/=]|\b\w+\b
  2. Extraer relaciones de bases de datos SQL:

    (?i)FROM\s+(\w+)(?:\s+(?:AS\s+)?\w+)?(?:\s*,\s*(\w+)(?:\s+(?:AS\s+)?\w+)?)*
  3. Parser de expresiones matemáticas:

    (\()|(\))|(-?\d+\.?\d*)|([+\-*/^])

Reto final:

SELECT * FROM users AS u, orders o WHERE u.id = o.user_id
if (x > 5) { y = x * 2; }

📊 Banco de Datos para Practicar

Adjunta estos datasets a tu data.txt:

### Sección Starter ###
123
4567
acción
computación
(esta línea está vacía)

### Sección Intermedia ###
http://sitio.com
https://seguro.net
¡Alerta!
Finalizando...

### Sección Avanzada ###
garcia,maria
555-789-1234
usuario@dominio.org

### Sección Experto ###
Avenida Siempreviva 742
Close > Open
Close > Open
MEPR920315HDFLRN02

### Sección Élite ###
SELECT id FROM products WHERE stock > 0
if (temp > 30) { alert(); }

🎯 Sistema de Autoevaluación

  1. Nivel Starter: 3 ejercicios correctos → Subes de nivel
  2. Nivel Express: 5/6 patrones funcionando
  3. Nivel Booster: Todos los reemplazos funcionan
  4. Nivel Challenger: Valida todos los casos edge
  5. Nivel Godmode: Crea un parser funcional

💡 Consejo Pro: Usa Ctrl+Alt+Enter en Sublime Text para resaltar todas las coincidencias de tu regex y verificar resultados visualmente.