Capturer des sous-chaînes avec regexec
Bonjour,
J'ai lu les pages écrites par nicolasj sur developpez.net à propos de REGEX.
J'ai néanmoins des questions sans réponses, notamment à propos de la capture de sous-chaînes.
Imaginons le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
const char *str_request = "ADD $2, $3, $4"; /*La chaine a tester*/
const char *str_regex = "ADD \\$([0-9]), \\$([0-9]), \\$([0-9])"; /* La grammaire */
[...] regcomp (&preg, str_regex, REG_EXTENDED);
[...] match = regexec (&preg, str_request, nmatch, pmatch, 0);
/* regexec retourne 0 en cas de succès */
if (match == 0) {
char *chaine = NULL;
int start = pmatch[0].rm_so;
int end = pmatch[0].rm_eo;
size_t size = end - start;
/* Allocation mémoire correspondante, A QUOI ? */
chaine = malloc (sizeof (*chaine) * (size + 1));
if (chaine){
strncpy (chaine, &str_request[start], size);
chaine[size] = '\0';
printf ("La chaine capturée est : %s\n", chaine);
free (chaine);
}
} |
Ce code affiche toute la chaine d'origine.
Or, en ayant mis des parenthèses capturantes autour des [0-9], je souhaiterai les récupérer.
La question est donc : "Comment accéder aux valeurs récupérées par les parenthèses ?"
D'avance, merci beaucoup.