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

Іменовані групи та зворотні посилання

Коли кількість груп зростатиме, пам’ятайте, що $2 — це «місяць», а $5 це «рік» стає крихким. Синтаксис (?<name>...) дозволяє вам назвіть групу: ви отримуєте доступ до неї за назвою через groups.name (і в заміни як $<name>).

Code
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> -- іменована посилання.
Code
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>.

Спробуйте

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

Знайдіть кожну дату у форматі РРРР-ММ-ДД, назвавши групи `anno`, `mese`, `giorno`.

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

Синтаксис: (?<name>шаблон). Збіг показує групи під записом «названий».

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

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

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

Знайдіть послідовні повторювані слова (наприклад, `il il`, `casa casa`). Використовуйте групу для першого та зворотне посилання `\\1` для другого.

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

\\b(\\w+)\\s+\\1\\b: перше слово (\\w+), потім пробіл, потім ТЕ ЖЕ слово \\1.

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

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

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

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.

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

Призначте назву (?&lt;тег&gt;\\w+) і закрийте його \\k&lt;тег&gt;.

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