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

Огляд на практиці

Давайте поєднаємо всі чотири форми огляду разом у сценаріях реального світу. Огляди сяють, коли вам потрібно:

  1. Витягніть значення без контексту, який його ідентифікує.
  2. Перевірити рядок на кілька незалежних умов.
  3. Відфільтрувати збіги, які задовольняють одні умови, але не задовольняють інші.

Перевірка пароля

Code
Pattern: ^(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z\d]).{8,}$
Checks:
  - at least one uppercase     (?=.*[A-Z])
  - at least one digit         (?=.*\d)
  - at least one symbol        (?=.*[^a-zA-Z\d])
  - minimum length 8           .{8,}

Кожен попередній перегляд перевіряє одну умову, починаючи з початку (^). Вони є всі нульової ширини: двигун залишається в положенні 0, а потім споживає с .{8,}$.

Вилучення між роздільниками

Code
Pattern: (?<=\().+?(?=\))
Sample:  Funzione foo(bar) e baz(qux, qix)
Match: "bar", "quux, qix" (without parentheses)

Lookbehind + lookahead + lazy quantifier: витягує вміст всередині дужки без їх включення.

Поєднання погляду вперед і погляду позаду

Використання перегляду вперед і перегляду разом дозволяє ізолювати рядки, які знаходяться в певних тегах або форматах (наприклад, вилучення тексту між двома тегами без включення тегів у остаточний збіг). Це дозволяє уникнути подальших операцій очищення рядка.

Спробуйте

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

Витягніть значення кожного призначення `key=value` із журналу: ТІЛЬКИ значення (без ключів, без `=`). Значення можуть містити літери та цифри.

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

Перемістіть `=` всередину огляду назад (?<==): таким чином збіг містить лише значення.

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

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

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

Знайдіть слова, які містять принаймні ОДНУ велику літеру І принаймні ОДНУ цифру (у будь-якому порядку), розташуйте їх у тексті.

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

Подвійний перегляд на початку: (?=\\w*[A-Z])(?=\\w*\\d). Потім споживайте слово за допомогою \\w+.

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

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

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

Extract only numerical digits that are enclosed exactly between parentheses, e.g. extract `102` from `(102)` without capturing the parentheses.

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

Combine a positive lookbehind (?<=\( ) for the open parenthesis and a positive lookahead (?=\) ) for the closed one.

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