Представление символов в регулярных выражениях

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Представление символов по их коду[править | править код]

В некоторых случаях предпочтительно представление символов по их коду.

Представление Пояснение Кодировка
\0n n — восьмеричное число от 0 до 377 8-битная
\xdd d — шестнадцатеричная цифра
\udddd 16-битная (Юникод)

Управляющие символы[править | править код]

Представление Символ Обозначение Расшифровка
\t Горизонтальная табуляция HT Horizontal tabulation
\v Вертикальная табуляция VT Vertical tabulation
\r Возврат каретки CR Carriage return
\n Перевод строки (прогон строки, подача строки) LF Line feed
\f Конец страницы (прогон страницы) FF Form feed
\a Звонок BEL Bell character
\e Ключ (управляющий символ, Escape-символ) ESC Escape character
\b Backspace

Должен находиться внутри квадратных скобок (иначе интерпретируется как граница слова).

BS Backspace
\cA\cZ Ctrl+A … Ctrl+Z

Например, последовательность \cM\cJ соответствует управляющим символам CR LF.

Эквивалентно \x01\x1A.

Сокращённые обозначения символьных классов[править | править код]

Для часто используемых символьных классов существуют краткие обозначения.

Представление Эквивалент Значение
\d [0-9] Цифра
\D [^\d] Любой символ, кроме цифры
\w [A-Za-zА-Яа-я0-9_] Символы, образующие «слово» (буквы, цифры и символ подчёркивания)[1]
\W [^\w] Символы, не образующие «слово»
\s [ \t\v\r\n\f] Пробельный символ
\S [^\s] Непробельный символ

Символьные классы POSIX[править | править код]

Многие диапазоны символов зависят от выбранных настроек локализации. POSIX стандартизовал объявление некоторых классов и категорий символов, как показано в следующей таблице.

POSIX-класс Эквивалент Значение
[:upper:] [A-Z] Символы верхнего регистра
[:lower:] [a-z] Символы нижнего регистра
[:alpha:] [[:upper:][:lower:]] Буквы
[:digit:] [0-9], т. е. \d Цифры
[:xdigit:] [[:digit:]A-Fa-f] Шестнадцатеричные цифры
[:alnum:] [[:alpha:][:digit:]] Буквы и цифры
[:word:] [[:alnum:]_], т. е. \w Символы, образующие «слово»
[:punct:] [-!"#$%&'()*+,./:;<=>?@[\\\]_`{|}~] Знаки пунктуации
[:blank:] [ \t] Пробел и табуляция
[:space:] [[:blank:]\v\r\n\f], т. е. \s Пробельные символы
[:cntrl:] [\x00-\x1F\x7F] Управляющие символы
[:graph:] [\x21-\x7E] Печатные символы
[:print:] [\x20-\x7E], т. е. [[:graph:] ] Печатные символы с пробелом

Использование класса возможно лишь внутри квадратных скобок (пример частой ошибки — ^[:upper:]il+$ вместо ^[[:upper:]]il+$).

Примечания[править | править код]

  1. Указанный эквивалент неполон, так как в диапазон входят все буквы всех языков.

См. также[править | править код]

Литература[править | править код]

  • Фридл, Дж. Регулярные выражения. — СПб.: «Питер», 2001. — 352 с. — (Библиотека программиста). — ISBN 5-318-00056-8.
  • Смит, Билл. Методы и алгоритмы вычислений на строках (regexp) = Computing Patterns in Strings. — М.: «Вильямс», 2006. — 496 с. — ISBN 0-201-39839-7.
  • Форта, Бен. Освой самостоятельно регулярные выражения. 10 минут на урок = Sams Teach Yourself Regular Expressions in 10 Minutes. — М.: «Вильямс», 2004. — 192 с. — ISBN 0-672-32566-7.