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

Просмотр назад: `(?<=...)` `(?<!...)`

Lookbehind — это зеркальное отражение опережающего просмотра: они смотрят before. текущая позиция, все еще нулевая ширина.

  • (?<=...) -- положительный просмотр: шаблон должен предшествовать.
  • (?<!...) -- негативный просмотр: шаблон НЕ должен предшествовать.
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.

Если вам нужно извлечь «чистое» значение без префикса, посмотрите назад это правильный выбор.

Совместимость с просмотром назад в 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 попыток