Курс Raku / Регулярні вирази та граматики / Регулярні вирази / Зіставлення рядків
Об’єкт збігу
Коли регекс збігається, розумне зіставлення повертає об’єкт
збігу. Той самий об’єкт автоматично зберігається й у спеціальній
змінній $/, яку іноді називають «змінною збігу».
Об’єкт збігу є чимось значно більшим за відповідь «так чи ні». Як
рядок він є тим текстом, що збігся, — його дістають методом
.Str або префіксом ~, який є оператором
зведення до рядка й робить точно те саме:
my $m = 'concatenate' ~~ /cat/;
say $m.Str; # cat
say ~$m; # catВін також знає, де в рядку знайдено збіг. Метод
.from дає позицію, з якої той починається, а
.to — позицію одразу після його кінця:
my $m = 'room 7 left' ~~ /\d/;
say $m.Str; # 7
say $m.from; # 5
say $m.to; # 6Позиції рахуються від нуля, тож цифра 7 стоїть за
індексом 5.
Коли регекс не збігається, результатом є взагалі не
об’єкт збігу, а особливе значення Nil. Присвоєння
Nil скаляру лишає його невизначеним:
my $m = 'abc' ~~ /z/;
say $m.defined; # FalseТож перед читанням тексту збігу завжди можна перевірити
.defined (або просто використати значення в булевому
контексті).
Практика
Виконайте 1 тест за змістом цієї теми.
Навігація курсом
← Тест — Розумне зіставлення | Тест — Зіставлення →
💪 Або перейдіть одразу до вправ цього розділу.