Перейти до основного вмісту
Модуль 6 · Урок 3 із 423/32 у курсі~12 min
Модульні уроки (3/4)

Lookbehind: `(?<=...)` `(?<!...)`

Позаду є дзеркальним відображенням попереду: вони дивляться наперед поточна позиція, все ще нульова ширина.

  • (?<=...) -- позитивний огляд: шаблон має передувати.
  • (?<!...) -- негативний огляд: шаблон НЕ повинен передувати.
Code
Pattern: (?<=\$)\d+
Sample:  Costo $100, sconto -25, totale $75.
                ^^^                  ^^

$ не відповідає, але працює як умова: лише цифри передує збігом знака долара.

Негативний огляд

Code
Pattern: (?<!\w)\d+
Sample:  Codice abc123 e numero 456.
                              ^^^

(?<!\w) вимагає, щоб перед цифрами не було жодного слова: abc123 виключено (перед 123 є c, \w), 456 відповідає (перед є пробіл).

Ключова відмінність від групи без захоплення

Code
\\$\\d+         matches "$100": the match includes the dollar sign.
(?<=\\$)\\d+    matches "100":  the match contains ONLY the digits.

Якщо вам потрібно витягти «чисте» значення без префікса, подивіться це правильний вибір.

Сумісність Lookbehind у JavaScript

Позитивний (?<=...) та негативний (?<!...) огляд назад перевіряють, що передує поточній позиції. У JavaScript вони підтримуються, починаючи з ES2018; у старих браузерах або застарілих механізмах Node.js вони спричинятимуть помилки компіляції синтаксису.

Спробуйте

вправи#regex.m6.l3.e1
Спроби: 0Завантаження…

Витягніть із цін у тексті лише числову суму (без знака $).

Завантаження редактора…
Показати підказку

Перемістіть \\$ у позитивний огляд назад (?<=\\$): умова позиції, а не частина збігу.

Рішення доступне після 3 спроб

Повторна вправа

вправи#regex.m6.l3.e2
Спроби: 0Завантаження…

Знайти кожну послідовність цифр, перед якою НЕ стоїть літера чи цифра (тобто «ізольовані» числа, а не частини коду, наприклад `abc123`).

Завантаження редактора…
Показати підказку

Використовуйте негативний пошук назад (?<!\\w), щоб виключити випадки, коли перед цим є літера чи цифра.

Рішення доступне після 3 спроб

Додатковий виклик

вправи#regex.m6.l3.e3
Спроби: 0Завантаження…

Find only the digits of negative numbers (digits preceded by the `-` sign), excluding the minus sign from the match.

Завантаження редактора…
Показати підказку

Перемістіть знак мінус - всередині позитивного погляду назад (?<=-).

Рішення доступне після 3 спроб