Есть ли в C или С++ стандартная библиотека регулярных выражений?

Это? Если да, где я могу получить документацию для него... если нет, то какая из них будет лучшей альтернативой?

Ответы

Ответ 1

С++ 11 теперь, наконец, имеет - std:: regex.

Если у вас нет доступа к реализации С++ 11, хорошей альтернативой может быть boost regex. Это не полностью эквивалентно std:: regex (например, метод empty() не находится в std:: regex), но это очень зрелая реализация регулярного выражения тем не менее, для С++.

Ответ 3

В Microsoft Visual С++ 2008 Feature Pack 1 (который теперь загружен в пакет обновления 1 для Visual Studio 2008) реализована реализация "официальных" типов TR1 reg ex. Выключитесь: -)

Ответ 4

Проверьте boost regex. Он должен стать частью стандарта с С++ 0x.

Ответ 5

Если по стандарту вы имеете в виду в комплекте с компилятором, то нет. Но большинство других языков, которые связывают расширение регулярного выражения, используют довольно стандартные реализации c. Например. PCRE - Perl Compatible Regular Expression, а библиотеки C поддерживают регулярное выражение POSIX (см. man).

Ответ 7

Qt, от Trolltech, также имеет реализацию регулярного выражения, которую я считаю очень простой в использовании. Однако, если вы не планируете использовать Qt для чего-либо еще, я бы использовал Boost.Regex, поскольку вам, вероятно, было бы неплохо использовать Boost для других целей.

Ответ 8

Стандарт ISO/IEC 14882: 2011 Язык программирования С++ описывает класс regex как часть библиотеки С++, на которую сильно влияет библиотека зрелого Boost.

Любопытно, что с января 2013 года соблюдение компиляторами этого стандарта все еще является пятнистым, например. популярный компилятор компилятора GNU, популярный компилятор С++, не поддерживает/не выполняет эту часть стандарта.

По этой причине лучше использовать Boost в этот момент времени, пока поддержка компилятора не достигнет соответствия.