Provided by: manpages-fr_1.67.0-1_all bug

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 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 DERREUR 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.