Sous-routine regcomp
Objectif
Compile une expression régulière de base ou étendue spécifiée dans une chaîne exécutable.
Bibliothèque
Bibliothèque C standard (libc. a)
Syntaxe
Descriptif
La sous-routine regcomp compile l'expression régulière de base ou étendue spécifiée par le paramètre Motif et place la sortie dans la structure désignée par le paramètre Prég .
Paramètres
| Article | Descriptif |
|---|---|
| Prég | Indique la structure devant recevoir la sortie compilée de la sous-routine regcomp . |
| Schéma | Contient l'expression régulière de base ou étendue à compiler par la sous-routine regcomp . Le type d'expression régulière par défaut du paramètre Modèle est une expression régulière de base. Une application peut spécifier des expressions régulières étendues avec l'indicateur |
| Drapeaux CF | Contient le OU inclusif bit à bit de 0 ou plusieurs indicateurs pour la sous-routine regcomp . Ces indicateurs sont définis dans le fichier regex.h :
|
Valeurs renvoyées
Si l'opération aboutit, la sous-routine regcomp renvoie la valeur 0. Sinon, elle renvoie une autre valeur indiquant le type d'échec et le contenu du paramètre Preg n'est pas défini.
Codes d'erreur
Les noms de macro suivants pour les codes d'erreur peuvent être écrits dans la variable globale errno en cas d'erreur:
| Article | Descriptif |
|---|---|
REG_BADPAT |
Indique une expression régulière de base ou étendue qui n'est pas valide. |
REG_ECOLLATE |
Indique un élément de classement référencé qui n'est pas valide. |
REG_ECTYPE |
Indique une référence de type de classe de caractères non valide. |
REG_EESCAPE |
Indique un \ de fin dans le modèle. |
REG_ESUBREG |
Indique qu'un nombre dans \digit n'est pas valide ou qu'il est erroné. |
REG_EBRACK |
Indique un déséquilibre [] . |
REG_EPAREN |
Indique un déséquilibre \(\) ou () . |
REG_EBRACE |
Indique un déséquilibre \{\} . |
REG_BADBR |
Indique que le contenu de \{\} est inutilisable: pas un nombre, nombre trop grand, plus de deux nombres ou premier nombre supérieur à la seconde. |
REG_ERANGE |
Indique un point de terminaison inutilisable dans une expression de plage. |
REG_ESPACE |
Indique que la mémoire est en mémoire. |
REG_BADRPT |
Indique un? (point d'interrogation), * (astérisque) ou + (signe plus) non précédée d'une expression régulière de base ou étendue valide. |
Si la sous-routine regcomp détecte une expression régulière de base ou étendue non conforme, elle peut renvoyer le code d'erreur REG_BADPAT ou un autre qui décrit plus précisément l'erreur.
Exemples
L'exemple suivant illustre comment faire correspondre une chaîne (spécifiée dans le paramètre Chaîne ) à une expression régulière étendue (spécifiée dans le paramètre Modèle ):
#include <sys/types.h>
#include <regex.h>
int
match(char *string, char *pattern)
{
int status;
regex_t re;
if (regcomp(&re, pattern, REG_EXTENDED|REG_NOSUB) != 0) {
return(0) ; /* report error */
}
status = regexec(&re, string, (size_t) 0, NULL, 0);
regfree(&re);
if (status != 0) {
return(0) ; /* report error */
}
return(1);
}Dans l'exemple précédent, les erreurs sont traitées comme étant sans correspondance. En l'absence de correspondance ou d'erreur, le processus appelant peut obtenir des détails en appelant la sous-routine regerror .