Модульні уроки (4/4)
Огляд на практиці
Давайте поєднаємо всі чотири форми огляду разом у сценаріях реального світу. Огляди сяють, коли вам потрібно:
- Витягніть значення без контексту, який його ідентифікує.
- Перевірити рядок на кілька незалежних умов.
- Відфільтрувати збіги, які задовольняють одні умови, але не задовольняють інші.
Перевірка пароля
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,}$.
Вилучення між роздільниками
Pattern: (?<=\().+?(?=\))
Sample: Funzione foo(bar) e baz(qux, qix)
Match: "bar", "quux, qix" (without parentheses)Lookbehind + lookahead + lazy quantifier: витягує вміст всередині дужки без їх включення.
Поєднання погляду вперед і погляду позаду
Використання перегляду вперед і перегляду разом дозволяє ізолювати рядки, які знаходяться в певних тегах або форматах (наприклад, вилучення тексту між двома тегами без включення тегів у остаточний збіг). Це дозволяє уникнути подальших операцій очищення рядка.
Спробуйте
Витягніть значення кожного призначення `key=value` із журналу: ТІЛЬКИ значення (без ключів, без `=`). Значення можуть містити літери та цифри.
Показати підказку
Перемістіть `=` всередину огляду назад (?<==): таким чином збіг містить лише значення.
Рішення доступне після 3 спроб
Повторна вправа
Знайдіть слова, які містять принаймні ОДНУ велику літеру І принаймні ОДНУ цифру (у будь-якому порядку), розташуйте їх у тексті.
Показати підказку
Подвійний перегляд на початку: (?=\\w*[A-Z])(?=\\w*\\d). Потім споживайте слово за допомогою \\w+.
Рішення доступне після 3 спроб
Додатковий виклик
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 спроб