106 votes

C ++: quelle bibliothèque de regex dois-je utiliser?

Je suis en train de travailler sur un commercial (non open source) projet C++ qui s'exécute sur un système linux. J'ai besoin de faire des regex dans le code C++. (Je sais: j'ai maintenant 2 problèmes.)

QUESTION: Quels sont les bibliothèques des gens qui le font régulièrement regex à partir de C/C++ recommander je regarde? Une recherche rapide a apporté les éléments suivants à mon attention:

1) coup de pouce.Regex (j'ai besoin d'aller lire le coup de pouce de Licence du Logiciel, mais cette question n'est pas sur les licences de logiciels)

2) C (pas C++) regex POSIX (#include <regex.h>, regcomp, regexec, etc.)

3) http://freshmeat.net/projects/cpp_regex/ (je ne sais rien à ce sujet; semble être sous GPL, donc pas utilisable sur ce projet)

Merci.

80voto

Ferruccio Points 51508

Coup de pouce.Regex est très bon et est destiné à devenir une partie de C++0x standard (c'est déjà dans TR1).

Personnellement, je trouve Boost.Xpressive beaucoup plus agréable de travailler avec. C'est un en-tête uniquement de la bibliothèque et il a quelques fonctionnalités intéressantes comme statique regexes (regexes compilé au moment de la compilation).

Mise à jour: Si vous utilisez un C++11 compatible compilateur, utiliser std::regex , sauf si vous avez une bonne raison d'utiliser autre chose.

22voto

Stéphane Points 3900

Merci pour toutes les suggestions.

J'ai essayé quelques solutions aujourd'hui et, avec ce que nous essayons de faire, j'ai opté pour la solution la plus simple, qui ne nécessite aucun téléchargement de bibliothèque tierce. En fin de compte, j'ai #include <regex.h> et utilisé les appels standard C POSIX, regcomp () et regexec (). Pas C ++, mais à la rigueur, cela s’est avéré le plus simple.

19voto

Greg Hewgill Points 356191

Dans les projets C ++ passés, j'ai utilisé PCRE avec succès. Il est très complet et bien testé car il est utilisé dans de nombreux projets de haut niveau. Et je vois que Google a récemment fourni un ensemble de wrappers C ++ pour PCRE.

16voto

Kasprzol Points 2954

C++ depuis une bibliothèque de regex builtin TR1. Bibliothèque de regex autant que je sache Boost est très compatible avec celle-ci et peut être utilisé comme un remplacement, si votre bibliothèque standard ne fournit pas de TR1.

10voto

Robert Gould Points 29406

Boost a regex dedans.

Cela devrait remplir la facture

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X