Курс 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 тест за змістом цієї теми.

Навігація курсом

Якорі   |   Тест — Якорі рядка


💪 Або перейдіть одразу до вправ цього розділу.