Regex c++11 (Expresiones regulares) con HTML

Iniciado por marcofbb, 5 Septiembre 2013, 03:20 AM

0 Miembros y 1 Visitante están viendo este tema.

marcofbb

Hola,
Estoy iniciando en el mundo de la programación c/c++ y me surgió el siguiente problema.

Con cURL pongo el código de fuente de una web en una variable, y quiero sacar lo que esta dentro de los codigos <h2> y </h2> para ello, utilizo las expresiones regulares que vienen con C++11 donde las llamo con #include <regex>.

Texto de ejemplo
Código (cpp) [Seleccionar]
texto mas texto<h2>asd</h2>texto mas texto

Expresion regular regex
Código (cpp) [Seleccionar]
.*<h2>(.*)</h2>.*

Me devuelve
Código (cpp) [Seleccionar]
  submatch 0: texto mas texto<h2>asd</h2>texto mas texto
  submatch 1: >asd</h2>texto mas texto

Process returned 0 (0x0)   execution time : 0.874 s
Press any key to continue.



Código:
int main()
{
       string s ("texto mas texto<h2>asd</h2>texto mas texto");
       regex e (".*<h2>(.*)</h2>.*");
       smatch sm;
       regex_match (s,sm,e);
       for (unsigned i=0; i<sm.size(); ++i) {
         cout << "  submatch " << i << ": " << sm[i] << '\n';
       }
    return 0;
}


¿Como seria la expresión regular correcta?


Gracias