Курс языка программирования Raku / Регулярные выражения и грамматики / Регулярные выражения / Якоря / Exercises / Целое слово
Решение: Целое слово
Вот один из возможных вариантов решения задачи.
Код
say 'this is fine' ~~ /<< is >>/;🦋 Исходный код можно найти в файле whole-word.raku.
Вывод
「is」Комментарии
Якоря
<<и>>требуют границы слова с каждой стороны отis.Буквы
isесть и внутриthis, но там слева у них нет границы слова, поэтому движок пропускает это вхождение и сопоставляет отдельно стоящее словоis.Оба кандидата напечатали бы одно и то же
「is」— так как же узнать, какой из них совпал на самом деле? Изменитеis, спрятанное внутриthis: например, превратите строку в'thus is fine'. Вывод останется прежним,「is」, что доказывает: то вхождение совпадением не было. А теперь измените отдельно стоящее слово (скажем,'this it fine') — и совпадение исчезнет (Nil). Можно и просто спросить у совпадения, где оно начинается:('this is fine' ~~ /<< is >>/).fromвернёт5, позицию отдельногоis, а не2.