pcre correspond à tous les groupes en C

Je souhaite faire correspondre un groupe de manière récursive à l’aide de la bibliothèque PCRE C.

par exemple

pattern = "(\d,)" subject = "5,6,3,2," OVECCOUNT = 30 pcrePtr = pcre_comstack(pattern, 0, &error, &erroffset, NULL); rc = pcre_exec(pcrePtr, NULL, subject, (int)strlen(subject), 0, 0, ovector, OVECCOUNT); 

rc est -1 ..

Comment faire correspondre tous les groupes afin que les correspondances soient “5”, “6”, “3”, “2”

Par analogie, preg_match_all de PHP parsing la chaîne entière jusqu’à la fin du sujet …

Essaye ça :

 pcre *myregexp; const char *error; int erroroffset; int offsetcount; int offsets[(0+1)*3]; // (max_capturing_groups+1)*3 myregexp = pcre_comstack("\\d,", 0, &error, &erroroffset, NULL); if (myregexp != NULL) { offsetcount = pcre_exec(myregexp, NULL, subject, strlen(subject), 0, 0, offsets, (0+1)*3); while (offsetcount > 0) { // match offset = offsets[0]; // match length = offsets[1] - offsets[0]; if (pcre_get_subssortingng(subject, &offsets, offsetcount, 0, &result) >= 0) { // Do something with match we just stored into result } offsetcount = pcre_exec(myregexp, NULL, subject, strlen(subject), 0, offsets[1], offsets, (0+1)*3); } } else { // Syntax error in the regular expression at erroroffset } 

Je crois que les commentaires sont explicites?

De toute façon, j’utilisais strtok puisque “,” se répétait après chaque groupe ..

Solution utilisant pcre est la bienvenue ….