Курс языка программирования Raku / Регулярные выражения и грамматики / Регулярные выражения / Якоря / Exercises / Целое слово

Решение: Целое слово

Вот один из возможных вариантов решения задачи.

Код

say 'this is fine' ~~ /<< is >>/;

🦋 Исходный код можно найти в файле whole-word.raku.

Вывод

「is」

Комментарии

  1. Якоря << и >> требуют границы слова с каждой стороны от is.

  2. Буквы is есть и внутри this, но там слева у них нет границы слова, поэтому движок пропускает это вхождение и сопоставляет отдельно стоящее слово is.

  3. Оба кандидата напечатали бы одно и то же 「is」 — так как же узнать, какой из них совпал на самом деле? Измените is, спрятанное внутри this: например, превратите строку в 'thus is fine'. Вывод останется прежним, 「is」, что доказывает: то вхождение совпадением не было. А теперь измените отдельно стоящее слово (скажем, 'this it fine') — и совпадение исчезнет (Nil). Можно и просто спросить у совпадения, где оно начинается: ('this is fine' ~~ /<< is >>/).from вернёт 5, позицию отдельного is, а не 2.

Навигация по курсу

Целое слово   |   Утверждения просмотра