35.3.1.2 Классы символов

Ниже представлена таблица классов, которые вы можете использовать в выражении в квадратных скобках (см. выражение в квадратных скобках), и их значение. Обратите внимание, что символы «[» и «]» , заключающие имя класса, являются частью имени, поэтому регулярное выражение, использующее эти классы, требует еще одной пары квадратных скобок. Например, регулярное выражение, соответствующее последовательности из одной или более букв и цифр, будет «[[:alnum:]]+», а не «[:alnum:]+».

«[:ascii:]»

Соответствует любому символу ASCII (коды 0–127).

«[:alnum:]»

Соответствует любой букве или цифре. Для многобайтовых символов он соответствует символам, свойство которых в Unicode «general-category» (см. Свойства символов) указывает, что они являются буквенными или десятичными символами.

«[:alpha:]»

Соответствует любой букве. Для многобайтовых символов он соответствует символам, свойство которых в Unicode «general-category» (см. Свойства символов) указывает, что они являются буквенными символами.

«[:blank:]»

Соответствует горизонтальному пробельному символу, как определено в Приложении C Технического стандарта Unicode #18. В частности, он соответствует пробелам, табуляциям и другим символам, свойство которых в Unicode «general-category» (см. Свойства символов) указывает, что они являются разделителями пробелов. (Если вам нужно искать только символы пробелов ASCII, мы предлагаем использовать явный набор альтернатив символов, например, «[ \t]», так как это будет быстрее, чем [[:blank:]].)

«[:cntrl:]»

Соответствует любому символу, код которого находится в диапазоне 0–31.

«[:digit:]»

Соответствует «0» по «9». Таким образом, «[-+[:digit:]]» соответствует любой цифре, а также «+» и «-».

«[:graph:]»

Соответствует графическим символам — всему, кроме пробелов, ASCII и не-ASCII управляющих символов, суррогатов и кодовых точек, не назначенных Unicode, как указано свойством Unicode «general-category» (см. Свойства символов).

«[:lower:]»

Соответствует любой строчной букве, определяемой текущей таблицей регистра (см. Таблица регистра). Если case-fold-search не равен nil, он также соответствует любой заглавной букве. Обратите внимание, что буфер может иметь собственную локальную таблицу регистра, отличную от значений по умолчанию.

«[:multibyte:]»

Соответствует любому многобайтовому символу (см. Представления текста).

«[:nonascii:]»

Соответствует любому не-ASCII символу.

«[:print:]»

Соответствует любому печатаемому символу — либо пробелам, либо графическим символам, соответствующим «[:graph:]».

«[:punct:]»

Соответствует любому знаку пунктуации. (В настоящее время для многобайтовых символов он соответствует всему, что имеет несловесный синтаксис, и, следовательно, его точное определение может варьироваться от одного основного режима к другому, поскольку синтаксис символа зависит от основного режима.)

«[:space:]»

Соответствует любому символу, имеющему синтаксис пробела (см. Таблица синтаксических классов). Обратите внимание, что синтаксис символа, а следовательно, и то, какие символы считаются «пробелами», зависит от основного режима.

«[:unibyte:]»

Соответствует любому однобайтовому символу (см. Представления текста).

«[:upper:]»

Соответствует любой заглавной букве, определяемой текущей таблицей регистра (см. Таблица регистра). Если case-fold-search не равен nil, он также соответствует любой строчной букве. Обратите внимание, что буфер может иметь собственную локальную таблицу регистра, отличную от значений по умолчанию.

«[:word:]»

Соответствует любому символу, имеющему словесный синтаксис (см. Таблица синтаксических классов). Обратите внимание, что синтаксис символа, а следовательно, и то, какие символы считаются «словесными», зависит от основного режима.

«[:xdigit:]»

Соответствует шестнадцатеричным цифрам: «0» по «9», «a» по «f» и «A» по «F».

Классы «[:space:]», «[:word:]» и «[:punct:]» используют таблицу синтаксиса текущего буфера, но не какие-либо переопределяющие свойства синтаксиса (см. Свойства синтаксиса).