regex   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (3)
Updated: 29 mai 2008
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
regcomp, regexec, regerror, regfree - Fonctions regex POSIX  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
#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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
 



Compilation regex POSIX   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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 octet 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é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 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 ([^...]) 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.

 



Correspondances regex POSIX   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
regexec() est utilisée pour mettre en correspondance une chaîne terminée par un octet 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'octet   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
À 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, qui est le décalage du premier caractère après le texte correspondant.  




Retour d'erreur POSIX   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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 octet 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 octet nul.  




Libération du tampon de motif POSIX   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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épetition, comme un caractère « *  » en première place.
REG_EBRACE
Crochet manquant.
REG_EBRACK
Accolade manquante.
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.
REG_ESPACE
Pas assez de mémoire.
REG_ESUBREG
Référence inverse illégale vers une sous-expression.
 



CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
POSIX.1-2001.  



VOIR AUSSI   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
grep(1), regex(7), Manuel regex GNU  



TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 6 novembre 1996 et révisée le 6 juin 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 regex ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


 



Sommaire   Début   Suivant   Sommaire   Préc.page.lue   Accueil
NOM
SYNOPSIS
DESCRIPTION
Compilation regex POSIX
Correspondances regex POSIX
Décalage d'octet
Retour d'erreur POSIX
Libération du tampon de motif POSIX
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
VOIR AUSSI
TRADUCTION

Table des mots clés   Début   Suivant   Sommaire   Préc.page.lue   Accueil
REG_BADBRERREURS
REG_BADPATERREURS
REG_BADRPTERREURS
REG_EBRACEERREURS
REG_EBRACKERREURS
REG_ECOLLATEERREURS
REG_ECTYPEERREURS
REG_EENDERREURS
REG_EESCAPEERREURS
REG_EPARENERREURS
REG_ERANGEERREURS
REG_ESIZEERREURS
REG_ESPACEERREURS
REG_ESUBREGERREURS
REG_EXTENDEDCompilation regex POSIX
REG_ICASECompilation regex POSIX
REG_NEWLINECompilation regex POSIX
REG_NOSUBCompilation regex POSIX
REG_NOTBOLCorrespondances regex POSIX
REG_NOTEOLCorrespondances regex POSIX



Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:51:10, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional