Bonjour à tous...
À nouveau un petit problème sur un thème que je ne maîtrise pas bien du tout : les regex... Alors voici mon problème...
J'ai un tableau de std::string au format suivant, pour lesquelles je souhaite extraire chaque valeur numérique :
Je me suis dit que c'était un travail de regex, mais j'en ch*e
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 4354 10885 3536 3536 22 0 620 0 4354 10885 3536 3536 22 0 620 0 4354 10885 3536 3536 22 0 620 0
Voici mon code avec la regex que je tente de mettre au point :
Pour chaque ligne de texte, la fonction ne me retourne aucun champ exploitable (on boucle avec continue). J'ai essayer plusieurs forme de formule regex, ainsi que quelques paramètres au niveau de l'appel regex_match mais en vain.
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 //string regex_str = R"((\S+)[\t\n]/g)"; string regex_str = R"((\S+)[\t\n])"; boost::regex reg(regex_str); for(auto &line : file_dataset) { // Extract data /* 'line' contient la ligne de texte présentée ci-dessus */ boost::smatch results; //if(!boost::regex_match(line, results, reg)) if(!boost::regex_match(line, results, reg, boost::match_any)) { cerr << "* " << line << endl; continue; } // Data processing [...] }
Avant de me lancer dans l'exploitation de cette reger, je l'ai testé en ligne sur le site https://regex101.com. Avec l'option /g, cette regex est pleinement fonctionnelle.
Avez vous des pistes de réflexion sur cette utilisation ? Le testeur de regex est en mode PCRE, mais je ne sais pas si boost_regex est dans le même mode ni comment lui demander...
de vos précieux conseils !
![]()
![]()
Partager