REGEX
Section: Manuel du programmeur Linux (3) Updated: 21 juillet 2003 Index
NOM
SYNOPSIS
COMPILATION REGEX POSIX
CORRESPONDANCE REGEX POSIX
BYTE OFFSETS
RETOUR D'ERREUR POSIX
LIBÉRATION DU BUFFER DE MOTIF POSIX
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
VOIR AUSSI
TRADUCTION
NOM
regcomp, regexec, regerror, regfree - Fonctions regex POSIX.
SYNOPSIS
#include <regex.h>
u
int regcomp (regex_t *preg, const char *regex,
int cflags);
u
int regexec (const regex_t *preg, const char *string,
size_t nmatch, regmatch_t pmatch[],
int eflags);
u
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 initialisé par
regcomp.
cflags
peut être un
OU binaire
entre une ou plusieurs constantes 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érentiation.
- 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 compilé avec cet attribut.
- REG_NEWLINE
-
L'opérateur "n'importe-quel-caractère" ne s'identifie pas avec le saut de ligne.
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;
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
(offset) 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.
- 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-expression.
- 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, 1996-2003.
|