Модульні уроки (3/4)
Lookbehind: `(?<=...)` `(?<!...)`
Позаду є дзеркальним відображенням попереду: вони дивляться наперед поточна позиція, все ще нульова ширина.
(?<=...)-- позитивний огляд: шаблон має передувати.(?<!...)-- негативний огляд: шаблон НЕ повинен передувати.
Pattern: (?<=\$)\d+
Sample: Costo $100, sconto -25, totale $75.
^^^ ^^$ не відповідає, але працює як умова: лише цифри
передує збігом знака долара.
Негативний огляд
Pattern: (?<!\w)\d+
Sample: Codice abc123 e numero 456.
^^^(?<!\w) вимагає, щоб перед цифрами не було жодного слова:
abc123 виключено (перед 123 є c, \w), 456 відповідає (перед
є пробіл).
Ключова відмінність від групи без захоплення
\\$\\d+ matches "$100": the match includes the dollar sign.
(?<=\\$)\\d+ matches "100": the match contains ONLY the digits.Якщо вам потрібно витягти «чисте» значення без префікса, подивіться це правильний вибір.
Сумісність Lookbehind у JavaScript
Позитивний (?<=...) та негативний (?<!...) огляд назад перевіряють, що передує поточній позиції. У JavaScript вони підтримуються, починаючи з ES2018; у старих браузерах або застарілих механізмах Node.js вони спричинятимуть помилки компіляції синтаксису.
Спробуйте
Витягніть із цін у тексті лише числову суму (без знака $).
Показати підказку
Перемістіть \\$ у позитивний огляд назад (?<=\\$): умова позиції, а не частина збігу.
Рішення доступне після 3 спроб
Повторна вправа
Знайти кожну послідовність цифр, перед якою НЕ стоїть літера чи цифра (тобто «ізольовані» числа, а не частини коду, наприклад `abc123`).
Показати підказку
Використовуйте негативний пошук назад (?<!\\w), щоб виключити випадки, коли перед цим є літера чи цифра.
Рішення доступне після 3 спроб
Додатковий виклик
Find only the digits of negative numbers (digits preceded by the `-` sign), excluding the minus sign from the match.
Показати підказку
Перемістіть знак мінус - всередині позитивного погляду назад (?<=-).
Рішення доступне після 3 спроб