Курс по 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 тест върху съдържанието на тази тема.

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

Тест — Интелигентно съпоставяне   |   Тест — Съпоставяне


💪 Или преминете направо към упражненията в този раздел.