2008-08-04 11 views
21

Estoy buscando un evaluador de expresiones regulares robusto, fácil de usar para C++ nativo, independiente de la plataforma o específico de Windows.Soporte de expresión regular fácil de usar en C++?

Requisitos:

  • No se puede usar Boost o librerías de ACE de expresiones regulares (por desgracia)
  • no pueden utilizar expresiones regulares de .NET (o cualquier código administrado)

El requisito principal es que debería ser independiente y abierto.

+0

Simplemente curioso: ¿por qué no puedes usar boost? – svec

+0

@svec Porque el código fuente es para distribución, y muchos de los que lo usan no tienen Boost, y no pueden o no quieren descargar y compilar Boost. Pero algunas de las bibliotecas están programadas para su inclusión, eso es bueno. Debería haber sucedido hace 5 años, pero oye. Por todos los medios. –

+1

Pero no es necesario que los clientes tengan instalado boost. Simplemente enlace estáticamente con boost, y no debería haber ningún problema. (Y siempre debe vincular estáticamente con boost de todos modos, ya que incluso si los clientes lo tienen instalado, es posible que no tengan la misma versión o que lo hayan compilado con las mismas opciones). –

Respuesta

8

tratar libpcre

Si está atrapado en las ventanas que tienen un puerto de las ventanas que debe trabajar. Sé que e-texteditor lo usa, así que al menos eso es una prueba de que funciona :-)

3

La biblioteca C de GNU admite regular expressions. Está abierto, y el código RE parece ser fácilmente extraíble.

3

La función de expresiones regulares de la biblioteca C de GNU (regcomp(), regexec() y amigos) está rota. Use libetre en su lugar; las firmas de función coinciden con las proporcionadas por glibc. http://laurikari.net/tre/

7

Si usa Visual Studio, puede usar Visual C++ 2008 Feature Pack Release, esto implementa parte de TR1 e incluye el análisis de expresiones regulares. Get it

1

¿Por qué no utiliza la biblioteca de expresiones regulares de Microsoft ATL? Kenny Kerr ha escrito un short article recientemente. Espero eso ayude.

3

Recomendaría la recomendación para PCRE. Lo he usado en proyectos de C++ en Windows y funciona muy bien. Es gratis, incluso para desarrollar software comercial. También implementa algo así como un lenguaje de expresión regular estándar de facto, que será bienvenido a sus usuarios. PCRE es, por supuesto, compatible con Perl, y Python también usa la misma biblioteca.

La interfaz PCRE nativa es un poco incómoda y muy al estilo C, por lo que es probable que valga la pena escribir un buen envoltorio de C++ a su alrededor. Es muy probable que ya exista uno, pero no estoy familiarizado con ninguno.

0

La libre biblioteca del servidor ATL de Codeplex incluye un analizador de expresiones regex.

ATL Server

Cuestiones relacionadas