2017-02-21 21 views
0

В http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html (который выглядит как официальная спецификация для Posix) он перечисляет классы символов, которые должны поддерживаться в регулярных выражениях, включая, например, [:space:].Нормативная ссылка для определения класса регулярных выражений Posix?

Но где эти классы символов определены? Где я могу найти окончательно, какие символы [:space:] должны совпадать? Я ищу фактический стандарт, а не вики-подобную страницу или чей-то блог. Благодарю.

ответ

0

Этот набор зависит от региона.

POSIX один подробно здесь: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html

пространство
Определить символы должны быть классифицированы как пробельных символов. В локали POSIX точно указывается < space>, < form-feed>, < newline>, < каретка-возврат>, < вкладка> и < вертикальная вкладка>.

В файле определения локали не указывается ни один символ, указанный для ключевых слов: верхний, нижний, альфа, цифра, граф или xdigit. < space>, < form-feed>, < newline>, < каретка-возврат>, < вкладка и < вертикальная вкладка переносного набора символов и любые символы, включенные в пробел класса, автоматически включаются в этот класс.

Кроме того, упомянутые ранее символы могут свободно добавлять любое количество горизонтальных или вертикальных «пробелов» символов, таких как, например, «неразрывное пространство», «пространство с фиксированной шириной» и тому подобное.

Чтобы узнать, является ли данный символ частью этого класса или нет в текущем регионе, вы используете функцию isspace.