Курс по Raku / Регулярни изрази и граматики / Регулярни изрази / Литерали и класове от знаци

Съпоставяне на буквален текст

Най-простият шаблон е поредица от букви и цифри. Такъв шаблон съпоставя точно тези знаци, в този ред, където и да е в низа:

say 'the cat sat' ~~ /cat/; # 「cat」
say 'Hello'       ~~ /ell/; # 「ell」

Съвпадението не е длъжно да започва в началото на низа — машината за регулярни изрази търси шаблона на всяка позиция, докато го намери.

Успешното съпоставяне произвежда обект Match. Онова 「cat」 в първия пример е как изглежда такъв обект при отпечатване: say показва Match като текста, който е съвпаднал, обвит в ъгловите скоби 「 」. Ако шаблонът го няма, съпоставянето се проваля: интелигентното съпоставяне произвежда Nil — недефинирана стойност, която в булева проверка минава за лъжа:

say ('the cat sat' ~~ /dog/);       # Nil
say ('the cat sat' ~~ /dog/).Bool;  # False

Вътре в регулярния израз интервалите по подразбиране не са значещи — те са там само за да направят шаблона четим. Затова / ell / съпоставя точно каквото би съпоставил /ell/; заобикалящите интервали просто се пренебрегват:

say 'Hello' ~~ / ell /; # 「ell」

Понеже интервалът в шаблона се пренебрегва, съпоставянето на действителен интервал изисква кавички: всичко, което сложите в кавички, се съпоставя буквално. Същото ограждане в кавички е и начинът да съпоставите пунктуационен знак, който иначе би имал специално значение в регулярния израз:

say 'a b'       ~~ / 'a b' /; # 「a b」
say 'price: $5' ~~ / '$' /;   # 「$」

(За празни знаци можете да използвате и класа \s, с който ще се запознаете скоро.)

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

Литерали и класове от знаци   |   Класове от знаци


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