Уроки модуля (4/4)
Именованные группы и обратные ссылки
Когда количество групп растет, помните, что $2 — это «месяц», а $5
«Год» становится хрупким. Синтаксис (?<name>...) позволяет вам
назовите группу: вы получаете доступ к ней по имени через groups.name (и в
замены как $<name>).
Pattern: (?<anno>\d{4})-(?<mese>\d{2})-(?<giorno>\d{2})
Sample: 2024-03-15
Gruppi:
anno = "2024"
mese = "03"
giorno = "15"Редактор отображает именованные группы рядом с совпадением.
обратная ссылка
обратная ссылка позволяет ссылаться внутри того же шаблона, к предыдущему захвату. Синтаксис:
\1,\2, … -- нумерованная ссылка (на группу 1, 2, …).\k<name>-- именованная ссылка.
Pattern: \b(\w+)\s+\1\b
Sample: un test un test il il gatto
^^^^^Соответствует последовательным повторяющимся словам: (\w+) захватывает слово, затем
\s+\1 требует пробела и того же того же слова.
Самодокументируемый код и именованные обратные ссылки.
Именованные группы улучшают читаемость кода JavaScript: вместо ссылки на match[1] вы получаете доступ к match.groups.name. Внутри самого шаблона ссылка на них осуществляется с помощью синтаксиса \\k<name>.
Попробуйте это
Найдите каждую дату в формате ГГГГ-ММ-ДД, назвав группы «anno», «mese», «giorno».
Показать подсказку
Синтаксис: (?<имя>шаблон). Соответствие показывает группы под записью «named».
Решение доступно после 3 попыток
Обзор упражнения
Найдите последовательные повторяющиеся слова (например, «il il», «casa casa»). Используйте группу для первого и обратную ссылку `\\1` для второго.
Показать подсказку
\\b(\\w+)\\s+\\1\\b: первое слово — (\\w+), затем пробел, затем ТО ЖЕ слово \\1.
Решение доступно после 3 попыток
Дополнительная задача
Find HTML/XML tag pairs (e.g. `<b>text</b>` or `<i>text</i>`) ensuring that the closing tag matches the opening tag using a named backreference.
Показать подсказку
Назначьте имя (?<tag>\\w+) и закройте его с помощью \\k<tag>.
Решение доступно после 3 попыток