[boost] Regex search : trouver l'index
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:
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:
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";
}
} |