Déterminer si une chaîne de caractères correspond au motif précisé dans une expression régulière

Problème

Vous voulez tester une chaîne de caractères par rapport au motif d’une expression régulière.

Solution

Utilisez regcomp() et regexec() pour effectuer ce test.

Discussion

Les expressions régulières, moins faciles à utiliser en C que dans d’autres langages tels que Perl, Python ou PHP, ne doivent pas pour autant laisser la place à des solutions fondées sur des pointeurs, des boucles et des tests sur chaque caractère (à moins d’un cas simple). Pour les utiliser, nous avons besoin d’un espace mémoire de type regex_t qui est rempli par regcomp().

Cette fonction compile l’expression régulière fournie en argument pour la transformer en une forme interne utilisée par regexec(). Celle-ci renvoie une valeur indiquant si la chaîne testée correspond à l’expression régulière, et est capable de remplir un tableau d’éléments de type regmatch_t contenant les indices des début et fin des sous-chaînes correspondant aux motifs entre parenthèses dans l’expression régulière. Ce tableau doit contenir autant d’éléments que de parenthèses dans l’expression régulière, plus un. En effet, le premier élément du tableau contient les indices...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Déterminer si une chaîne de caractères est contenue dans une autre et à quelle position
Suivant
Trouver le nombre d'occurrences d'une chaîne de caractères dans une autre