Pregunta

Estoy buscando un evaluador de expresiones regulares robusto y fácil de usar para C++ nativo, ya sea independiente de la plataforma o específico de Windows.

Requisitos:

  • No se pueden usar las bibliotecas de expresiones regulares Boost o ACE (desafortunadamente)
  • No puedo usar .NET Regex (o cualquier código administrado)

El principal requisito es que sea independiente y abierto.

¿Fue útil?

Solución

C++ 11 ahora incluye soporte para expresiones regulares.Será independiente de la plataforma.Sólo necesitas un compilador reciente.Consulte la siguiente lista para saber cuál utilizar.

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

Espero eso ayude

Otros consejos

intentar libcre

Si estás atascado en Windows, tienen un puerto de Windows que debería funcionar.Sé editor de texto electrónico lo usa, así que al menos eso es prueba de que funciona :-)

Si usa Visual Studio, puede usar Visual C++ 2008 Feature Pack Release, que implementa parte de TR1 e incluye análisis de expresiones regulares. Consíguelo

cuarto también tiene un bonito Expresión regular implementación QRegExp.También es independiente de la plataforma.

La biblioteca GNU C admite expresiones regulares.Está abierto y el código RE parece ser fácilmente extraíble.

La función de expresiones regulares de la biblioteca GNU C (regcomp(), regexec() y amigos) no funciona.Utilice libertre en su lugar;las firmas de funciones coinciden con las proporcionadas por glibc.http://laurikari.net/tre/

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

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

C++ 11 y posteriores ahora contienen el biblioteca de expresiones regulares estándar.
Incluir la <regex> encabezado y uso.

¿Por qué no utiliza la biblioteca de expresiones regulares de Microsoft ATL?Kenny Kerr ha escrito un artículo corto sobre eso recientemente.

ATL incluye una implementación ligera de expresiones regulares.Aunque originalmente es parte de Visual C ++, ahora se incluye con la descarga del servidor ATL.

El CAtlRegExp La plantilla de clase implementa el analizador y el motor coincidente....

La gramática de la expresión regular se define en la parte superior del atlrx.harchivo de cabecera.

La biblioteca y las herramientas del servidor ATL gratuitas de CodePlex incluyen un analizador de expresiones regulares.Ver AtlServer en el archivo CodePlex

ATL Server es una biblioteca de clases de C ++ que permite a los desarrolladores construir partes del cliente y servidor de las aplicaciones y servicios web de tipo C ++ de tipo servicio.Proporciona gran parte de la funcionalidad requerida para construir sitios de Internet a gran escala, como mensajería SOAP, instalaciones de almacenamiento en caché, instalaciones de roscado, procesamiento de expresión regular, gestión del estado de sesión, monitoreo del rendimiento, soporte de MIME, integración con IIS y clase para interactuar con seguridad. e infraestructura criptográfica.Las versiones anteriores de la biblioteca son partes de Visual Studio 2002, Visual Studio 2003 y Visual Studio 2005.El proyecto comenzó a partir de la versión de la biblioteca lanzada como parte de Visual Studio 2005 SP1.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top