Support d'expressions régulières facile à utiliser en C ++?

Je suis à la recherche d'un évaluateur d'expressions régulières robuste, facile à utiliser, pour C ++ natif, indépendant de la plate-forme ou spécifique à Windows.

Exigences:

  • Impossible d'utiliser les bibliothèques regex de Boost ou ACE (malheureusement)
  • Impossible d'utiliser .NET Regex (ou tout code managé)

L'exigence principale est qu'il devrait être autonome et ouvert.

0
Mais les clients n'ont pas besoin d'avoir de boost installé. Juste lien statique avec boost, et il ne devrait y avoir aucun problème. (Et vous devriez toujours lier statiquement avec boost, car même si les clients l'ont installé, ils peuvent ne pas avoir la même version, ou l'ont compilé avec les mêmes options.)
ajouté l'auteur James Kanze, source
@JamesDevlin Je ne sais pas à propos de l'expédition avec Boost; Boost n'est pas une panacée, et je choisis de l'utiliser ou non au cas par cas. (En fait, puisque je peux maintenant utiliser C ++ 11, je n'utilise pas du tout Boost, à peu près tout ce que je faisais auparavant était des expressions régulières.)
ajouté l'auteur James Kanze, source
Juste curieux - pourquoi ne pouvez-vous pas utiliser boost?
ajouté l'auteur svec, source

9 Réponses

La bibliothèque GNU C prend en charge les expressions régulières . C'est ouvert, et le code RE semble être facilement extractible.

0
ajouté

If you use Visual Studio you can use Visual C++ 2008 Feature Pack Release, this implements some of TR1, and includes regular expression parsing. Get it

0
ajouté

try libpcre

Si vous êtes coincé sur les fenêtres, ils ont un port Windows qui devrait fonctionner. Je sais que e-texteditor l'utilise, donc au moins c'est la preuve que ça marche :-)

0
ajouté

Pourquoi n'utilisez-vous pas la bibliothèque regex de Microsoft ATL? Kenny Kerr a écrit un bref article sur ce sujet récemment.

ATL inclut une implémentation d'expression régulière légère. Bien que   à l'origine partie de Visual C ++, il est maintenant inclus avec le serveur ATL   téléchargement.

     

Le modèle de classe CAtlRegExp implémente l'analyseur et la correspondance   moteur. ...

     

La grammaire de l'expression régulière est définie en haut du atlrx.h   fichier d'en-tête.

0
ajouté

C++11 and forward now contains the standard regular expression library.
Include the header, and use.

0
ajouté

The free ATL Server Library and Tools from CodePlex includes a regex parser. See AtlServer in the CodePlex Archive

ATL Server est une bibliothèque de classes C ++ permettant aux développeurs de créer   les parties client et serveur des applications C ++ de type service et web   prestations de service. Il fournit la plupart des fonctionnalités requises pour construire   sites Internet à grande échelle, tels que la messagerie SOAP, la mise en cache   installations, threading facilities, traitement d'expression régulière,   gestion de l'état des sessions, suivi des performances, support MIME,   l'intégration avec IIS et la classe pour interagir avec la sécurité et   infrastructure cryptographique. Les versions antérieures de la bibliothèque sont   parties de Visual Studio 2002, Visual Studio 2003 et Visual Studio   2005. Le projet a démarré à partir de la version de la bibliothèque publiée dans le cadre de Visual Studio 2005 SP1.

0
ajouté

J'appuie la recommandation pour PCRE . Je l'ai utilisé dans des projets C ++ sous Windows et ça marche très bien. C'est gratuit, même pour la construction de logiciels commerciaux. Il implémente également quelque chose d'un langage d'expression régulière standard de facto, qui sera le bienvenu pour vos utilisateurs. PCRE est bien sûr compatible Perl, et Python utilise également la même bibliothèque.

L'interface PCRE native est un peu maladroite et très style C, donc ça vaut probablement la peine d'écrire un joli wrapper C ++ autour. Il y en a probablement déjà un, mais je n'en connais aucun.

0
ajouté

C ++ 11 inclut désormais le support des expressions régulières. Ce sera indépendant de la plateforme. Vous avez juste besoin d'un compilateur récent. Vérifiez la liste suivante pour savoir lequel utiliser.

http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport

J'espère que cela aide

0
ajouté

Qt has also a nice Regular Expression implementation QRegExp. It is also platform independent.

0
ajouté