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

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

Съпоставяне на буквален текст   |   Тест — Собствени класове


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