zion -  regex


Nom

regcomp, regexec, regerror, regfree - Fonctions regex POSIX.

Résumé

#include <regex.h> .xx w'int regcomp ('u int regcomp (regex_t * preg , const char * regex , int cflags ); .xx w'int regexec ('u int regexec (const regex_t * preg , const char * string , size_t nmatch , regmatch_t pmatch[] , int eflags ); .xx w'size_t regerror ('u size_t regerror (int errcode , const regex_t * preg , char * errbuf , size_t errbuf_size ); .xx w'void regfree (' 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 : .nf typedef struct { regoff_t rm_so; regoff_t rm_eo ; } regmatch_t; .fi 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.

Poster un commentaire
Utilisateur
Mot de passe
 
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?