Bonjour,
après voir lu le tutorial sur developpez.com à propos de la librairie regex, j'ai un petit problème. Par exemple avec une expression régulière toute simple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
www\.([[:alnum:]]*)\.([[:lower:]]*)
J'aimerai non pas extraire le motif correspondant à l'expression régulière mais les sous-chaines correspondants aux parenthèses de mon motif.

Avec la structure regmatch_t *pmatch;

ou

pmatch[0].rm_so; est l'indice du premier caractère du motif
pmatch[0].rm_eo; est l'indice du dernier caractère du motif

je pensais que :

pmatch[1].rm_so; etait l'indice du premier caractère de la sous chaine correspondant à la parenthèse 1.
pmatch[1].rm_eo; etait l'indice du dernier caractère de la sous chaine correspondant à la parenthèse 1.

Mais apparemment pas du tout.
J'utilise donc ce code qui ne fonctionne pas.

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
23
24
25
26
27
28
29
30
31
 
regcomp (&preg, motif, REG_EXTENDED);
	pmatch = malloc (sizeof (*pmatch) * nmatch);
	nmatch = preg.re_nsub;
      	if(pmatch)
      	{
		while(regexec (&preg, chaine, nmatch, pmatch, 0) == 0)
         	{
			for(i = 1; i <= nmatch; i ++)
			{
        			trouv = NULL;
 
				start = pmatch[i].rm_so;
        			end = pmatch[i].rm_eo;
        			size = end - start;
 
        			trouv = malloc (sizeof (*trouv) * (size + 1));
        			if(trouv)
        			{
       					strncpy (trouv, &chaine[start], size);
       					trouv[size] = 0;
 
					m[j++]= trouv;
				}
			}
 
                      	chaine = chaine + end;	
         	}
	}
 
	regfree(&preg);
Est-il possible de faire donc une capture de parenthèses avec cette librairie ?
si non vers quel librairie dois-je me tourner ?

Merci