Введение
Классы символов POSIX и шестнадцатеричные/восьмеричные значения в регулярных выражениях предоставляют дополнительные способы указания символов. POSIX-классы стандартизируют наборы символов, а шестнадцатеричные/восьмеричные значения позволяют указывать символы по их кодам ASCII.
Классы символов POSIX
POSIX-классы — это сокращённые формы для часто используемых наборов символов. Они заключаются в [:class:] внутри квадратных скобок. Основные классы:
| Класс | Описание |
|---|---|
[:alnum:] | Любая цифра или буква ([a-zA-Z0-9]) |
[:alpha:] | Любая буква ([a-zA-Z]) |
[:blank:] | Пробел или табуляция ([ \t]) |
[:cntrl:] | Управляющие символы ASCII (коды 0–31 и 127) |
[:digit:] | Любая цифра ([0-9]) |
[:graph:] | Печатаемые символы, кроме пробела |
[:lower:] | Любая строчная буква ([a-z]) |
[:print:] | Любой печатаемый символ |
[:punct:] | Символы, не относящиеся к [:alnum:] или [:cntrl:] |
[:space:] | Любой пробельный символ ([ \f\n\r\t\v]) |
[:upper:] | Любая прописная буква ([A-Z]) |
[:xdigit:] | Шестнадцатеричная цифра ([a-fA-F0-9]) |
Пример: Поиск RGB-цветов в HTML
Текст:
body {
background-color: #fefbd8;
}
h1 {
background-color: #0000ff;
}
div {
background-color: #d0f4e6;
}
span {
background-color: #f08970;
}
Регулярное выражение: #[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]
Результат:
body {
background-color: #fefbd8;
}
h1 {
background-color: #0000ff;
}
div {
background-color: #d0f4e6;
}
span {
background-color: #f08970;
}
Анализ: Класс [:xdigit:] заменяет [0-9A-Fa-f], находя шестизначные шестнадцатеричные RGB-цвета. Внешние [] обязательны для POSIX-классов.
Шестнадцатеричные и восьмеричные значения
Символы можно указывать по их ASCII-кодам:
- Шестнадцатеричные: Используйте
\xNN, например,\x0Aэквивалентно\n(перевод строки). - Восьмеричные: Используйте
\0NNили\0NNN, например,\011эквивалентно\t(табуляция).
Предупреждение
POSIX-классы поддерживаются не во всех реализациях регулярных выражений, и их поведение может немного отличаться. Всегда заключайте их в [], например, [[:xdigit:]].
Заключение
POSIX-классы и шестнадцатеричные/восьмеричные значения предоставляют гибкие способы указания символов в регулярных выражениях. POSIX-классы упрощают работу с наборами символов, а числовые значения полезны для точного указания редких символов.
Отзывы