Курс языка программирования Raku / Регулярные выражения и грамматики / Регулярные выражения / Якоря
Начало и конец строки
Два якоря отмечают концы строки:
^совпадает в самом начале строки$совпадает в самом конце
Используйте ^, чтобы потребовать, чтобы совпадение
начиналось с начала:
say so 'http://example' ~~ /^ http /; # True
say so 'see http://x' ~~ /^ http /; # FalseВо второй строке http есть, но не в начале, поэтому
привязанный якорем шаблон не срабатывает.
Если поставить ^ и $ вокруг шаблона, он
вынужден совпасть со всей строкой, так что по краям
ничего не останется:
say so 'hello' ~~ /^ hello $/; # True
say so 'hello world' ~~ /^ hello $/; # FalseЭто очень распространённый приём для проверки — например, «а эта строка целиком число?»:
say so '2025' ~~ /^ \d+ $/; # True
say so '20a5' ~~ /^ \d+ $/; # FalseЯкоря строк текста
Когда в тексте несколько строк, парные якоря ^^ и
$$ совпадают в начале и конце каждой строки
текста, а не всего значения целиком. Разница с ^ и
$ проявляется, как только нужный текст оказывается не на
первой строке: одинарные якоря видят только всё значение и не
срабатывают, а удвоенные совпадают на любой строке.
say so "cat\ndog" ~~ /^ dog $/; # False
say so "cat\ndog" ~~ /^^ dog $$/; # TrueЗдесь \n начинает вторую строку. ^^
требует, чтобы dog стояло в начале строки, а
$$ — в конце; на второй строке верно и то и другое, поэтому
удвоенные якоря срабатывают там, где одинарные не могут.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Якоря | Тест — Якоря строки →
💪 Или перейдите сразу к упражнениям этого
раздела.