Курс языка программирования Raku / Регулярные выражения и грамматики / Регулярные выражения / Литералы и классы символов
Классы символов
Часто нужно сопоставить не один определённый символ, а любой символ
из некоторого набора. Такой набор называется классом символов и
записывается между <[ и ]>:
say 'grey' ~~ / gr <[ae]> y /; # 「grey」
say 'gray' ~~ / gr <[ae]> y /; # 「gray」Класс <[ae]> соответствует одному символу — либо
a, либо e, — поэтому подходят оба написания
слова.
Внутри скобок можно указать диапазон через две точки:
say 'a1b2' ~~ / <[0..9]> /; # 「1」<[0..9]> соответствует любой одной цифре; первая
цифра в строке — 1.
Чтобы сопоставить любой символ, которого в наборе нет, поставьте знак минуса сразу после открывающей скобки:
say 'stop!' ~~ / <-[a..z]> /; # 「!」Здесь <-[a..z]> соответствует первому символу, не
являющемуся строчной буквой, — это восклицательный знак.
В одном классе можно объединить несколько кусочков. Например,
<[a..z A..Z 0..9]> соответствует букве или цифре.
Пробелы там только для удобочитаемости: как и везде в регулярном
выражении, пробелы внутри <[…]> игнорируются, поэтому
<[a..zA..Z0..9]> — это ровно тот же класс.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Сопоставление литерального текста | Тест — Собственные классы →
💪 Или перейдите сразу к упражнениям этого
раздела.