REGEX(3) Manuel du programmeur Linux REGEX(3)
NOM
regcomp, regexec, regerror, regfree - Fonctions regex
POSIX.
SYNOPSIS
#include <regex.h>
int regcomp (regex_t *preg, const char *regex, int
cflags);
int regexec (const regex_t *preg, const char *string,
size_t nmatch, regmatch_t pmatch[], int
eflags);
size_t regerror (int errcode, const regex_t *preg, char
*errbuf, size_t errbuf_size);
void regfree (regex_t *preg);
COMPILATION REGEX POSIX
regcomp est utilisée pour compiler une expression
régulière sous une forme utilisable par la suite pour des
recherches avec regexec.
On fournit à regcomp les arguments preg, un pointeur vers
une zone de stockage du motif, regex, un pointeur vers une
chaîne terminée par un caractère nul, et cflags, les
attributs indiquant le type de compilation.
Toutes les recherches d'expressions régulières sont
effectuées à travers la zone de motif compilé, ainsi
regexec doit toujours recevoir l'adresse d'un motif ini
tialisé par regcomp.
cflags peut être un OU binaire entre une ou plusieurs con
stantes symboliques suivantes :
REG_EXTENDED
Utiliser la syntaxe d'Expression Régulière Étendue
POSIX pour interpréter regex. Sinon, la syntaxe
d'Expression Régulière de Base POSIX est utilisée.
REG_ICASE
Ne pas différencier les majuscules des minuscules.
Les recherches regexec suivantes utilisant le
buffer de motif n'effectueront pas la différentia
tion.
REG_NOSUB
Ne pas utiliser les correspondances de sous-
chaînes. Les paramètres nmatch et pmatch de
regexec sont ignorés si le buffer de motif est com
pilé avec cet attribut.
REG_NEWLINE
L'opérateur "n'importe-quel-caractère" ne s'identi
fie pas avec le saut de ligne.
GNU 6 Novembre 1996 1
REGEX(3) Manuel du programmeur Linux REGEX(3)
Une liste d'exceptions ([^...]) s'identifie avec
le saut de ligne, même si elle ne le contient pas
explicitement.
L'opérateur Début-de-ligne (^) s'identifie avec une
chaîne vide suivant immédiatement un saut de ligne,
même si l'attribut eflags, de regexec, contient
REG_NOTBOL.
L'opérateur Fin-de-ligne ($) s'identifie avec une
chaîne vide précédant immédiatement un saut de
ligne, même si l'attribut eflags contient
REG_NOTEOL.
CORRESPONDANCE REGEX POSIX
regexec est utilisée pour mettre en correspondance une
chaîne terminée par un caractère nul, avec le buffer de
motif précompilé preg. nmatch et pmatch fournissent des
informations concernant l'emplacement des correspondances.
eflags peut être un OU binaire entre les constantes
REG_NOTBOL ou REG_NOTEOL qui modifient le comportement de
la mise en correspondance décrite ci-dessous.
REG_NOTBOL
L'opérateur Début-de-ligne échoue toujours (mais
voyez l'attribut de compilation REG_NEWLINE ci-
dessus) Cet attribut peut être utilisé quand
différentes portions d'une chaîne sont transmises à
regexec et que le début de la chaine ne correspond
pas à un début de ligne.
REG_NOTEOL
L'opérateur Fin-de-ligne échoue toujours (mais
voyez l'attribut de compilation REG_NEWLINE ci-
dessus)
BYTE OFFSETS
A moins que l'attribut REG_NOSUB n'ait été utilisé lors de
la compilation du motif, il est possible d'obtenir des
informations sur les correspondances de sous-chaînes.
pmatch doit être dimensionnée pour contenir au moins
nmatch éléments. Ils sont remplis par regexec avec les
adresses des sous-chaînes mises en correspondance. Tous
les éléments inutilisés de structure, contiendront la
valeur -1.
La structure regmatch_t du type pmatch est définie dans
regex.h ainsi :
typedef struct
{
regoff_t rm_so;
regoff_t rm_eo ;
} regmatch_t;
GNU 6 Novembre 1996 2
REGEX(3) Manuel du programmeur Linux REGEX(3)
Chaque élément rm_so différent de -1 indique le point de
départ de la sous-chaîne suivante la plus longue qui soit
mise en correspondance. Cette valeur est un décalage (off
set) dans la chaîne. L'élément rm_eo indique le décalage
de la fin de la sous-chaîne.
RETOUR D'ERREUR POSIX
regerror est utilisé pour transformer les codes d'erreur
renvoyés par regcomp et par regexec en libellés.
regerror reçoit le code errcode, le buffer de motif preg,
un pointeur sur une chaîne de caractères errbuf, et la
longueur maximale de cette chaîne errbuf_size. Cette
fonction renvoie la taille errbuf nécessaire pour contenir
le libellé d'erreur terminé par un caractère nul. Si
errbuf et errbuf_size son non nuls, errbuf est rempli avec
les errbuf_size - 1 premiers caractères du libellé
d'erreur, suivis d'un caractère nul.
LIBÉRATION DU BUFFER DE MOTIF POSIX
En fournissant à regfree un buffer de motif précompilé
preg, il libérera la mémoire allouée au buffer durant la
compilation avec regcomp.
VALEUR RENVOYÉE
regcomp renvoie zéro si la compilation réussit, ou un code
d'erreur en cas d'échec.
regexec renvoie zéro si la correspondance réussit, et
REG_NOMATCH si elle échoue.
ERREURS
Les erreurs suivantes peuvent être déclenchées par regcomp
:
REG_BADRPT
Utilisation invalide d'opérateurs de répetition,
comme un caractère `*' en première place.
REG_BADBR
Utilisation illégale de l'opérateur de référence
inverse.
REG_EBRACE
Crochet manquant.
REG_EBRACK
Accolade manquante.
REG_ERANGE
Utilisation illégale de l'opérateur d'intervalle.
Par exemple la fin de l'intervalle est inférieure
au début de l'intervalle.
GNU 6 Novembre 1996 3
REGEX(3) Manuel du programmeur Linux REGEX(3)
REG_ECTYPE
Nom de classe de caractère inconnu.
REG_EPAREN
Parenthèse manquante.
REG_ESUBREG
Référence inverse illégale vers une sous-expres
sion.
REG_EEND
Erreur non-spécifique.
REG_ESCAPE
Séquence d'échappement invalide.
REG_BADPAT
Utilisation illégale d'un opérateur du type groupe
ou liste.
REG_ESIZE
La compilation aurait besoin d'un buffer de taille
supérieure à 64 Ko.
REG_ESPACE
Pas assez de mémoire.
CONFORMITÉ
POSIX
VOIR AUSSI
regex(7), Manuel Regex GNU
TRADUCTION
Christophe Blaess, 1997.
GNU 6 Novembre 1996 4