Есть ли в C или C ++ стандартная библиотека регулярных выражений? - PullRequest
17 голосов
/ 14 сентября 2009

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

Ответы [ 9 ]

31 голосов
/ 14 сентября 2009

C ++ 11 теперь, наконец, имеет стандартную библиотеку регулярных выражений - std :: regex.

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

7 голосов
/ 14 сентября 2009

В UNIX-подобных системах вы можете использовать функции регулярного выражения POSIX .

6 голосов
/ 14 сентября 2009

Microsoft Visual C ++ 2008 Feature Pack 1 (теперь включен в Visual Studio 2008 Service Pack 1) содержит реализацию «официальных» TR1 reg ex типов. Вышибись: -)

5 голосов
/ 14 сентября 2009

Проверьте библиотеку boost regex . Он должен стать частью стандарта с C ++ 0x.

3 голосов
/ 14 сентября 2009

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

2 голосов
/ 14 сентября 2009

Регулярные выражения являются частью расширения C1 TR1. Dinkumware, visual studio и другие уже реализовали это. Смотри

Быстрый старт для регулярных выражений C ++ TR1

Пакет функций Visual C ++ 2008

1 голос
/ 13 января 2013

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

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

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

1 голос
/ 14 сентября 2009

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

0 голосов
/ 14 сентября 2009

+ 1 для PCRE - регулярное выражение, совместимое с Perl , я вспомнил, что использовал GRETA от Mircosoft.

...