Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: marcofbb en 5 Septiembre 2013, 03:20 am



Título: Regex c++11 (Expresiones regulares) con HTML
Publicado por: marcofbb en 5 Septiembre 2013, 03:20 am
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
  1. texto mas texto<h2>asd</h2>texto mas texto

Expresion regular regex
Código
  1. .*<h2>(.*)</h2>.*

Me devuelve
Código
  1.  submatch 0: texto mas texto<h2>asd</h2>texto mas texto
  2.  submatch 1: >asd</h2>texto mas texto
  3.  
  4. Process returned 0 (0x0)   execution time : 0.874 s
  5. Press any key to continue.
  6.  


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

¿Como seria la expresión regular correcta?


Gracias