REGEX(3) Manuel du programmeur Linux REGEX(3)
regcomp, regexec, regerror, regfree - Fonctions POSIX pour les expres-
sions rationnelles ( regex )
#include <sys/types.h>
#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 d'expressions rationnelles POSIX
regcomp() est utilise pour compiler une expression rationnelle 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 chane termine par un
caractre nul, et cflags, les attributs indiquant le type de compila-
tion.
Toutes les recherches d'expressions rationnelles sont effectues
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 symbol-
iques suivantes :
REG_EXTENDED
Utiliser la syntaxe d'expression rationnelle tendue POSIX pour
interprter regex. Sinon, la syntaxe d'expression rationnelle de
base POSIX est utilise.
REG_ICASE
Ne pas diffrencier les majuscules des minuscules. Les recherches
regexec() suivantes utilisant le tampon de motif n'effectueront
pas la diffrenciation.
REG_NOSUB
Ne pas utiliser les correspondances de sous-chanes. Les
paramtres nmatch et pmatch de regexec() sont ignors si le tampon
de motif est compil avec cet attribut.
REG_NEWLINE
L'oprateur "n'importe-quel-caractre" 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'oprateur dbut-de-ligne (^) s'identifie avec une chane vide
suivant immdiatement un saut de ligne, mme si l'attribut eflags
de regexec() contient REG_NOTBOL.
L'oprateur fin-de-ligne ($) s'identifie avec une chane vide
prcdant immdiatement un saut de ligne, mme si l'attribut eflags
contient REG_NOTEOL.
Correspondance d'expressions rationnelles POSIX
regexec() est utilise pour mettre en correspondance une chane termine
par un caractre nul, avec le tampon de motif prcompil preg. nmatch et
pmatch fournissent des informations concernant l'emplacement des corre-
spondances. eflags peut tre un OU binaire entre les constantes REG_NOT-
BOL ou REG_NOTEOL qui modifient le comportement de la mise en corre-
spondance dcrite ci-dessous.
REG_NOTBOL
L'oprateur dbut-de-ligne choue toujours (mais voyez l'attribut
de compilation REG_NEWLINE ci-dessus). Cet attribut peut tre
utilis quand diffrentes portions d'une chane sont transmises
regexec() et que le dbut de la chane ne correspond pas un dbut
de ligne.
REG_NOTEOL
L'oprateur fin-de-ligne choue toujours (mais voyez l'attribut de
compilation REG_NEWLINE ci-dessus)
Dcalage 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 correspon-
dances de sous-chanes. pmatch doit tre dimensionne pour contenir au
moins nmatch lments. Ils sont remplis par regexec() avec les adresses
des sous-chanes mises en correspondance. Tous les lments inutiliss de
structure contiendront la valeur -1.
La structure regmatch_t du type pmatch est dfinie dans <regex.h>.
typedef struct {
regoff_t rm_so;
regoff_t rm_eo;
} regmatch_t;
Chaque lment rm_so diffrent de -1 indique le point de dpart de la
sous-chane suivante la plus longue qui soit mise en correspondance.
L'lment rm_eo indique le dcalage de la fin de la sous-chane, qui est
l'emplacement du premier caractre aprs le texte qui correspond.
Retours d'erreurs POSIX
regerror() est utilis pour transformer les codes d'erreur renvoys par
regcomp() et par regexec() en libells.
regerror() reoit le code errcode, le tampon de motif preg, un pointeur
sur une chane de caractres errbuf, et la longueur maximale de cette
chane errbuf_size. Cette fonction renvoie la taille errbuf ncessaire
pour contenir le libell d'erreur termin par un caractre nul. Si errbuf
et errbuf_size son non nuls, errbuf est rempli avec les errbuf_size - 1
premiers caractres du libell d'erreur, suivis d'un caractre nul.
Libration des tampons de motifs POSIX
En fournissant regfree() un tampon de motif prcompil preg, il librera
la mmoire alloue au tampon durant la compilation avec regcomp().
regcomp() renvoie zro si la compilation russit, ou un code d'erreur en
cas d'chec.
regexec() renvoie zro si la correspondance russit, et REG_NOMATCH si
elle choue.
Les erreurs suivantes peuvent tre dclenches par regcomp() :
REG_BADBR
Utilisation illgale de l'oprateur de rfrence inverse.
REG_BADPAT
Utilisation illgale d'un oprateur du type groupe ou liste.
REG_BADRPT
Utilisation invalide d'oprateurs de rptition, comme un caractre
* en premire place.
REG_EBRACE
Accolade manquante.
REG_EBRACK
Crochet manquant.
REG_ECOLLATE
lment de classement invalide.
REG_ECTYPE
Nom de classe de caractre inconnu.
REG_EEND
Erreur non spcifique. Elle n'est pas dfinie par POSIX.2.
REG_EESCAPE
Barre oblique inverse de fin.
REG_EPAREN
Parenthse manquante.
REG_ERANGE
Utilisation illgale de l'oprateur d'intervalle. Par exemple, la
fin de l'intervalle est infrieure au dbut de l'intervalle.
REG_ESIZE
La compilation aurait besoin d'un tampon de taille suprieure 64
Ko. Ce n'est pas dfini par POSIX.2.
REG_ESPACE
Les routines regex ont puis la mmoire.
REG_ESUBREG
Rfrence inverse illgale vers une sous-expression.
POSIX.1-2001.
grep(1), regex(7), Manuel GNU pour les expressions rationnelles
Cette page fait partie de la publication 3.07 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent tre trouves l'adresse http://www.ker-
nel.org/doc/man-pages/.
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, et mise disposi-
tion sur http://manpagesfr.free.fr/.
Les mises jour et corrections de la version prsente dans Debian sont
directement gres par Nicolas Franois <nicolas.francois [AT] centraliens.net>
et l'quipe francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en crivant
<debian-l10n-french [AT] lists.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accs la version anglaise de ce document en
utilisant la commande man -L C <section> <page_de_man> .
GNU 29 mai 2008 REGEX(3)
I think your work great. Congratulations. I wanted make a source that extracted email of the text using RegeX...do you know make do it?
Can you help?
Thanks