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.
j'arrive facilement à matcher avec cette regex la :
Mais le problème, c'est que je prend aussi tous les if,for,while,switch et compagnie..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 crackcriiiiiiiii.
Merci pour votre aide.
Partager