Bonjour à tous,

Avant tout, je dois vous dire que je viens du monde python / C. Je suis très newbie en C++ et encore plus en Boost, j'ai donc besoin de votre aide pour y voir plus clair.

J'ai deux soucis avec la librairie boost::regex :

Je cherche la position des tous les motifs (Avec chevauchement !) correspondant à mon expression régulières.

J'ai utilisé le morceau de code ci-dessous, pour gérer le chevauchement j'utiliser
Code : Sélectionner tout - Visualiser dans une fenêtre à part
start = what[0].second - 1;
Est-ce propre ou faut-il mieux faire autrement ?

Deuxième problème, majeur pour moi, comment récupérer la position du motif dans la chaîne ??? Je patauge complètement, j'ai un itérateur mais pas moyen d'avoir cette information.

Merci pour votre aide,

Choupi

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void testSearch(const boost::regex &ex, const string st) {
 cout << "Searching " << st << endl;
 string::const_iterator start, end;
 start = st.begin();
 end = st.end();
 boost::match_results <std::string::const_iterator> what;
 boost::match_flag_type flags = boost::match_default;
 while(boost::regex_search(start, end, what, ex, flags))
 {
     cout << " " << what.str() << "\n";
     start = what[0].second - 1;
     cout << " " << what.position () << "\n";
 }
}