Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]
REGEX
Index
- NOM
- SYNOPSIS
- COMPILATION D'EXPRESSIONS RATIONNELLES POSIX
- CORRESPONDANCE D'EXPRESSION RATIONNELLES POSIX
- DÉCALAGE D'OCTETS
- RETOUR D'ERREUR POSIX
- LIBÉRATION DU TAMPON DE MOTIF POSIX
- VALEUR RENVOYÉE
- ERREURS
- CONFORMITÉ
- VOIR AUSSI
- TRADUCTION
NOM
regcomp, regexec, regerror, regfree - Fonctions POSIX pour les expressions
rationnelles (« regex »)
SYNOPSIS
#include <sys/types.h>
#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 D'EXPRESSIONS RATIONNELLES 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 tampon de motif n'effectueront pas la
différenciation.
- REG_NOSUB
-
Ne pas utiliser les correspondances de sous-chaînes. Les paramètres
nmatch et pmatch de regexec() sont ignorés si le tampon 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 ([^...]) ne contenant pas de saut de ligne ne
s'identifie pas avec un saut de ligne.
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 D'EXPRESSION RATIONNELLES POSIX
regexec() est utilisée pour mettre en correspondance une chaîne terminée
par un caractère nul, avec le tampon 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 chaîne 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)
DÉCALAGE D'OCTETS
À 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.
-
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. 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 tampon 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 TAMPON DE MOTIF POSIX
En fournissant à regfree() un tampon de motif précompilé preg, il
libérera la mémoire allouée au tampon 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_BADBR
-
Utilisation illégale de l'opérateur de référence inverse.
- REG_BADPAT
-
Utilisation illégale d'un opérateur du type groupe ou liste.
- REG_BADRPT
-
Utilisation invalide d'opérateurs de répétition, comme un caractère « * » en première place.
- REG_EBRACE
-
Accolade manquante.
- REG_EBRACK
-
Crochet manquant.
- REG_ECOLLATE
-
Élément de classement invalide.
- REG_ECTYPE
-
Nom de classe de caractère inconnu.
- REG_EEND
-
Erreur non spécifique. Elle n'est pas définie par POSIX.2.
- REG_EESCAPE
-
Barre oblique inverse de fin.
- REG_EPAREN
-
Parenthèse 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_ESIZE
-
La compilation aurait besoin d'un tampon de taille supérieure à 64 Ko. Ce
n'est pas défini par POSIX.2.
- REG_ESPACE
-
Les routines regex ont épuisé la mémoire.
- REG_ESUBREG
-
Référence inverse illégale vers une sous-expression.
CONFORMITÉ
POSIX.1-2001.
VOIR AUSSI
regex(7), Manuel GNU pour les expressions rationnelles
TRADUCTION
Cette page de manuel a été traduite et mise à jour par
Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003,
puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction par un rapport de bogue sur
le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en
utilisant la commande
« man -L C <section> <page_de_man> ».
|