.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1995, Graeme W. Wilford .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH regex 3 "22 février 2026" "Pages du manuel de Linux 6.18" .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 .P \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,\fP \fB const char *restrict \fP\fIstring\fP\fB,\fP \fB size_t \fP\fIn\fP\fB, regmatch_t \fP\fIpmatch\fP\fB[_Nullable restrict \fP\fIn\fP\fB],\fP \fB int \fP\fIeflags\fP\fB);\fP .P \fBsize_t regerror(\fPsize_t errbuf_size; \fB int \fP\fIerrcode\fP\fB, const regex_t *_Nullable restrict \fP\fIpreg\fP\fB,\fP \fB char \fP\fIerrbuf\fP\fB[_Nullable restrict \fP\fIerrbuf_size\fP\fB],\fP \fB size_t \fP\fIerrbuf_size\fP\fB);\fP \fBvoid regfree(regex_t *\fP\fIpreg\fP\fB);\fP .P \fBtypedef struct {\fP \fBsize_t re_nsub;\fP \fB} regex_t;\fP .P \fBtypedef struct {\fP \fBregoff_t rm_so;\fP \fBregoff_t rm_eo;\fP \fB} regmatch_t;\fP .P \fBtypedef\fP /* ... */ \fBregoff_t;\fP .fi .SH DESCRIPTION .SS Compilation \fBregcomp\fP() est utilisée pour compiler une expression rationnelle sous une forme utilisable par la suite pour des recherches avec \fBregexec\fP(). .P En cas de succès, le tampon de motif dans \fI*preg\fP est initialisé. \fIregex\fP est une chaîne terminée par NULL. La locale doit être la même lors de l'exécution de \fBregexec\fP(). .P After \fBregcomp\fP() succeeds, \fIpreg\->re_nsub\fP holds the number of subexpressions in \fIregex\fP. Thus, a value of \fIpreg\->re_nsub\fP + 1 passed as \fIn\fP to \fBregexec\fP() is sufficient to capture all matches. .P \fIcflags\fP est le OU binaire entre zéro ou plus des constantes symboliques suivantes\ : .TP \fBREG_EXTENDED\fP Utiliser la syntaxe d'expression rationnelle étendue POSIX pour interpréter \fIregex\fP. Sinon, la syntaxe d'expression rationnelle de base POSIX est utilisée. .TP \fBREG_ICASE\fP Ne pas différencier les capitales des minuscules. Les recherches \fBregexec\fP() suivantes utilisant le tampon de motif seront insensibles à la casse. .TP \fBREG_NOSUB\fP Report only overall success. \fBregexec\fP() will use only \fIpmatch\fP for \fBREG_STARTEND\fP, ignoring \fIn\fP. .TP \fBREG_NEWLINE\fP Les opérateurs «\correspondance\-à\-n'importe\-quel\-caractère\ » ne correspondent pas à un saut de ligne. .IP Une liste de non correspondance (\fB[\[ha]...\&]\fP) ne contenant pas de saut de ligne ne correspond pas à un saut de ligne. .IP L'opérateur « correspondance\-à\-début\-de\-ligne » (\fB\[ha]\fP) correspond à la chaîne vide immédiatement après un saut de ligne, même si \fIeflags\fP, le drapeau d'exécution de \fBregexec\fP(), contient \fBREG_NOTBOL\fP. .IP L'opérateur « correspondance\-à\-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 \fBregexec\fP() est utilisée pour mettre en correspondance une chaîne terminée par NULL avec le tampon de motif précompilé \fI*preg\fP qui doit avoir été initialisé par \fBregcomp\fP(). \fIeflags\fP est un OU binaire entre zéro ou plus des drapeaux suivants : .TP \fBREG_NOTBOL\fP L'opérateur « correpondance\-à\-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 doit pas être interprété comme un début de ligne. .TP \fBREG_NOTEOL\fP L'opérateur « correspondance\-à\-fin\-de\-ligne » échoue toujours (mais voyez l'attribut de compilation \fBREG_NEWLINE\fP ci\-dessus). .TP \fBREG_TARTEND\fP Match [\fIstring + pmatch[0].rm_so\fP,\fI string + pmatch[0].rm_eo\fP) instead of [\fIstring\fP,\ \fIstrnul(string)\fP). This allows matching embedded NUL bytes. If any matches are returned (\fBREG_NOSUB\fP wasn't passed to \fBregcomp\fP(), the match succeeded, and \fIn\fP > 0), they overwrite \fIpmatch\fP as usual, and the match offsets remain relative to \fIstring\fP (not \fIstring + pmatch[0].rm_so\fP). This flag is a BSD extension, not present in POSIX. .SS "Emplacement des correspondances" Unless \fBREG_NOSUB\fP was passed to \fBregcomp\fP(), it is possible to obtain the locations of matches within \fIstring\fP: \fBregexec\fP() fills \fIn\fP elements of \fIpmatch\fP with results: \fIpmatch[0]\fP corresponds to the entire match, \fIpmatch[1]\fP to the first subexpression, etc. If there were more matches than \fIn\fP, they are discarded; if fewer, unused elements of \fIpmatch\fP are filled with \fB\-1\fPs. .P Chaque correspondance valable renvoyée (non \fB\-1\fP) correspond à la plage [\fIchaîne + rm_so\fP,\fI chaîne + rm_eo\fP). .P \fIregoff_t\fP est un type d'entier signé capable de contenir la plus grande valeur qui peut être stockée dans un type \fIptrdiff_t\fP ou dans un type \fIssize_t\fP. .SS "Rapport d'erreurs" \fBregerror\fP() est utilisé pour transformer les codes d'erreur renvoyés par \fBregcomp\fP() et par \fBregexec\fP() en chaînes de message d'erreur. .P Si \fIpreg\fP n'est pas un pointeur NULL, \fIerrcode\fP doit être la dernière erreur renvoyée par une opération sur \fIpreg\fP. .P Si \fIerrbuf_size\fP est différent de \fB0\fP, jusqu'à \fIerrbuf_size\fP octets sont copiés dans \fIerrbuf\fP ; la chaîne d'erreur est toujours terminée par NULL et tronquée pour tenir dans l'espace alloué. .SS Libération \fBregfree\fP() désinitialise le tampon de motif dans \fI*preg\fP, libérant toute la mémoire associée ; \fI*preg\fP doit avoir été initialisé par \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. .P \fBregexec\fP() renvoie zéro si la correspondance réussit ou \fBREG_NOMATCH\fP si elle échoue. .P \fBregerror\fP() renvoie la taille du tampon requise pour contenir la chaîne. .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 Utilisation illégale d'opérateurs de répétition, comme un caractère «\ *\ » en première place. .TP \fBREG_EBRACE\fP Accolade manquante. .TP \fBREG_EBRACK\fP Crochet manquant. .TP \fBREG_ECOLLATE\fP Élément de collation invalide. .TP \fBREG_ECTYPE\fP Nom de classe de caractères inconnu. .TP \fBREG_EEND\fP Erreur non spécifique. Elle n'est pas définie par POSIX. .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. .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). .TS allbox; lbx lb lb l l l. Interface Attribut Valeur T{ .na .nh \fBregcomp\fP(), \fBregexec\fP() T} Sécurité des threads MT\-Safe locale T{ .na .nh \fBregerror\fP() T} Sécurité des threads MT\-Safe env T{ .na .nh \fBregfree\fP() T} Sécurité des threads MT\-Safe .TE .SH NORMES POSIX.1\-2008. .SH HISTORIQUE POSIX.1\-2001. .P Avant POSIX.1\-2008, \fIregoff_t\fP était requis pour pouvoir stocker la plus grande valeur qui pouvait être contenue dans le type \fIoff_t\fP ou dans le type \fIssize_t\fPtype. .SH AVERTISSEMENTS .\" glibc, musl, 4.4BSD, illumos \fIre_nsub\fP n'est requis pour être initialisé si \fBREG_NOSUB\fP n'a pas été spécifié, mais toutes les implémentations connues l'initialisent de toutes façons. .P .\" illumos has two more start/end pairs and the first one is of pointers À la fois \fIregex_t\fP et \fIregmatch_t\fP peuvent avoir (et ont) plus de membres dans n'importe quel ordre. Il faut toujours les référencer par leur nom. .SH EXEMPLES .EX #include #include #include #include #include \& static const char *const str = "1) John Driverhacker;\[rs]n2) John Doe;\[rs]n3) John Foo;\[rs]n"; 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 = \[rs]"%s\[rs]"\[rs]n", str); printf("Matches:\[rs]n"); \& for (unsigned int i = 0; ; i++) { if (regexec(®ex, s, countof(pmatch), pmatch, 0)) break; \& off = pmatch[0].rm_so + (s \- str); len = pmatch[0].rm_eo \- pmatch[0].rm_so; printf("#%u:\[rs]n", i); printf("offset = %jd; length = %jd\[rs]n", (intmax_t) off, (intmax_t) len); printf("substring = \[rs]"%.*s\[rs]"\[rs]n", len, s + pmatch[0].rm_so); \& s += pmatch[0].rm_eo; } \& exit(EXIT_SUCCESS); } .EE .SH "VOIR AUSSI" \fBgrep\fP(1), \fBregex\fP(7) .P 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 , bubu et Jean-Pierre Giraud . .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 .