Lecciones del módulo (1/4)
Lookahead positivo: `(?=...)`
Un lookahead positivo (?=...) es una aserción de ancho cero (zero-width):
comprueba que un determinado patrón siga a la posición actual, pero no consume esos caracteres.
Pattern: \d+(?= euro)
Sample: Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
^^^ ^^El lookahead (?= euro) requiere que los dígitos vayan seguidos de euro, pero el match incluye solo los dígitos. 75 dollari no coincide (no hay euro).
Por qué "ancho cero"
Piensa en el lookahead como una condición sobre la posición, no como una parte del match:
- El match se detiene antes del lookahead.
- La posición "después del match" es el inicio del texto inspeccionado por el lookahead.
- El siguiente intento de coincidencia con la flag
gse reanudará desde allí.
Esto lo hace perfecto para extraer valores sin su contexto: precios sin la moneda, palabras antes de un signo de puntuación, etc.
Características del lookahead y escaneo de ancho cero
El lookahead positivo (?=...) garantiza que el patrón especificado sigue al punto actual, pero el escaneo se reanuda desde la posición anterior al lookahead. Esto evita "consumir" partes del texto que podrían ser necesarias para coincidencias posteriores.
Pruébalo tú
Extrae SOLO los dígitos de los precios en euros (las secuencias de dígitos seguidas de ' euro'). Sin la moneda en el match.
Mostrar pista
Mueve ' euro' dentro de un lookahead (?= euro): la cadena no formará parte del match.
Solución disponible después de 3 intentos
Ejercicio de repaso
Encuentra cada palabra seguida inmediatamente por dos puntos `:` (pero sin incluir los dos puntos en el match).
Mostrar pista
Misma lógica: los `:` no están en el match, sino que son una condición de posición.
Solución disponible después de 3 intentos
Desafío adicional
Encuentra cada palabra (ej. nombre de función) seguida inmediatamente por un paréntesis de apertura `(`, excluyendo el paréntesis del match.
Mostrar pista
Mueve \( (paréntesis de apertura escapado) dentro del lookahead positivo (?=...).
Solución disponible después de 3 intentos