суббота, 10 сентября 2016 г.

Регулярные выражения C/C++

Это фактически продолжение предыдущего текста Языковая локализация. И планировалось оно как небольшая глава в тот общий текст. Но разбирательство потянуло за собой всё большее расширение объёма. Вопрос изначально стоял узко: как поведут себя инструменты обработки регулярных выражений с Unicode/UTF-8 строками? Тем более, когда мультибайтные Unicode символы символы станут появляться и в шаблонах регулярных выражений и в самих сопоставляемых строках. Ну, например, что и как происходит вот в таком простейшем случае:

$ echo "слово слава слива" | grep сл[о,а]
слово слава слива

Там всё не так однозначно просто ... и некоторые детали не ясны до конца. Связано это с тем, что все инструменты (библиотеки) сопоставления с регулярными выражениями в C и в C++ до стандарта 2011г. не могут работать со строками широких локализованных символов (wchar_t[], wstring). По крайней мере, я таких не знаю.

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

Сам текст : на Yandex и на на Google
Редакция 05, от 10.09.2016, стр. 13.

Архив примеров кода на Yandex и на на Google

Все не ясные моменты (а они там есть), замечания и предложения по тексту - обсуждаем здесь: регулярные выражения в C/C++... и это может заметно улучшить освещение вопроса. Там же, по ссылке, найдёте книги (переводы), из числа наилучших, по регулярным выражениям, и ссылки для их свободного скачивания.