Символьные классы

Символьный класс, перечень возможных символов в квадратных скобках ([]), совпадает с одним из символов, входящих в класс. Он совпадает только с одним символом, но это может быть любой из перечисленных символов. Например, символьный класс [abcwxyz] может совпасть с любым из семи символов. Для удобства предусмотрена возможность определения диапазонов через дефис (-), поэтому этот символьный класс также можно записать в формате [a-cw-z]. В данном примере особой экономии не получается, но на практике чаще встречаются символьные классы вида [a-zA-Z], совпадающие с любой буквой из 52.1 В символьных классах можно использовать те же определения символов, что и в строках, заключенных в кавычки; так, класс [\000-\177] обозначает любой семиразрядный ASCIIQсимвол. Конечно, символьные классы обычно являются частью шаблонов; в Perl они почти никогда не используются сами по себе. Например, фрагмент кода с символьным классом может выглядеть примерно так:

$_ = "The HAL-9000 requires authorization to continue.";
if (/HAL-[0-9]+/) {
print "The string mentions some model of HAL computer.\n";
}

Иногда вместо символов, входящих в символьный класс, бывает проще перечислить исключаемые символы.


«Крышка» (^) в начале символьного класса обозначает его инверсию. Так, класс [^def] совпадет с любым одиночным символом, кроме трех перечисленных. А класс [^n\-z] совпадет с любым символом, кроме n, дефиса и z. (Обратите внимание: дефис здесь экранируется обратной косой чертой, потому что в символьных классах он имеет особый смысл. С другой стороны, первый дефис в /HAL-[0-9]+/ экранировать не нужно, потому что за пределами символьных классов дефис особой интерпретации не имеет.)

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Альтернатива
Группировка в шаблонах
Инвертированные сокращения
О метасимволах
Простые квантификаторы

Вернуться в раздел: Perl / 6. В мире регулярных выражений