Перейти к основному содержимому
Модуль 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)

Просмотр назад + просмотр вперед + ленивый квантификатор: извлекает содержимое ** внутри скобки**, не включая их.

Сочетание просмотра вперед и просмотра назад

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

Попробуйте это

Упражнение#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 попыток