Есть ли в C или С++ стандартная библиотека регулярных выражений?
Это? Если да, где я могу получить документацию для него... если нет, то какая из них будет лучшей альтернативой?
Ответы
Ответ 1
С++ 11 теперь, наконец, имеет - std:: regex.
Если у вас нет доступа к реализации С++ 11, хорошей альтернативой может быть boost regex. Это не полностью эквивалентно std:: regex (например, метод empty() не находится в std:: regex), но это очень зрелая реализация регулярного выражения тем не менее, для С++.
Ответ 2
В UNIX-подобных системах вы можете использовать функции регулярного выражения POSIX.
Ответ 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).
Ответ 6
Регулярные выражения являются частью расширения С++ С++. Dinkumware, визуальная студия и другие уже реализовали это.
См.
Быстрый старт для регулярных выражений С++ TR1
Visual С++ 2008 Feature Pack
Ответ 7
Qt, от Trolltech, также имеет реализацию регулярного выражения, которую я считаю очень простой в использовании. Однако, если вы не планируете использовать Qt для чего-либо еще, я бы использовал Boost.Regex, поскольку вам, вероятно, было бы неплохо использовать Boost для других целей.
Ответ 8
Стандарт ISO/IEC 14882: 2011 Язык программирования С++ описывает класс regex как часть библиотеки С++, на которую сильно влияет библиотека зрелого Boost.
Любопытно, что с января 2013 года соблюдение компиляторами этого стандарта все еще является пятнистым, например. популярный компилятор компилятора GNU, популярный компилятор С++, не поддерживает/не выполняет эту часть стандарта.
По этой причине лучше использовать Boost в этот момент времени, пока поддержка компилятора не достигнет соответствия.
Ответ 9
+1 для PCRE - Perl Compatible Regular Expression, я помню, используя Mircosoft GRETA.