Курс по 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, с
който ще се запознаете скоро.)
Навигация в курса
← Литерали и класове от знаци | Класове от знаци →
💪 Или преминете направо към упражненията в този
раздел.