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 :
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
Je me suis dit que c'était un travail de regex, mais j'en ch*e

Voici mon code avec la regex que je tente de mettre au point :
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
      [...]
}
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.

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 !