Представление символов в регулярных выражениях
Представление символов по их коду
В некоторых случаях предпочтительно представление символов по их коду.
Представление | Пояснение | Кодировка |
---|---|---|
\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
Например, последовательность
Эквивалентно
|
Сокращённые обозначения символьных классов
Для часто используемых символьных классов существуют краткие обозначения.
Представление | Эквивалент | Значение |
---|---|---|
\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+$
).
Примечания
- ↑ Указанный эквивалент неполон, так как в диапазон входят все буквы всех языков.
См. также
Литература
- Фридл, Дж. Регулярные выражения. — СПб.: «Питер», 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.