Книга: Linux программирование в примерах
13.4.3. Языки
13.4.3. Языки
Языковые проблемы управляются локалью. Ранее в главе мы уже видели setlocale()
POSIX предоставляет продуманный механизм для определения правил, посредством которых работает локаль; некоторые подробности см. в справочной странице GNU/Linux locale(5), а полностью — в самом стандарте POSIX.
Правда в том, что подробности на самом деле не нужны. Вам, как разработчику программ, не нужно беспокоиться о них; как заставить все работать, зависит от разработчиков библиотек. Все, что нужно, это понять концепции и использовать в своем коде соответствующие функции, такие, как strcoll()
(см. раздел 13.2.3 «Сравнение строк: strcoll()
и strxfrm()
»).
Современные системы GLIBC предоставляют отличную поддержку локалей, включая поддерживающие локали процедуры сопоставления регулярных выражений. Например, расширенное регулярное выражение POSIX [[:alpha:]][[:alnum:]]+
соответствует букве, за которой следуют одна или более букв или цифр (алфавитный символ, за которым следуют один или более алфавитно-цифровых символов). Определение того, какие символы соответствуют этим классам, зависит от локали. Например, это регулярное выражение соответствовало бы двум символам 'e?
', тогда как регулярное выражение [a-zA-Z][a-A-Zz0-9]+
традиционного, ориентированного на ASCII Unix — скорее всего нет. Классы символов POSIX перечислены в табл. 13.5.
Таблица 13.5. Классы символов регулярных выражений POSIX
Класс | Соответствует |
---|---|
[:alnum:] |
Алфавитно-цифровые символы |
[:alpha:] |
Алфавитные символы |
[:blank:] |
Символы пробела и табуляции. |
[:cntrl:] |
Управляющие символы |
[:digit:] |
Цифровые символы |
[:graph:] |
Символы, являющиеся одновременно печатными и видимыми. (Символ конца строки печатный, но не видимый, тогда как $ является и тем, и другим.) |
[:lower:] |
Строчные алфавитные символы |
[:print:] |
Печатные (не управляющие) символы |
[:punct:] |
Знаки пунктуации (не буквы, цифры, управляющие или пробельные символы) |
[:space:] |
Пробельные символы (такие, как сам пробел, символы табуляции, конца строки и т.д) |
[:upper:] |
Заглавные алфавитные символы |
[:xdigit:] |
Символы из набора abcdefABCDEF0123456789 |
- 8.2. Языки программирования Виды программирований
- Проблема с переключением языков. Значок есть, но не работает. Если через Панель управления удалить все языки и тут же сн...
- Как автоматически переключать языки?
- Вопрос совместимости: гибридный программный продукт или гибридные языки?
- 4.5. Unix и объектно-ориентированные языки
- Языки в вашем ноутбуке
- 8 Мини-языки: поиск выразительной нотации
- 14 Языки программирования: С или не С?
- 14.3. Интерпретируемые языки и смешанные стратегии
- А.8. Другие объектно-ориентированные языки программирования
- 12 Языки, отражающие специфику предметной области
- Языки разметки