Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, eao197, Вы писали:
E>>С тем же успехом можно использовать и PCRE. В режиме Utf-8 сравнение без учета регистра выполняется на ура. Я так PCRE в одном из проектов использую -- с помощью libiconv преобразовываю текст из разных кодировок в utf8, а затем пропускаю через PRCE.
RO>У UTF-8 есть проблемы с регулярными выражениями. Если особая поддержка UTF-8 отсутствует, то выражения вроде «пр[ио]бежала?» будут работать очень странно, потому что парсер воспримет данные буквально — как "пр[\xD0\xB8\xD0\xBE]бежал\xD0\xB0?" — и будет действовать побайтно. Так что с этим следует быть осторожным.
У PCRE есть специальная опция: определение SUPPORT_UTF8 при компиляции PCRE включает нормальную поддержку Utf8. Приведенный вами пример у меня работает нормально.
RO>Тот же boost::make_u32regex(char const *) выполняет перекодирование из UTF-8, а другие могут этого и не делать.
А make_u32regex сам это делает, или нужно тащить за собой еще и ICU framework?
E>>Кстати, начиная, по-моему, с версии 7.0 в состав PCRE входит хороший С++ wrapper для PCRE, написанный в Google (см. заголовочный файл pcrecpp.h). С его помощью работать с PCRE очень просто и удобно.
RO>Я потому советую Boost.Regex, что они простые и что они будут включены в C++09.
Если уж человек взял PCRE, то ему может быть проще на нем же и остаться.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.