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 : 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
 
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.