.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (C), 1995, Graeme W. Wilford. (Wilf.) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Wed Jun 14 16:10:28 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) .\" Tiny change in formatting - aeb, 950812 .\" Modified 8 May 1998 by Joseph S. Myers (jsm28@cam.ac.uk) .\" .\" show the synopsis section nicely .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH regex 3 "5 février 2023" "Pages du manuel de Linux 6.03" .SH NOM regcomp, regexec, regerror, regfree \- Fonctions POSIX pour les expressions rationnelles («\ regex\ ») .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .PP \fBint regcomp(regex_t *restrict \fP\fIpreg\fP\fB, const char *restrict \fP\fIregex\fP\fB,\fP \fB int \fP\fIcflags\fP\fB);\fP \fBint regexec(const regex_t *restrict \fP\fIpreg\fP\fB, const char *restrict \fP\fIstring\fP\fB,\fP \fB size_t \fP\fInmatch\fP\fB, regmatch_t \fP\fIpmatch\fP\fB[restrict .\fP\fInmatch\fP\fB],\fP \fB int \fP\fIeflags\fP\fB);\fP .PP \fBsize_t regerror(int \fP\fIerrcode\fP\fB, const regex_t *restrict \fP\fIpreg\fP\fB,\fP \fB char \fP\fIerrbuf\fP\fB[restrict .\fP\fIerrbuf_size\fP\fB], size_t \fP\fIerrbuf_size\fP\fB);\fP \fBvoid regfree(regex_t *\fP\fIpreg\fP\fB);\fP .fi .SH DESCRIPTION .SS "Compilation d'expressions rationnelles POSIX" \fBregcomp\fP() est utilisée pour compiler une expression rationnelle sous une forme utilisable par la suite pour des recherches avec \fBregexec\fP(). .PP On fournit à \fBregcomp\fP() les arguments \fIpreg\fP, un pointeur vers un tampon de stockage du motif, \fIregex\fP, un pointeur vers une chaîne terminée par un caractère NULL, et \fIcflags\fP, les attributs indiquant le type de compilation. .PP Toutes les recherches d'expressions rationnelles sont effectuées au moyen d'un tampon de motif compilé, ainsi \fBregexec\fP() doit toujours recevoir l'adresse d'un motif initialisé par \fBregcomp\fP(). .PP \fIcflags\fP est le \fBOU binaire\fP entre une ou plusieurs constantes symboliques suivantes\ : .TP \fBREG_EXTENDED\fP Utiliser la syntaxe d'expression rationnelle étendue \fBPOSIX\fP pour interpréter \fIregex\fP. Sinon, la syntaxe d'expression rationnelle de base \fBPOSIX\fP est utilisée. .TP \fBREG_ICASE\fP Ne pas différencier les majuscules des minuscules. Les recherches \fBregexec\fP() suivantes utilisant le tampon de motif n'effectueront pas la différenciation. .TP \fBREG_NOSUB\fP Ne pas signaler la position des correspondances de chaînes. Les paramètres \fInmatch\fP et \fIpmatch\fP de \fBregexec\fP() ne sont pas pris en compte si le tampon de motif est compilé avec cet attribut. .TP \fBREG_NEWLINE\fP Les opérateurs «\\ n'importe\-quel\-caractère\\ » ne s'identifient pas à un saut de ligne. .IP A nonmatching list (\fB[\[ha]...]\fP) not containing a newline does not match a newline. .IP Match\-beginning\-of\-line operator (\fB\[ha]\fP) matches the empty string immediately after a newline, regardless of whether \fIeflags\fP, the execution flags of \fBregexec\fP(), contains \fBREG_NOTBOL\fP. .IP L'opérateur «\\ fin\-de\-ligne\\ » (\fB$\fP) s'identifie à la chaîne vide précédant immédiatement un saut de ligne, même si l'attribut \fIeflags\fP contient \fBREG_NOTEOL\fP. .SS "Correspondance d'expressions rationnelles POSIX" \fBregexec\fP() est utilisée pour mettre en correspondance une chaîne terminée par un caractère NULL, avec le tampon de motif précompilé \fIpreg\fP. \fInmatch\fP et \fIpmatch\fP fournissent des informations concernant l'emplacement des correspondances. \fIeflags\fP est un \fBOU\fP binaire entre zéro ou plusieurs des drapeaux suivants\ : .TP \fBREG_NOTBOL\fP L'opérateur «\\ début\-de\-ligne\\ » échoue toujours (mais voyez l'attribut de compilation \fBREG_NEWLINE\fP ci\-dessus). Cet attribut peut être utilisé quand différentes portions d'une chaîne sont transmises à \fBregexec\fP() et que le début de la chaîne ne peut pas être interprété comme un début de ligne. .TP \fBREG_NOTEOL\fP L'opérateur «\\ fin\-de\-ligne\\ » échoue toujours (mais voyez l'attribut de compilation \fBREG_NEWLINE\fP ci\-dessus). .TP \fBREG_TARTEND\fP Utiliser \fIpmatch[0]\fP sur la chaîne en entrée commençant à l'octet \fIpmatch[0].rm_so\fP et finissant avant l'octet \fIpmatch[0].rm_eo\fP. Cela permet de faire correspondre les octets de valeur NULL intégrés et évite un \fBstrlen\fP(3) sur de grandes chaînes. Cela n'utilise pas \fInmatch\fP en entrée et ne change pas le traitement de \fBREG_NEWLINE\fP ou \fBREG_NOTBOL\fP. Ce drapeau est une extension BSD et n'est pas présent dans POSIX. .SS "Décalage d'octets" À moins que l'attribut \fBREG_NOSUB\fP n'ait été utilisé lors de la compilation du motif, il est possible d'obtenir des informations sur les correspondances de chaînes. \fIpmatch\fP doit être dimensionnée pour contenir au moins \fInmatch\fP éléments. Ils sont remplis par \fBregexec\fP() avec les adresses des sous\-chaînes mises en correspondance. Les positions de la sous\-expression débutant à la \fIi\fPème parenthèse sont stockées dans \fIpmatch[i]\fP. Les adresses de mise en correspondance de l'expression complète sont stockées dans \fIpmatch[0]\fP. (Remarquez que pour obtenir les positions de correspondance de la sous\-expression \fIN\fP, \fInmatch\fP doit valoir au moins \fIN+1\fP.) Tous les éléments de structure inutilisés contiendront la valeur \fB\-1\fP. .PP La structure \fIregmatch_t\fP du type \fIpmatch\fP est définie dans \fI\fP. .PP .in +4n .EX typedef struct { regoff_t rm_so; regoff_t rm_eo; } regmatch_t; .EE .in .PP Chaque élément \fIrm_so\fP différent de \fB\-1\fP indique le point de départ de la sous\-chaîne suivante la plus longue qui soit mise en correspondance. L'élément \fIrm_eo\fP 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. .SS "Retours d'erreurs POSIX" \fBregerror\fP() est utilisé pour transformer les codes d'erreur renvoyés par \fBregcomp\fP() et par \fBregexec\fP() en libellés. .PP \fBregerror\fP() is passed the error code, \fIerrcode\fP, the pattern buffer, \fIpreg\fP, a pointer to a character string buffer, \fIerrbuf\fP, and the size of the string buffer, \fIerrbuf_size\fP. It returns the size of the \fIerrbuf\fP required to contain the null\-terminated error message string. If both \fIerrbuf\fP and \fIerrbuf_size\fP are nonzero, \fIerrbuf\fP is filled in with the first \fIerrbuf_size \- 1\fP characters of the error message and a terminating null byte (\[aq]\e0\[aq]). .SS "Libération des tampons de motifs POSIX" Supplying \fBregfree\fP() with a precompiled pattern buffer, \fIpreg\fP, will free the memory allocated to the pattern buffer by the compiling process, \fBregcomp\fP(). .SH "VALEUR RENVOYÉE" \fBregcomp\fP() renvoie zéro si la compilation réussit, ou un code d'erreur en cas d'échec. .PP \fBregexec\fP() renvoie zéro si la correspondance réussit ou \fBREG_NOMATCH\fP si elle échoue. .SH ERREURS Les erreurs suivantes peuvent être déclenchées par \fBregcomp\fP()\ : .TP \fBREG_BADBR\fP Utilisation illégale de l'opérateur de référence inverse. .TP \fBREG_BADPAT\fP Utilisation illégale d'un opérateur du type groupe ou liste. .TP \fBREG_BADRPT\fP Invalid use of repetition operators such as using \[aq]*\[aq] as the first character. .TP \fBREG_EBRACE\fP Accolade manquante. .TP \fBREG_EBRACK\fP Crochet manquant. .TP \fBREG_ECOLLATE\fP Élément de classement invalide. .TP \fBREG_ECTYPE\fP Nom de classe de caractère inconnu. .TP \fBREG_EEND\fP Erreur non spécifique. Elle n'est pas définie par POSIX.2. .TP \fBREG_EESCAPE\fP Barre oblique inverse de fin. .TP \fBREG_EPAREN\fP Parenthèse manquante. .TP \fBREG_ERANGE\fP 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. .TP \fBREG_ESIZE\fP La compilation d'expressions rationnelles a besoin d'un tampon de taille supérieure à 64\ Ko. Cela n'est pas défini par POSIX.2. .TP \fBREG_ESPACE\fP Les routines regex ont épuisé la mémoire. .TP \fBREG_ESUBREG\fP Référence inverse illégale vers une sous\-expression. .SH ATTRIBUTS Pour une explication des termes utilisés dans cette section, consulter \fBattributes\fP(7). .ad l .nh .TS allbox; lbx lb lb l l l. Interface Attribut Valeur T{ \fBregcomp\fP(), \fBregexec\fP() T} Sécurité des threads MT\-Safe locale T{ \fBregerror\fP() T} Sécurité des threads MT\-Safe env T{ \fBregfree\fP() T} Sécurité des threads MT\-Safe .TE .hy .ad .sp 1 .SH STANDARDS POSIX.1\-2001, POSIX.1\-2008. .SH EXEMPLES .EX #include #include #include #include #define ARRAY_SIZE(arr) (sizeof((arr)) / sizeof((arr)[0])) static const char *const str = "1) John Driverhacker;\en2) John Doe;\en3) John Foo;\en"; static const char *const re = "John.*o"; int main(void) { static const char *s = str; regex_t regex; regmatch_t pmatch[1]; regoff_t off, len; if (regcomp(®ex, re, REG_NEWLINE)) exit(EXIT_FAILURE); printf("String = \e"%s\e"\en", str); printf("Matches:\en"); for (unsigned int i = 0; ; i++) { if (regexec(®ex, s, ARRAY_SIZE(pmatch), pmatch, 0)) break; off = pmatch[0].rm_so + (s \- str); len = pmatch[0].rm_eo \- pmatch[0].rm_so; printf("#%zu:\en", i); printf("offset = %jd; length = %jd\en", (intmax_t) off, (intmax_t) len); printf("substring = \e"%.*s\e"\en", len, s + pmatch[0].rm_so); s += pmatch[0].rm_eo; } exit(EXIT_SUCCESS); } .EE .SH "VOIR AUSSI" \fBgrep\fP(1), \fBregex\fP(7) .PP La section \fIRegular Expressions\fP du manuel de la glibc .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Frédéric Hantrais et bubu . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .