2009-05-02 33 views

Respuesta

8

PCRE es la biblioteca de expresiones regulares estándar de facto para C (y también trabaja en C++).

(¿Qué está haciendo su editor no sé Usando una biblioteca como PCRE o cualquiera de los otros sugerido no cambia la sintaxis de C -.. Las definiciones de expresiones regulares siempre se llevan a cabo en las cadenas)

0

No creo que pueda realizar una expresión regular en C++ sin utilizar una biblioteca de terceros. Qt y Gtk +/Gtkmm ambos vienen con estos. Visual C++ 2008 también viene con esta capacidad.

1

Boost.Xpressive le permite escribir regexs como cadenas (como en Boost.Regex) o estáticamente con las plantillas de expresión. Es similar a Boost.Spirit para gramáticas.

Por ejemplo, estos dos son equivalentes:

sregex rex1 = sregex::compile("(\\w+) (\\w+)!"); //normal string based way 
sregex rex2 = (s1= +_w) >> ' ' >> (s2= +_w) >> '!'; //expression template way 
2

Las expresiones regulares son parte de la C++ extensión de la biblioteca estándar definido en TR1 (see Chapter 7 in Documentation). El dinkumware library es decir, ha implementado las extensiones de regEx. No sé sobre otras implementaciones.

Las extensiones son simples y sencillas de usar.

1

Para completar, Qt tiene un QRegExp que puede hacer una coincidencia de expresión regular.
Esto generalmente es bueno si necesita una expresión regular pequeña para una función remota en su aplicación grand Qt. Para algo más serio, PCRE es definitivamente el camino a seguir.

1

No, C++ no tiene, y no va a obtener, expresiones regulares usando la sintaxis /.../ utilizada en algunos idiomas. Tu editor está equivocado.

Como muestran todas las otras respuestas, existen bibliotecas regex para C++ (Y una está programada para su inclusión en C++ 0x), pero procesan cadenas, delimitadas por ", no barras, por lo que no son la razón para el comportamiento de su editor.

0

Si está en Visual Studio puede usar Greta (buscar greta regex) pero creo que es un poco más lento que el boost. Sin embargo, es muy fácil de usar.

1

Si utiliza Visual Studio y la portabilidad no es un problema importante, se pueden obtener resultados muy rápidamente (sin descargas ni instalaciones) con una instalación de ATL linda llamada CAtlRegExp. Contiene un análisis completo y eficiente de RegEx (online sample). Sin embargo, no han comparado su desempeño con BOOST.

Cuestiones relacionadas