Давайте сегодня посмотрим символьные классы, которые доступны в регексах Perl 6.
Прежде всего, шпаргалка о том, как матчить строку:
'string' ~~ /str/;
Сегодня рассмотрим символьные классы, которые записываются с обратным слешем. Часть из них совпадает с тем, что есть в Perl 5.
Белое на белом
Существует несколько классов, совпадающих с разными видами пробельных символов:
\s — любой пробельный символ, как горизонтальный, так и вертикальный;
\h — горизонтальный пробел (например, пробел или табуляция);
\v — вертикальный пробел (например, перевод строки);
\n — перевод строки;
\t — табуляция.
Обратите внимание, как работают символы при сравнении с переводом строки:
say 1 if "\n" ~~ /\s/; # 1 say 2 if "\n" ~~ /\v/; # 2 say 3 if "\n" ~~ /\h/; # не совпало
Ко всем классам существуют комплиментарные, которые записываются с большой буквой: \S, \H, \V, \N и \T — все они совпадают с соответствующими типами не-пробелов.
Черное на белом
Пара символьных классов, совпадающих с конкретными наборами символов:
\d — цифры (не только ASCII, но и все юникодные).
\w — символы, которые могут быть в словах — буквы, цифры и символ подчеркивания.
Классы с противоположным смыслом:
\D — не цифры;
\W — не то, из чего состоят слова.
А как же тогда матчить конкретно вертикальную табуляцию, если \v уже зарезервирован?
~~ /\x[0A]/