Уроки модуля (2/4)
Чередование: `|`
Конвейер | — это ИЛИ регулярного выражения: шаблон соответствует, если один из
альтернативы совпадения. Его приоритет очень низкий: | разделяет все
слева и справа от него до замыкающей группы или начала шаблона.
Pattern: cane|gatto|criceto
Sample: Ho un cane, un gatto e un criceto.
^^^^ ^^^^^ ^^^^^^^Круглые скобки определяют приоритет
Без круглых скобок альтернативы охватывают от начала до конца шаблона. Почти всегда вы хотите ограничить OR частью шаблона: оберните его группа.
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)$.
Попробуйте это
Найдите в тексте все случаи появления трех животных «трость», «гатто», «крицето» (в любом порядке).
Показать подсказку
Труба разделяет альтернативы. Используйте флаг g, чтобы поймать их всех.
Решение доступно после 3 попыток
Обзор упражнения
Находите слова `gennaio` или `febbraio` ТОЛЬКО как целые слова (используйте `\\b`, чтобы избежать совпадений внутри более длинных слов). Используйте круглые скобки, чтобы ограничить чередование.
Показать подсказку
\\b(gennaio|febbraio)\\b привязывает выбор к целым словам.
Решение доступно после 3 попыток
Дополнительная задача
Найдите имена файлов, заканчивающиеся расширениями `.jpg`, `.png` или `.gif`.
Показать подсказку
Используйте трубу внутри группы для переключения между расширениями.
Решение доступно после 3 попыток