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 :
J'aimerai non pas extraire le motif correspondant à l'expression régulière mais les sous-chaines correspondants aux parenthèses de mon motif.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 www\.([[:alnum:]]*)\.([[:lower:]]*)
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.
Est-il possible de faire donc une capture de parenthèses avec cette librairie ?
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);
si non vers quel librairie dois-je me tourner ?
Merci
Partager