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