Soporte de Expresión Regular Fácil de Usar en C++? [cerrado]


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

Requisitos:

  • No se pueden usar las bibliotecas Boost o ACE regex (desafortunadamente)
  • No se puede usar. NET Regex (o cualquier código administrado)

El requisito principal es que debe ser independiente y abierto.

 23
Author: NullUserException, 2008-08-04

10 answers

C++11 ahora incluye el soporte de expresiones regulares. Será independiente de la plataforma. Solo necesitas un compilador reciente. Consulte la siguiente lista para saber cuál usar.

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

Espero que ayude

 9
Author: Gabriel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-20 08:44:46

Try libpcre

Si está atascado en Windows, tienen un puerto de Windows que debería funcionar. Sé que e-texteditor lo usa, así que al menos eso es prueba de que funciona: -)

 10
Author: Orion Edwards,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-04 06:23:51

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. Consíguelo

 8
Author: vzczc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-04 19:44:24

Qt también tiene una Expresión Regular implementación QRegExp. También es independiente de la plataforma.

 8
Author: masc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-04 12:34:20

La Biblioteca C de GNU soporta expresiones regulares. Está abierto, y el código RE parece ser fácilmente extraíble.

 5
Author: Mark Harrison,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-04 06:41:29

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

 4
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-04 12:23:35

Secundaría la recomendación para PCRE. Lo he usado en proyectos de C++ en Windows y funciona muy bien. Es gratis, incluso para la construcción de software comercial. También implementa algo así como un lenguaje de expresión regular estándar de facto, que será bienvenido para 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 al estilo C, por lo que probablemente vale la pena escribir un buen envoltorio de C++ a su alrededor. Es muy probable que ya haya uno por ahí, pero no estoy familiarizado con ninguno.

 4
Author: Greg Hewgill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-11 08:25:13

C++11 y forward ahora contiene la biblioteca de expresiones regulares .
Incluya el encabezado <regex> y utilícelo.

 3
Author: Trevor Hickey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-08 14:36:25

¿Por qué no usas la biblioteca regex de Microsoft ATL? Kenny Kerr ha escrito un breve artículo sobre eso recientemente.

ATL incluye una implementación ligera de expresiones regulares. Aunque originalmente parte de Visual C++, ahora se incluye con el servidor ATL descargar.

La plantilla de clase CAtlRegExp implementa el analizador y la coincidencia motor. ...

La gramática de expresiones regulares se define en la parte superior de la atlrx.h archivo de cabecera.

 2
Author: martinsb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-31 23:08:29

La Biblioteca gratuita del servidor ATL y las Herramientas 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 cliente y servidor de aplicaciones C++ y web de tipo servicio Servicio. Proporciona gran parte de la funcionalidad necesaria para construir sitios de Internet a gran escala, como mensajería SOAP, almacenamiento en caché instalaciones, instalaciones de roscado, procesamiento de expresión regular, gestión del estado de la sesión, supervisión del rendimiento, soporte MIME, integración con IIS y class para interactuar con la seguridad y infraestructura criptográfica. Las versiones anteriores de la biblioteca son partes de Visual Studio 2002, Visual Studio 2003 y Visual Studio 2005. El proyecto ha comenzado a partir de la versión de la biblioteca lanzada como parte de Visual Studio 2005 SP1.

 1
Author: Rob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-31 23:16:21