Functions > String >


StringRegExp

Recherche, dans un texte, des sous-cha�nes qui correspondent � un mod�le d'expression r�guli�re.

StringRegExp ( $sText, $sPattern [, $iMode = 0 [, $iStart = 1]] )

Param�tres

$sText Texte dans lequel effectuer la recherche
$sPattern Cha�ne contenant le crit�re de recherche, appel� mod�le. Voir Remarques.
$iMode [optionnel] Mode de recherche. Voir 'Valeur de retour' pour la description des diff�rents modes et la valeur de retour de la fonction dans chaque mode.
    $STR_REGEXPMATCH (0) - mode par d�faut
    $STR_REGEXPARRAYMATCH (1)
    $STR_REGEXPARRAYFULLMATCH (2)
    $STR_REGEXPARRAYGLOBALMATCH (3)
    $STR_REGEXPARRAYGLOBALFULLMATCH (4)

Les constantes sont d�finies dans StringConstants.au3
$iStart [optionnel] Position dans le texte o� d�marre la recherche. La valeur par d�faut est 1.

Valeur de retour

La valeur de retour d�pend du param�tre $iMode qui peut prendre les 5 valeurs ci-dessous.
Les constantes sont d�finies dans StringConstants.au3

Mode = $STR_REGEXPMATCH (0)
La fonction recherche la premi�re concordance avec le mod�le, � partir de la position $iStart, et retourne si oui ou non la recherche a r�ussi.
Succ�s: Retourne 1 si une concordance est trouv�e, 0 sinon.
�chec: Retourne 0 et @error = 2 si le mod�le est erron�. @Extended contient la position de l'erreur dans le mod�le.

Mode = $STR_REGEXPARRAYMATCH (1)
La fonction recherche la premi�re concordance � partir de la position $iStart et retourne un tableau contenant les groupes captur�s.
Si le mod�le ne capture pas de groupe, la premi�re concordance, � partir de la position $iStart, est retourn�e en position [0] du tableau.
@extended contient la position qui suit la concordance trouv�e et qui peut �tre affect�e � $iStart pour la recherche de la concordance suivante (Exemple 3).
Succ�s: Retourne le tableau des groupes captur�s.
�chec: @error = 1 Tableau invalide : aucune concordance trouv�e.
@error = 2 Mod�le erron�: tableau invalide. @extended contient la position de l'erreur dans le mod�le.

Mode = $STR_REGEXPARRAYFULLMATCH (2)
La fonction recherche la premi�re concordance avec le mod�le, � partir de la position $iStart, et retourne le tableau du r�sultat complet en [0] et des groupes de capture en [1], [2], ....
Quand le mod�le ne capture pas de groupe, la premi�re concordance est retourn�e en position [0] du tableau.
@extended contient la position qui suit la concordance trouv�e et qui peut �tre affect�e � $iStart pour la rechercher la concordance suivante.
Succ�s: Retourne un tableau valide
�chec: @error = 1 Tableau invalide : aucune concordance trouv�e.
@error = 2 Mod�le erron�: tableau invalide. @extended contient la position de l'erreur dans le mod�le.

Mode = $STR_REGEXPARRAYGLOBALMATCH (3)
Recherche toutes les concordances et remplit un tableau avec tous les groupes captur�s de toutes les concordances trouv�es:
Par exemple, si chaque concordance capture deux groupes, le tableau a le format suivant:
    [0]: groupe captur� n�1 dans la concordance n�1
    [1]: groupe captur� n�2 dans la concordance n�1
    [2]: groupe captur� n�1 dans la concordance n�2
    [3]: groupe captur� n�2 dans la concordance n�2
    [4]: groupe captur� n�1 dans la concordance n�3
    [5]: groupe captur� n�2 dans la concordance n�3
etc..., 2 �l�ments par concordance.
Succ�s: Retourne un tableau de r�sultats globaux pour le texte.
�chec: @error = 1 Tableau invalide : aucune concordance trouv�e.
@error = 2 Mod�le erron�: tableau invalide. @extended contient la position de l'erreur dans le mod�le.

Mode = $STR_REGEXPARRAYGLOBALFULLMATCH (4)
Recherche toutes les concordances avec le mod�le et retourne un tableau avec autant d'�l�ments que de concordances. Chaque �l�ment est lui-m�me un tableau qui contient la concordance compl�te en [0] et les groupes captur�s en [1], [2], ... (style Perl / PHP).
    [0] Tableau de r�sultats relatifs � la concordance d'index 0
        [0]: concordance compl�te
        [1]: groupe de capture n�1
        [2]: groupe de capture n�2
        ....
    [1]: Tableau de r�sultats relatifs � la concordance d'index 1
        [0]: concordance compl�te
        [1]: groupe de capture n�1
        [2]: groupe de capture n�2
        ....
Succ�s: Retourne un tableau de tableaux.
�chec: @error = 1 Tableau invalide : aucune concordance trouv�e.
@error = 2 Mod�le erron�: tableau invalide. @extended contient la position de l'erreur dans le mod�le.

Remarques

La notation d'expression r�guli�re est une fa�on compacte de d�finir un crit�re de recherche cod� dans une cha�ne appel�e 'mod�le' et � partir duquel des portions sp�cifiques de cha�ne peuvent �tre extraites avec StringRegExp() ou remplac�es par StringRegExpReplace().

Plus pr�cis�ment, le moteur des expressions r�guli�res s'efforce de trouver une ou des concordances entre le mod�le et la cha�ne texte, de la gauche vers la droite. Si une diff�rence appara�t lors d'une comparaison en cours, le moteur tente de faire marche arri�re (retour � des �tats pr�c�dents successifs) autant que n�cessaire, esp�rant que le reste du mod�le concordera ainsi.

Le retour arri�re ('backtracking') est un aspect fondamental des moteurs d'expressions r�gul�res et m�me le programmeur novice utilise ce m�canisme tous les jours. Il consiste � laisser une marque sp�cifique � chaque embranchement du chemin qu'on parcourt et de revenir � l'embranchement pr�c�dent pour explorer l'autre voie lorsque le chemin choisi se r�v�le �tre une impasse: vous faites marche arri�re (backtrack) au besoin jusqu'� trouver le but du parcours (concordance trouv�e) ou avoir explor� toutes les voies sans atteindre l'objectif (concordance non trouv�e). Ce principe d'exploration est utilis� lors de la recherche d'un nom de fichier donn� avec jokers facultatifs � l'int�rieur d'une arborescence de r�pertoires.

AutoIt utilise le moteur PCRE ("Perl-Compatible Regular Expressions"). C'est le plus complet des moteurs open-source disponibles. Cette impl�mentation inclut le support Unicode Category Properties (UCP), qui permet un traitement fin de la plupart des langages humains.
Cependant, pour maintenir la compatibilit� avec les versions pr�c�dentes et optimiser la vitesse d'ex�cution, le support UCP n'est pas activ� par d�faut. Vous pouvez l'activer en ins�rant la cha�ne (*UCP) en t�te du mod�le. Lorsqu'il est activ�, le r�glage UCP change l'�tendue d'un certain nombre d'�l�ments d'expressions r�guli�res, comme document� ci-dessous, le cas �ch�ant.

Cette page est un r�sum� des �l�ments de mod�le les plus utilis�s. Pour une documentation compl�te et approfondie des expressions r�guli�res impl�ment�es dans AutoIt, reportez-vous � la description compl�te des mod�les PCRE.
Sauf si vous �tes d�j� familier avec les expressions r�guli�res, vous aurez probablement besoin de lire plusieurs parties de ce r�sum� plus d'une fois pour comprendre comment elles fonctionnent et sont reli�es entre elles.

Attention: des expressions r�guli�res mal con�ues peuvent entra�ner une boucle quasi-infinie mobilisant le processeur, entra�nant m�me un d�passement de la pile utilisable.

Param�tres globaux


Ces param�tres ne sont pris en compte qu'au d�but du mod�le et l'affectent globalement.

Conventions de retour � la ligne

Les s�quences de saut de ligne affectent la s�mantique des ancrages ^ et $, ainsi que des �l�ments \N et '.' . Par d�faut, les s�quences de saut de ligne reconnues sont soit @CRLF, soit @CR ou @LF isol�s.
La valeur par d�faut peut �tre modifi�e en ajoutant l'une des s�quences suivantes au d�but d'un mod�le :
(*CR) Carriage return (@CR).
(*LF) Line feed (@LF).
(*CRLF) Carriage return imm�diatement suivi de linefeed (@CRLF).
(*ANYCRLF) Toute s�quence @CRLF, @CR ou @LF. Ceci est la convention de saut de ligne par d�faut.
(*ANY) Une des s�quences de saut de ligne Unicode : @CRLF, @LF, VT, FF, @CR ou \x85.

Signification de \R

(*BSR_ANYCRLF) Par d�faut \R repr�sente @CRLF, @CR ou @LF.
(*BSR_UNICODE) Change la signification de \R pour concorder avec toute s�quence de saut de ligne Unicode : @CRLF, @LF, VT, FF, @CR ou \x85.

Options


Les mod�les PCRE peuvent contenir des options, qui sont entour�es par des s�quences (? ). Les options peuvent �tre regroup�s : "(?imx)". Les options suivant un tiret sont annul�es : "(?im-sx)".
Les options apparaissant en dehors d'un groupe affectent la suite du mod�le. Les options apparaissant � l'int�rieur d'un groupe influent sur ce groupe seulement et � partir de leur point d'apparition. Les options perdent leur signification sp�ciale � l'int�rieur d'une classe de caract�res, o� elles sont trait�es litt�ralement.

(?i) Insensibilit� � la casse : les comparaisons deviennent insensibles � la casse � partir de ce point. Par d�faut, les comparaisons sont sensibles � la casse. Quand l'option UCP est activ�e elle s'applique � l'ensemble du plan Unicode 0, sinon elle s'applique par d�faut seulement aux lettres ASCII A-Z et a-z.
(?m) Multiligne : ^ et $ concordent soit au d�but (resp. � la fin) du texte, soit � la position pr�c�dant (resp. suivant) une s�quence de saut de ligne. Par d�faut, l'option multiligne est d�sactiv�e.
(?s) Mono-ligne ou DotAll: . concorde � tout caract�re, y compris une s�quence de saut de ligne. L'option DotAll est d�sactiv�e par d�faut, ainsi . ne concorde pas � une s�quence de saut de ligne.
(?U) Paresseux : les quantificateurs deviennent paresseux (non gourmands) � partir de ce point. Par d�faut, la recherche est gourmande - voir ci-dessous pour plus de d�tails.
(?x) �tendu : les espaces blancs � l'ext�rieur des classes de caract�res sont ignor�s et # d�marre un commentaire jusqu'au prochain caract�re Newline dans le mod�le. L'espacement des �l�ments rend les expressions r�guli�res beaucoup plus lisibles. Par d�faut, les espaces blancs et # sont interpr�t�s litt�ralement.

Caract�res, m�ta-caract�res et echappement (escaping ou quoting)


Caract�res

Les mod�les d'expressions r�guli�res se composent de litt�raux Unicode (portions de texte qui concordent avec elles-m�mes), entrem�l�es d'�l�ments ou d'options d'expression r�guli�re. Les �l�ments et les options utilisent quelques m�ta-caract�res qui ont eux-m�me une signification particuli�re ou qui marquent le d�but d'�l�ments plus complexes d�crits dans les tableaux ci-dessous.
Dans les portions litt�rales, les caract�res alphanum�riques concordent avec eux-m�mes : le mod�le "partie litt�rale avec 中国文字" correspond exactement � la cha�ne "partie litt�rale avec 中国文字" ("中国文字" signifie "texte chinois".)
Certains caract�res non-alphanum�riques appel�s m�tacaract�res ont un comportement particulier, discut� par la suite.

Repr�sentation de quelques caract�res litt�raux

Les s�quences sp�ciales ci-dessous sont utilis�s pour repr�senter certains caract�res litt�ralement.

\a Repr�sente "alarm", le caract�re BEL (Chr(7)).
\cX Repr�sente "contr�le-X", o� X repr�sente tout caract�re ASCII 7 bits. Par exemple, "\cM" repr�sente ctrl-M, aussi repr�sentable par \x0D ou \r (Chr(13)).
\e Repr�sente le caract�re de contr�le "�chappement" (Chr(27)). Ne pas confondre avec l'�chappement (escaping) d'un caract�re!
\f Repr�sente "formfeed" (Chr(12)).
\n Repr�sente "linefeed" (@LF, Chr(10)).
\r Repr�sente "carriage return" (@CR, Chr(13)).
\t Repr�sente "tab" (@TAB, Chr(9)).
\ddd Repr�sente un caract�re de code octal ddd, OU une r�f�rence arri�re au groupe capturant num�ro ddd (en d�cimal). Par exemple, ([a-z])\1 repr�sente une minuscule doubl�e.
� �viter soigneusement � cause de cette ambiguit� ! Utiliser de pr�f�rence les repr�sentations hexad�cimales ci-dessous.
\xhh Repr�sente un caract�re Unicode en hexad�cimal hh : "\x7E" repr�sente un tilde, "~".
\x{hhhh} Repr�sente un caract�re Unicode en h�xad�cimal hhhh : "\x{20AC}" repr�sente le symbole de l'Euro, "€" (ChrW(0x20AC)).
\x o� x est non-alphanum�rique, repr�sente un caract�re x litt�ral. C'est l'�chappement du caract�re x. Utilis� pour repr�senter les m�ta-caract�res litt�raux : "\.\[" repr�sente un point suivi d'un crochet ouvrant, ".[".
\Q ... \E S�quence verbatim : les m�ta-caract�res perdent leur signification sp�ciale entre \Q et \E : "\Q(.)\E" recherche la cha�ne "(.)" et est bien plus lisible que le mod�le �quivalent "\(\.\)" .

M�ta-caract�res

Les m�ta-caract�res PCRE sont \ . ^ $ | [ ( { * + ? # ils ont une ou plusieurs significations, selon le contexte.
Pour ins�rer un m�ta-caract�re litt�ral, faites-le pr�c�der par une barre oblique inverse ('backslash') (c'est l'�chappement de ce caract�re) : "\$" signifie le caract�re dollar.
Les m�ta-caract�res seront abord�s dans des sections distinctes qui traitent de leur comportement et de leur signification.

Types de caract�res


Par d�faut, les caract�res concern�s par \s sont HT(9), LF(10), VT(11), FF(12), CR(13), et Space (32), qui sont consid�r�s comme des espaces blancs dans la localisation "C". Cette liste peut varier si l'appariement sp�cifique � la localisation est active. Par exemple, dans certaines localisations le caract�re Espace Ins�cable (\xA0) est reconnu comme 'espace blanc', et dans d'autres le caract�re VT ne l'est pas. Note - Il est d�conseill� d'utiliser les localisations dans les regexp.
. Repr�sente tout caract�re Unicode except� une s�quence de saut de ligne. Repr�sente tout caract�re Unicode lorsque l'option (?s) est active.
\d Repr�sente tout chiffre d�cimal (n'importe quel chiffre d�cimal Unicode de n'importe quel langage quand UCP est activ�).
\D Repr�sente tout caract�re qui n'est pas un chiffre.
\h Repr�sente � tout caract�re d'espacement horizontal (voir tableau ci-dessous).
\H Repr�sente � tout caract�re hors espacements horizontal.
\N Repr�sente � tout caract�re sauf � une s�quence de saut de ligne, ind�pendamment de l'option (?s).
\p{ppp} Seulement quand l'option UCP est activ�e : repr�sente tout caract�re Unicode poss�dant la propri�t� ppp. Par exemple, "\b\p{Cyrillic}+" repr�sente tout mot cyrillique ; "\p{Sc}" repr�sente tout symbole mon�taire. Consultez la documentation de r�f�rence pour plus de d�tails.
\P{ppp} Seulement quand l'option UCP est activ�e : repr�sente tout caract�re Unicode ne poss�dant pas la propri�t� ppp.
\R Repr�sente toute s�quence 'newline' Unicode par d�faut, ou avec le param�tre (*BSR_...) actif. Par d�faut \R �quivaut � "(?>\r\n|\n|\r)" o� "(?>...)" est un groupe atomique, entit� qui rend la s�quence "\r\n" (@CRLF) indivisible.
\s Repr�sente tout caract�re d'espacement (voir tableau ci-dessous).
\S Repr�sente tout caract�re hors espacements.
\v Repr�sente tout caract�re d'espacement vertical (voir tableau ci-dessous).
\V Repr�sente tout caract�re hors espacement vertical.
\w Repr�sente tout caract�re 'mot' : tout chiffre, lettre ou soulignement (underscore "_"). Tout chiffre, lettre Unicode de tout langage ou soulignement (underscore "_") quand UCP est activ�.
\W Repr�sente tout caract�re qui n'est pas 'mot'.
\X Seulement quand UCP est activ� : repr�sente tout graph�me �tendu Unicode - une s�quence indivisible de codes qui repr�sente un seul caract�re pour l'utilisateur. En cons�quence, \X peut retr�senter plus d'un caract�re dans la cha�ne d'origine, contrairement � tous les autres �l�ments de ce tableau.

Classification des caract�res d'espacement


Caract�res d'espacement horizontal concern�s par \h

\h Les caract�res d'espacement horizontal concern�s par \h sont:
U+0009 Horizontal Tabulation (HT)
U+0020 Space
U+00A0 Non-break space
U+1680 Ogham space mark (marque d'espace Ogham)
U+180E Mongolian vowel separator (s�parateur de voyelles Mongolien)
U+2000 En quad (demi-quadratin)
U+2001 Em quad (cadratin - unit� de mesure d'espace)
U+2002 En space (espace demi-cadratin)
U+2003 Em space (espace cadratin)
U+2004 Three-per-em space (tiers de cadratin)
U+2005 Four-per-em space (quart de cadratin)
U+2006 Six-per-em space (sixi�me de cadratin)
U+2007 Figure space (espace tabulaire)
U+2008 Punctuation space (espace de ponctuation)
U+2009 Thin space (espace fin)
U+200A Hair space (espace ultra fin)
U+202F Narrow no-break space (espace ins�cable fin)
U+205F Medium mathematical space (espace math�matique moyen)
U+3000 Ideographic space (espace id�ographique)

Caract�res d'espacement vertical concern�s par \v

\v Les caract�res d'espacement vertical concern�s par \v sont:
U+000A Linefeed (LF)
U+000D Carriage return (CR)
U+000B Vertical tab (VT)
U+000C Form feed (FF)
U+0085 Next line (NEL)
U+2028 Line separator
U+2029 Paragraph separator
Caract�res d'espacement correspondant � [[:space:]] (voir cette classe POSIX ci-dessous)

[[:space:]] est �quivalent � "\s".
Cet ensemble comprend tous les caract�res de \s plus Vertical tab (VT).

Classes de caract�re et classes POSIX


Classes de caract�re

Les classes de caract�re d�finissent un ensemble de caract�res permis (resp. interdits), auquel le prochain caract�re de la cha�ne sujet doit appartenir (resp. ne doit pas appartenir).
Dans les classes de caract�re, la plupart des m�ta-caract�res perdent leur signification sp�ciale (comme $ . ou *) et sont interpr�t�s litt�ralement; certains rev�tent une autre signification (comme ^).

[ ... ] Repr�sente tout caract�re d'un ensemble explicite : "[aeiouy]" repr�sente toute voyelle minuscule. Un ensemble contigu (en Unicode le code d�finit un ordre) peut �tre d�fini en pla�ant un trait d'union entre les caract�res de d�part et de fin : "[a-z]" repr�sente toute lettre ASCII minuscule. Pour inclure un tiret (-) dans l'ensemble, placez-le au d�but ou � la fin de l'ensemble, ou utilisez l'�chappement (\-).
Notez que le mod�le "[A-z]" est distinct de "[A-Za-z]" : ce dernier �quivaut � "[A-Z\[\\\]^_`a-z]".
Pour inclure un crochet fermant dans l'ensemble, placez-le en premi�re position de l'ensemble ou utilisez l'�chappement : "[][]" ou encore "[\[\]]" correspond � "[" ou "]".
Notez que dans une classe de caract�re, seules les s�quences \d, \D, \h, \H, \p{}, \P{}, \s, \Q...\E, \S, \v, \V, \w, \W, et \x conservent leur signification sp�ciale, tandis que \b d�signe le caract�re retour arri�re (Chr(8)).
[^ ... ] Compl�mentation d'une classe : repr�sente tout caract�re qui n'est pas dans l'ensemble : "[^0-9]" repr�sente tout caract�re qui n'est pas un chiffre d�cimal ASCII. Pour inclure un caret (^) dans un ensemble, placez-le ailleurs qu'en premi�re position de l'ensemble ou utilisez l'�chappement (\^).

Les classes POSIX

Ce sont des sp�cifications d'ensembles pr�d�finis destin�s � �tre utilis�es elles-m�mes dans une classe de caract�re : "[z[:digit:]w-y]" est le m�me mod�le que "[w-z0-9]". Pour compl�menter une classe POSIX, placez un caret (^) devant son nom : "[[:^digit:]]".
Quand UCP est activ�, certaines classes POSIX s'�tendent � des sous-ensembles de caract�res Unicode, sinon elles sont par d�faut restreintes � des caract�res ASCII 7 bits.

[:alnum:] Lettres et chiffres ASCII 7 bits (�quivaut � [^\W_] ou encore [A-Za-z0-9]).
Quand UCP est activ� : lettres et chiffres Unicode (�quivaut � [^\W_] ou \p{Xan}).
[:alpha:] Lettres ASCII (�quivaut � [^\W\d_] ou [A-Za-z]).
Quand UCP est activ� : lettres Unicode (�quivaut � [^\W\d_] ou \p{L}).
[:ascii:] Caract�res ASCII 7 bits (�quivaut � [\x00-\x7F]).
[:blank:] Espacement horizontal (�quivaut � \h ou [\x09\x20]).
Quand UCP est activ� : espacement horizontal Unicode (�quivaut � \h).
[:cntrl:] Caract�res de contr�le ASCII (�quivaut � Chr(0) ... Chr(31) et Chr(127)).
[:digit:] Chiffres d�cimaux ASCII (�quivaut � \d ou [0-9]).
Quand UCP est activ� : chiffres d�cimaux Unicode (�quivaut � \d or \p{Nd}).
[:graph:] Caract�res ASCII imprimables hors espacements (�quivaut � Chr(33) ... Chr(126)).
[:lower:] Lettres minuscules ASCII 7 bits (�quivaut � [a-z]).
Quand UCP est activ� : lettres minuscules Unicode (�quivaut � \p{Ll}).
[:print:] Caract�res ASCII imprimables ASCII 7 bits, y compris espacements (�quivaut � Chr(32) ... Chr(126)).
[:punct:] Caract�res de ponctuation ASCII, [:print:] sauf [:alnum:] et Espace, (33-47, 58-64, 91-96, 123-126).
[:space:] Espacements ASCII (�quivaut � [\h\x0A-\x0D]). [:space:] n'est pas tout � fait �quivalant � \s car il inclut VT, Chr(11)).
[:upper:] Lettres majuscules ASCII 7 bits (�quivaut � [A-Z]).
Quand UCP est activ� : lettres majuscules Unicode (�quivaut � \p{Lu}).
[:word:] Caract�res 'mot' ASCII 7 bits (�quivaut � \w or [[:alnum:]_]).
Quand UCP est activ� : caract�res 'mot' Unicode (�quivaut � \w ou [[:alnum:]_] ou \p{Xwd}).
[:xdigit:] Chiffres hexad�cimaux (�quivaut � [0-9A-Fa-f]).

Groupes


Les Groupes sont utilis�s pour d�limiter des sous-mod�les et sont les blocs de construction d'expressions puissantes. Les groupes peuvent capturer ou pas et peuvent �tre imbriqu�s quelle que soit leur nature, � l'exception des groupes de commentaire. Une expression r�guli�re peut contenir jusqu'� 65535 groupes de capture.
Les lettres d'option (ci-dessus) peuvent �tre ins�r�s entre "?" et ":" des groupes non-capturants : "(?-i:[aeiouy]{5})" repr�sente 5 voyelles minuscules. Dans ce cas, les options sont locales au groupe.

( ... ) Groupe capturant. Les �l�ments d'un groupe sont trait�s dans l'ordre et peuvent �tre r�p�t�s comme un bloc. Par exemple, "(ab)+c" trouvera "abc" or "ababc", mais pas "abac".
Un groupe capturant enregistre le texte auquel il a concord� et ce contenu est utilisable par r�f�rence arri�re. Ce contenu se retrouve dans le tableau renvoy� dans certains modes. Les groupes capturant sont num�rot�s � partir de 1 dans l'ordre d'apparition de leur parenth�se ouvrante.
Les groupes capturant peuvent �galement �tre consid�r�s comme des sous-routines, r�f�ren�ables ailleurs dans le mod�le, �ventuellement de mani�re r�cursive.
(?<nom> ... ) Groupe de capture nomm�. Peut �tre appel� plus tard par son nom aussi bien que par son num�ro. �vitez d'utiliser le nom "DEFINE" (voir "Mod�les conditionnels").
(?: ... ) Groupe non-capturant. N'enregistre pas le texte auquel il a concord� et n'est pas num�rot� ; ne peut donc pas �tre r�utilis� par r�f�rencence arri�re.
(?| ... ) Groupe non-capturant avec r�emploi. Affecte le m�me num�ro � tous les groupes capturant de premier niveau figurant dans les alternatives de ce groupe : "(?|(Lu)ndi|(Ma)rdi|(Me)rcredi|(Je)udi|(Ve)ndredi|(Sa)medi|(Di)manche)" repr�sente un nom de jour de la semaine et capture son abr�viation dans le groupe num�ro 1.
(?> ... ) Groupe atomique non-capturant : traite le contenu auquel il concorde comme une entit� indivisible (voir aussi Quantificateurs et gourmandise ci-dessous). Les groupes atomiques, comme les quantifications possessives, sont toujours gourmands.
(?# ... ) Groupe commentaire : toujours ignor� (mais ne peut pas contenir une parenth�se fermante donc les commentaires de groupes ne sont pas embo�tables).

Quantificateurs et gourmandise


Les Quantificateurs (ou sp�cificateurs de r�p�tition) sp�cifient combien de ce qui pr�c�de, caract�re, classe, r�f�rence ou groupe devraient concorder. Les qualificatifs optionnels de gourmandise indiquent avec quelle agressivit� la r�p�tition se comportera. Par exemple "\d{3,5}" repr�sente au moins 3 et au plus de 5 chiffres d�cimaux.
Par d�faut, les mod�les sont "gourmands", ce qui signifie que les quantificateurs * + ? {...} concorderont � la cha�ne la plus longue qui ne fera pas �chouer le reste du mod�le. La gourmandise peut �tre invers�e pour l'ensemble du motif par l'option (?U) en t�te du mod�le, ou localement en pla�ant un point d'interrogation apr�s un quantificateur.
Les r�p�titions non-gourmandes (frugales) concorderont � la plus petite cha�ne qui permettra au reste du mod�le de r�aliser la concordance. Par exemple �tant donn� le texte "aaab", le mod�le "(a*)([ab]+)" capturera "aaa" puis "b", mais "(?U)(a*)([ab]+)" capturera "" puis "a": en effet, la capture d'une cha�ne vide satisfait l'�l�ment frugal "(a*)" et la capture de "a" concorde au sous-mod�le frugal "([ab]+)".
Les quantificateurs possessifs sont atomiques et gourmands. En fait, ils sont une notation abr�g�e pour les groupes atomiques simples. "\d++" est une notation abr�g�e pour "(?>\d+)" et son comportement est "faire concorder une s�quence indivisible d'un ou plusieurs chiffres d�cimaux, sans possibilit� d'en restituer seulement une partie par retour arri�re". En cons�quence "\d++(\d)" est un mod�le vou� � l'�chec du fait que le dernier chiffre (en gras) fait forc�ment partie du groupe indivisible "\d++" qui le pr�c�de. Par contraste, la gourmandise simple "\d+(\d)" fera d'abord concorder une s�quence compl�te de chiffres pour satisfaire l'�l�ment "\d+", mais entra�nera un retour arri�re et la restitution du dernier chiffre de la s�quence pour satisfaire sa capture par "(\d)".
Il y a deux raisons principales qui am�nent � employer un groupe atomique ou un quantificateur possessif : pour la concordance avec une s�quence de caract�res qui peuvent aussi appara�tre individuellement (e.g. "\r\n" dans la d�finition de \R), ou pour forcer rapidement l'�chec dans certaines situations utilisant des r�p�titions non born�es qui am�neraient le moteur � tester un nombre gigantesque de combinaisons de groupements avant de finalement �chouer.

? 0 ou 1, gourmand.
?+ 0 ou 1, possessif.
?? 0 ou 1, frugal.
* 0 ou plus, gourmand.
*+ 0 ou plus, possessif.
*? 0 ou plus, frugal.
+ 1 ou plus, gourmand.
++ 1 ou plus, possessif.
+? 1 ou plus, frugal.
{x} exactement x.
{x,y} au moins x et au plus y, gourmand.
{x,y}+ au moins x et au plus y, possessif.
{x,y}? au moins x et au plus y, frugal.
{x,} x ou plus, gourmand.
{x,}+ x ou plus, possessif.
{x,}? x ou plus, frugal.

Alternative


X|Y Repr�sente l'une des alternatives X ou Y: "ac|dc|ground" repr�sente "ac" ou "dc" ou "ground".

R�f�rences arri�res et r�f�rences � des sous-programmes


Les r�f�rences arri�res permettent la r�utilisation du contenu d'un groupe pr�c�demment captur�.

\n R�f�rence au num�ro absolu d'un groupe pr�c�demment captur�. ATTENTION: si aucun groupe num�rot� n n'existe, cet �l�ment est �valu� comme le caract�re de valeur n si n est une valeur octale valide, sinon d'autres erreurs apparaissent.
        En raison de cette ambigu�t�, cette formulation est � utiliser avec pr�caution. Favorisez les formes suivantes pour une meilleure s�curit� s�mantique.
\gn R�f�rence au num�ro absolu d'un groupe pr�c�demment captur�.
\g{n} R�f�rence au num�ro absolu d'un groupe pr�c�demment captur�. Similaire au pr�c�dent mais d�limite clairement n : imp�rative lorsque les caract�res qui suivent sont des chiffres.
\g-n R�f�rence au num�ro relatif d'un groupe pr�c�demment captur�.
\k<nom> R�f�rence au nom d'un groupe pr�c�demment captur�.

R�f�rence � un sous-programme

Les groupes capturant peuvent �tre invoqu�s (�ventuellement de mani�re r�cursive) exactement comme des sous-programmes dans un langage de programmation. Le sous-mod�le est tout simplement r�-ex�cut� au point courant dans le sujet. Voir la documentation de r�f�rence pour des d�tails et des exemples.

(?R) ou (?0) R�cursivit� vers l'expression r�guli�re enti�re.
(?n) Appelle un sous-mod�le par son num�ro absolu.
(?+n) Appelle un sous-mod�le par son num�ro relatif.
(?-n) Appelle un sous-mod�le par son num�ro relatif.
(?&nom) Appelle un sous-mod�le par son nom.

Ancrages et assertions


Les ancrages et les assertions sont des contraintes, des tests qui ne changent pas la position dans le texte et donc ne consomment ni ne capturent quoi que ce soit.

Un ancrage teste la position courante dans le sujet.

^ En dehors d'une classe de caract�re, ce test est satisfait si la position courante est le d�but du sujet, mais �galement apr�s une s�quence de saut de ligne non-finale si l'option (?m) est active. Par d�faut, la s�quence de saut de ligne est soit @CRLF, soit @CR ou @LF isol�s.
        Dans une classe de caract�res, un caret ^ compl�mente la classe (exclut les caract�res qu'elle repr�sente) s'il figure en premi�re position, concorde litt�ralement s'il se trouve dans une autre position.
$ En dehors d'une classe de caract�res, ce test est satisfait si la position courante est � la fin du texte, mais �galement avant une s�quence de saut de ligne si l'option (?m) est active.
Dans une classe de caract�res, $ repr�sente le signe dollar lui-m�me.
\A Test satisfait si la position courante est le d�but du texte, ind�pendamment de l'option multiligne (?m). �choue forc�ment si $iStart n'est pas 1.
\G Test satisfait si la position courante est la premi�re concordance trouv�e dans le texte.
\z Test satisfait si la position courante est � la fin du texte, ind�pendamment de l'option multiligne (?m).
\Z Test satisfait si la position courante est � la fin du texte ou avant une s�quence de saut de ligne, ind�pendamment de l'option multiligne (?m).

Une assertions teste les caract�res qui pr�c�dent (look-behind), une fronti�re de mot (\b) ou qui suivent (look-ahead) le point courant dans le texte.

\b Test satisfait si la position courante est � la limite d'un 'mot', soit entre des caract�res non tous deux \w ou \W. Voir \w pour la signification de 'mot'. Dans une classe de caract�res, \b est le caract�re de contr�le retour arri�re (Chr(8)).
\B Test satisfait si la position courante n'est pas � la limite d'un 'mot'.
(?=X) Look-ahead positif : test satisfait si le sous-mod�le X concorde � partir de la position courante.
(?!X) Look-ahead n�gatif : test satisfait si le sous-mod�le X ne concorde pas � partir de la position courante.
(?<=X) Look-behind positif : test satisfait si le sous-mod�le X concorde avec les caract�res qui pr�c�dent la position courante. Le mod�le X doit concorder avec une cha�ne de longueur born�e, c'est-�-dire ne pas utiliser de quantificateurs ind�finis * + ou ? ou leurs �quivalents.
(?<!X) Look-behind n�gatif : test satisfait si le sous-mod�le X ne concorde pas aux caract�res qui pr�c�dent la position courante. Le mod�le X doit concorder avec une cha�ne de longueur born�e, c'est-�-dire ne pas utiliser de quantificateurs ind�finis * + ou ? ou leurs �quivalents.

R�-initialisation de la concordance


Il y a des situations o� il est n�cessaire "d'oublier" qu'une concordance a �t� trouv�e jusqu'� pr�sent, afin de trouver une concordance plus pertinente plus loin dans le texte.

\K R�-initialise le d�marrage de la recherche au point courant du sujet. Notez que les groupes d�j� captur�s sont conserv�s dans le tableau renvoy� ; il est donc toujours possible d'y faire r�f�rence plus tard. L'action de \K est similaire mais non identique � un look-behind, en ce que \K permet de travailler avec un sous-mod�le de longueur non born�e.

Blocs conditionnels


Ces constructions sont similaires aux blocs If...EndIf et If...Else...EndIf.

(?(condition)mod�le_si_vrai) Permet une ex�cution conditionnelle de mod�le_si_vrai.
(?(condition)mod�le_si_vrai|mod�le_si_faux) Applique l'un des mod�les suivant le r�sultat de (condition).
    o� (condition) peut �tre de la forme suivante :
(n) Teste si le groupe de capture de num�ro absolu n permet la concordance.
(+n) Teste si le groupe de capture de num�ro relatif +n permet la concordance.
(-n) Teste si le groupe de capture de num�ro relatif -n permet la concordance.
(<nom>) Teste si le groupe de capture nomm� nom permet la concordance.
(R) Teste si une quelconque r�currence s'est produite.
(Rn) Teste si la plus r�cente r�currence portait sur la capture par le groupe de num�ro absolu n.
(R&name) Teste si la plus r�cente r�currence portait sur la capture par le groupe de nom name.
(DEFINE) Utilis�e sans mod�le_si_faux : permet la d�finition d'un sous-programme nomm� utilisable par ailleurs. "(?x) (?(DEFINE) (?<octet> 2[0-4]\d | 25[0-5] | 1\d\d | [1-9]?\d) )" d�finit un sous-programme nomm� "octet" qui permet une concordance avec un composant num�rique d'adresse IPv4. Ensuite, une adresse r�elle peut �tre recherch�e par "\b (?&byte) (\.(?&byte)){3} \b".
(assertion) Ici assertion est une assertion positive ou negative, look-ahead ou look-behind.

Fonctionnalit�s avanc�es diverses


Les options, les escapes et les constructions sont simplement mentionn�s ici ; voir la documentation de r�f�rence pour comprendre pourquoi, quand et comment les utiliser, voire pas du tout.

Param�tres et options peu fr�quents

            
(?J) Permet d'assigner un m�me nom � plusieurs groupes ou sous-programme (non d�taill� ici).
(?X) Les �l�ments hors contexte provoquent une erreur, au lieu d'�tre ignor�s.
(*J) Autorise une compatibilit� partielle avec les expressions r�guli�res Javascript (non d�taill� ici).
(*LIMIT_MATCH=n) Limite � n le nombre de concordances trouv�es.
(*LIMIT_RECURSION=n) Limite la r�cursion � n niveaux.
(*NO_START_OPT) D�sactive plusieurs optimisations (non d�taill� ici).

Contr�le du retour arri�re (backtracking)

(*ACCEPT) Force le succ�s imm�diat de la concordance dans le sous-programme en cours ou dans le mod�le de premier niveau.
(*FAIL) ou (*F) Force l'�chec imm�diat de la recherche.
(*MARK:nom) or (*:nom) (Voir la documentation de r�f�rence.)
(*COMMIT) (Voir la documentation de r�f�rence.)
(*PRUNE) (Voir la documentation de r�f�rence.)
(*PRUNE:name) (Voir la documentation de r�f�rence.)
(*SKIP) (Voir la documentation de r�f�rence.)
(*SKIP:name) (Voir la documentation de r�f�rence.)
(*THEN) (Voir la documentation de r�f�rence.)
(*THEN:name) (Voir la documentation de r�f�rence.)

Commentaires g�n�raux sur les expressions r�guli�res AutoIt


    1. Lorsque UCP est actif, la sensibilit� � la casse s'applique sur le plan 0 du jeu Unicode. Il y a aussi un petit nombre de 'many-to-one mappings' dans Unicode, comme la lettre minuscule Gr�que sigma; elles sont support�es par PCRE avec l'option UCP install�e.

    2. D'autres syntaxes existent dans d'autres dialectes tels Perl, Ruby, Python, JavaScript, .NET et d'autres moteurs. Ne pas utiliser de constructions non �num�r�es ici : certaines ne fonctionneront simplement pas, certaines fourniront des r�sultats erron�s, d'autres provoqueront des probl�mes graves ou simplement un crash.

    3. La convention de saut de ligne par d�faut est une s�quence indivisible @CRLF ou un caract�re isol� @CR ou @LF. De fa�on similaire \R cherche la concordance avec le m�me ensemble. Analysez vos donn�es ! Si vous savez que votre texte utilise les caract�res s�par�s @LF ou @CR pour indiquer quelque chose d'autre qu'un saut de ligne, vous pourriez avoir � modifier la convention de saut de ligne et/ou la recherche d'une concordance par \R (voir "Param�tres").

Voir aussi le tutoriel Expression R�guli�re, dans lequel vous pouvez ex�cuter un script pour tester vos expressions r�guli�res.

En relation

StringInStr, StringRegExpReplace

Exemples

Exemple 1

; == Mode 0: REGEXPMATCH
; Retourne 1 si une premi�re concordance a �t� trouv�e, sinon 0

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

Global $sujet, $regex, $iResult

$sujet = "Aujourd'hui, on est Dimanche"
$regex = "\bDi" ; Crit�re: mot commen�ant par "Di"   
    
$iResult = StringRegExp($sujet, $regex, $STR_REGEXPMATCH)
MsgBox($MB_SYSTEMMODAL, "Mode 0", ($iResult = 1 ? "Trouv�" : "Non trouv�"))


Exemple 2

; == Mode 1: REGEXPARRAYMATCH
; Retourne le tableau des groupes captur�s pour la premi�re concordance
; Si aucun groupe n'est captur�, retourne le r�sultat complet de la concordance en [0]

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
#include <Array.au3>

Global $sujet, $regex, $aArray  

$sujet = "Dimanche Lundi Mardi Mercredi"
$regex = "\b\w+di\b" ; Mot se terminant par 'di' et aucun groupe captur�
$aArray = StringRegExp($sujet, $regex, $STR_REGEXPARRAYMATCH)
_ArrayDisplay($aArray, "Mode 1 - sans capture")     

$regex = "\b(\w+)(di)\b" ; Mot se terminant par 'di'  et deux groupes captur�s
$aArray = StringRegExp($sujet, $regex, $STR_RegExpArrayMatch)
_ArrayDisplay($aArray, "Mode 1 - deux captures")


Exemple 3

; == Mode 1: REGEXPARRAYMATCH
; Utilisation du param�tre $iStart pour boucler sur les concordances

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
#include <Array.au3>

Global $sujet, $regex, $aArray, $iStart 

$sujet = "Dimanche Lundi Mardi Mercredi"
$regex = "(\b\w+)(di)\b" ; Mot se terminant par 'di' et deux groupes captur�s
    
$aArray = StringRegExp($sujet, $regex, $STR_REGEXPARRAYMATCH)
While @error = 0
    $iStart = @extended
    _ArrayDisplay($aArray, "Mode 1")
    $aArray = StringRegExp($sujet, $regex, $STR_REGEXPARRAYMATCH, $iStart)
WEnd


Exemple 4

; == Mode 2: REGEXPARRAYFULLMATCH  (retour simple, style php/preg_match())
; Cherche la premi�re concordance et retourne un tableau avec le r�sultat complet en [0]
; suivi des groupes de capture en [1], [2], ...

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
#include <Array.au3>

Global $sujet, $regex, $aArray
 
$sujet = "Dimanche Lundi Mardi Mercredi"
$regex = "\b(\w+)(di)\b"
$aArray = StringRegExp($sujet, $regex, $STR_REGEXPARRAYFULLMATCH)
    
_ArrayDisplay($aArray, "Mode 2")


Exemple 5

; == Mode 3 : REGEXPARRAYGLOBALMATCH  (retour global, style ancien AutoIt)
; Retourne le tableau des groupes captur�s de TOUTES les concordances

#include <Array.au3>
#include <StringConstants.au3>
#include <Array.au3>

Global $sujet, $regex, $aArray

$sujet = "Dimanche Lundi Mardi Mercredi"
$regex = "\b(\w+)(di)\b"
$aArray = StringRegExp($sujet, $regex, $STR_REGEXPARRAYGLOBALMATCH)

_ArrayDisplay($aArray, "Mode 3")


Exemple 6

; == Mode 4 : REGEXPARRAYGLOBALFULLMATCH (retour global, style php/preg_match_all())
; Retourne un tableau avec autant d'�l�ments que de concordances
; Chaque �l�ment est lui-m�me un tableau contenant la concordance compl�te ainsi que les groupes captur�s.

#include <Array.au3>
#include <StringConstants.au3>
#include <Array.au3>

Global $sujet, $regex, $aConcordance, $aArray

$sujet = "Dimanche Lundi Mardi Mercredi"
$regex = "\b(\w+)(di)\b"

$aConcordance = StringRegExp($sujet, $regex, $STR_REGEXPARRAYGLOBALFULLMATCH)

for $i=0 to UBound($aConcordance)-1
    $aArray = $aConcordance[$i]
    _ArrayDisplay($aArray, "Mode 4 - retour global")    
Next