Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

NOM

       regcomp,  regexec,  regerror,  regfree - Fonctions POSIX pour les expressions rationnelles
       (« regex »)

SYNOPSIS

       #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);

DESCRIPTION

   Compilation d'expressions rationnelles POSIX
       regcomp() est utilisée 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 chaîne terminée par un caractère nul, et cflags, les attributs
       indiquant le type de compilation.

       Toutes  les  recherches  d'expressions  rationnelles  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 rationnelle étendue POSIX pour interpréter regex.
              Sinon, la syntaxe d'expression rationnelle 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'expressions 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, qui est l'emplacement du  premier  caractère  après  le  texte  qui
       correspond.

   Retours d'erreurs 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 des tampons de motifs 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

       grep(1), regex(7)

COLOPHON

       Cette page fait partie de la publication 3.32 du projet man-pages Linux.  Une  description
       du  projet  et  des  instructions  pour  signaler  des  anomalies  peuvent être trouvées à
       l'adresse <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <URL:http://po4a.alioth.debian.org/>  par  l'équipe  de  traduction francophone au sein du
       projet perkamon <URL:http://perkamon.alioth.debian.org/>.

       Christophe  Blaess  <URL:http://www.blaess.fr/christophe/>   (1996-2003),   Alain   Portal
       <URL:http://manpagesfr.free.fr/>  (2003-2006). Nicolas François et l'équipe francophone de
       traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>   ou   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> ».