Перейти к основному содержимому
Модуль 4 · Урок 2 из 414/32 в курсе~10 min
Уроки модуля (2/4)

Чередование: `|`

Конвейер | — это ИЛИ регулярного выражения: шаблон соответствует, если один из альтернативы совпадения. Его приоритет очень низкий: | разделяет все слева и справа от него до замыкающей группы или начала шаблона.

Code
Pattern: cane|gatto|criceto
Sample:  Ho un cane, un gatto e un criceto.
               ^^^^     ^^^^^         ^^^^^^^

Круглые скобки определяют приоритет

Без круглых скобок альтернативы охватывают от начала до конца шаблона. Почти всегда вы хотите ограничить OR частью шаблона: оберните его группа.

Code
Pattern   Significato (errato vs corretto)
^a|b$     "inizio + a" oppure "b + fine"           (probabilmente sbagliato)
^(a|b)$   "inizio + (a oppure b) + fine"           (probabilmente giusto)

О типичном порядке альтернатив: ставьте наиболее сначала конкретные/самые длинные. Двигатель пытается двигаться слева направо и останавливается на первый, соответствующий: gat|gatto, всегда будет соответствовать только gat.

Приоритет и изоляция альтернатив

Оператор | имеет очень низкий приоритет. Если вы пишете ^abc|def$, вы ищете «строку, начинающуюся с abc ИЛИ строку, заканчивающуюся на def». Чтобы найти «начало строки, за которым следует abc или def, а затем конец строки», вы должны написать ^(abc|def)$.

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

Упражнение#regex.m4.l2.e1
Попыток: 0Загрузка…

Найдите в тексте все случаи появления трех животных «трость», «гатто», «крицето» (в любом порядке).

Загрузка редактора…
Показать подсказку

Труба разделяет альтернативы. Используйте флаг g, чтобы поймать их всех.

Решение доступно после 3 попыток

Обзор упражнения

Упражнение#regex.m4.l2.e2
Попыток: 0Загрузка…

Находите слова `gennaio` или `febbraio` ТОЛЬКО как целые слова (используйте `\\b`, чтобы избежать совпадений внутри более длинных слов). Используйте круглые скобки, чтобы ограничить чередование.

Загрузка редактора…
Показать подсказку

\\b(gennaio|febbraio)\\b привязывает выбор к целым словам.

Решение доступно после 3 попыток

Дополнительная задача

Упражнение#regex.m4.l2.e3
Попыток: 0Загрузка…

Найдите имена файлов, заканчивающиеся расширениями `.jpg`, `.png` или `.gif`.

Загрузка редактора…
Показать подсказку

Используйте трубу внутри группы для переключения между расширениями.

Решение доступно после 3 попыток