Tema: regex c++
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/09/2013, 11:08
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
regex c++

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 C++:
Ver original
  1. texto mas texto<h2>asd</h2>texto mas texto

Expresion regular regex
Código C++:
Ver original
  1. .*<h2>(.*)</h2>.*

Me devuelve
Código C++:
Ver original
  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.


Código:
Código C++:
Ver original
  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