Lecciones del módulo (3/4)
Lookbehind: `(?<=...)` `(?<!...)`
Los lookbehinds (búsqueda hacia atrás) son el reflejo de los lookaheads: miran detrás de la posición actual, y también son de ancho cero.
(?<=...)-- lookbehind positivo: el patrón debe preceder.(?<!...)-- lookbehind negativo: el patrón NO debe preceder.
Pattern: (?<=\$)\d+
Sample: Costo $100, sconto -25, totale $75.
^^^ ^^El $ no forma parte del match, pero funciona como una condición: solo coinciden los dígitos precedidos por el signo de dólar.
Lookbehind negativo
Pattern: (?<!\w)\d+
Sample: Codice abc123 e numero 456.
^^^(?<!\w) requiere que antes de los dígitos NO haya un carácter de palabra: abc123 queda excluido (antes de 123 está c, un \w), 456 coincide (antes hay un espacio).
Diferencia clave frente a un grupo no capturador
\$\d+ coincide con "$100": el match incluye el signo de dólar.
(?<=\$)\d+ coincide con "100": el match contiene ÚNICAMENTE los dígitos.Si necesitas extraer el valor "limpio" sin el prefijo, el lookbehind es la elección correcta.
Compatibilidad de lookbehind en JavaScript
El lookbehind positivo (?<=...) y el negativo (?<!...) comprueban lo que precede a la posición actual. En JavaScript, son compatibles a partir de ES2018; en navegadores antiguos o motores Node.js heredados, causarían errores de compilación de sintaxis.
Pruébalo tú
Extrae solo el importe numérico (sin el signo $) de los precios en el texto.
Mostrar pista
Mueve \$ dentro de un lookbehind positivo (?<=\$): una condición de posición, no parte del match.
Solución disponible después de 3 intentos
Ejercicio de repaso
Encuentra cada secuencia de dígitos NO precedida por una letra o dígito (es decir, números 'aislados', no partes de un código como `abc123`).
Mostrar pista
Usa un lookbehind negativo (?<!\w) para excluir cuando haya una letra o dígito antes.
Solución disponible después de 3 intentos
Desafío adicional
Encuentra solo los dígitos de los números negativos (dígitos precedidos por el signo `-`), excluyendo el signo menos del match.
Mostrar pista
Mueve el signo menos - dentro de un lookbehind positivo (?<=-).
Solución disponible después de 3 intentos