BOOST :: REGEX PATTERN IMPOSSIBLE ?
Salut à tous,
J'ai un soucis avec un pattern que je n'arrive pas à trouver..
Mon but est d'avoir une regex qui match uniquement les fonctions de ce style :
nomFonction ( paramètres ) { \\ je me fiche du type de retour, seul le nom m'interresse. :mrgreen:
j'arrive facilement à matcher avec cette regex la :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
void test(string& stringFile){
string::iterator start, end;
boost::regex expression(
"\\w+\\s*\\("
"[\\s\\w=<>/!%&,:~\\-\\'\\\"\\`\\^\\.\\[\\]\\$\\(\\)\\*\\+\\|\\\\]+\\)\\s*\\{"
);
start = stringFile.begin();
end = stringFile.end();
boost::match_results<string::iterator> what;
while(regex_search(start, end, what, expression, boost::format_first_only))
{
cout << what[0].str() << endl;
start = what[0].second;
}
}//test |
Mais le problème, c'est que je prend aussi tous les if,for,while,switch et compagnie..
Alors j'ai essayé de dire pour le début de la regex (c'est uniquement ce qui m'interresse ici :p) qu'elle devait prendre tous les "mots" SAUF le mot "if", "while", etc.. pour un mot global car si la fonction se nomme "positif" par exemple je souhaiterais la gardée :)
Donc, je n'y arrive pas, j'ai parcourue la doc de PERL toute la journée, les forums et google sans résultat probant.. Alors, es-ce possible de faire cette regex sans avoir a faire un substring et un if (match != "if" && match != "while" etc..)
Je crack :aie: criiiiiiiii.
Merci pour votre aide.