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