Vérifie si une chaîne de caractères correspond à un modèle d'expression régulière.
StringRegExp ( "test", "pattern" [, flag = 0 [, offset = 1]] )
| test | La chaîne à vérifier |
| pattern | L'expression régulière à comparer. |
| flag | [optionnel] Nombre qui indique comment la fonction se comporte. Voir plus bas pour plus de détails. La valeur par défaut est 0. |
| offset | [optionnel] La position dans la chaîne pour commencer la recherche (commence à 1). La valeur par défaut est 1. |
| Flag | Valeurs |
| $STR_REGEXPMATCH (0) | Retourne 1 (trouvé) ou 0 (non trouvé) |
| $STR_REGEXPARRAYMATCH (1) | Retourne le tableau des occurrences. |
| $STR_REGEXPARRAYFULLMATCH (2) | Retourne un tableau de résultats incluant le résultat complet (style Perl / PHP). |
| $STR_REGEXPARRAYGLOBALMATCH (3) | Retourne un tableau de résultats globaux. |
| $STR_REGEXPARRAYGLOBALFULLMATCH (4) | Retourne un tableau de tableaux contenant les résultats globaux incluant le résultat complet (style Perl / PHP). |
| : | @error 2 Mauvais modèle. @Extended = position de l'erreur dans le modèle. |
| : | @error 0 Tableau valide. @extended = position suivante 1 Tableau invalide. Aucune correspondance. 2 Mauvais modèle, tableau invalide. @extended = position de l'erreur dans le modèle. |
| : | @error 0 Tableau valide. @extended = position suivante 1 Tableau invalide. Aucune correspondance. 2 Mauvais modèle, tableau invalide. @extended = position de l'erreur dans le modèle. |
| $STR_REGEXPMATCH (0) | retourne 1 (true) ou 0 (false) selon que le modèle a été trouvé ou pas. |
| $STR_REGEXPARRAYMATCH (1) $STR_REGEXPARRAYFULLMATCH (2) |
trouve la première correspondance et retourne les groupes capturés dans un tableau; quand le modèle n'a pas capturé de groupe , la première correspondance est retournée dans le tableau. |
| $STR_REGEXPARRAYGLOBALMATCH (3) $STR_REGEXPARRAYGLOBALFULLMATCH (4) |
remplit le tableau avec toutes les occurrences des correspondances. |
| (*CR) | Carriage return (@CR). |
| (*LF) | Line feed (@LF). |
| (*CRLF) | Carriage return immédiatement suivi de linefeed (@CRLF). |
| (*ANYCRLF) | Un de ceux là: @CRLF, @CR or @LF. Ceci est la convention par défaut de newline. |
| (*ANY) | Une des séquence unicode newline: @CRLF, @LF, VT, FF, @CR or \x85. |
| (*BSR_ANYCRLF) | Par défaut \R recherche seulement @CRLF, @CR or @LF. |
| (*BSR_UNICODE) | Change \R pour rechercher une séquence Unicode newline: @CRLF, @LF, VT, FF, @CR ou \x85. |
| (?i) | Caseless: la recherche devient insensible à la casse à partir de là. Par défaut, la recherche est sensible à la casse. Quand UCP est activée il s'applique à l'ensemble du plan d'Unicode 0, sinon il s'applique par défaut seulement aux lettres ASCII A-Z et a-z. |
| (?m) | multiligne: ^ et $ recherche des séquences de sauts de ligne avec des données entre. Par défaut, multiligne est désactivé. |
| (?s) | Mono-ligne ou DotAll: . recherche tout, y compris une séquence de saut de ligne. Par défaut, DotAll est désactivé donc . ne recherche pas une séquence de saut de ligne. |
| (?U) | Paresseux: les quantificateurs deviennent paresseux (non gourmands) à partir de là. Par défaut, la recherche est gourmande - voir ci-dessous pour plus de détails. |
| (?x) | eXtended: les espaces blancs à l'extérieur des classes de caractères sont ignorés et # démarre un commentaire jusqu'à la prochaine nouvelle ligne solide dans le modèle. Les espaces blancs dénués de sens entre les éléments rendent les expressions régulières beaucoup plus lisibles. Par défaut, les espaces blancs se correspondent et # est un caractère littéral. |
| \a | Représente "alarm", le caractère BEL (Chr(7)). |
| \cX | Représente "control-X", où X est n'importe quel caractère ASCII 7-bit. Par exemple, "\cM" représente ctrl-M, de même que \x0D ou \r (Chr(13)). |
| \e | Représente le caractère de contrôle "escape" (Chr(27)). Ne pas confondre avec l'échappement 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 avec le code octal ddd, OU une référence arrière pour capturer un groupe de chiffres ddd en décimal. Par exemple, ([a-z])\1 recherche une lettre doublé. Conseil: comme il peut être ambiguë! Favorisez les représentations hexadécimales ci-dessous. |
| \xhh | Représente un caractère Unicode en hexadécimal hh: "\x7E" représenté un tilda, "~". |
| \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, reste un littéral x. Utilisé pour représenter les méta-caractères littéraux: "\.\[" représente un point suivi d'un crochet ouvrant, ".[". |
| \Q ... \E | Verbatim sequence: les métacaractères perdent leur signification spéciale entre \Q et \E: "\Q(.)\E" recherche "(.)" et est équivalent à "\(\.\)" mais plus lisible. |
| . | Cherche tout caractère simple excepté, par défaut, une séquence 'newline'. Cherche aussi 'newline' quand l'option (?s) est active. |
| \d | Cherche tout chiffre décimal (n'importe quel chiffre décimal unicode dans n'importe quel langage quand UCP est activé). |
| \D | Cherche tout caractère qui n'est pas un chiffre. |
| \h | Cherche tout caractère 'blanc horizontal' (voir tableau ci-dessous). |
| \H | Cherche tout caractère qui n'est pas un 'blanc horizontal'. |
| \N | Cherche tout caractère sauf une séquence 'newline' peu importe l'option (?s) strong>. |
| \p{ppp} | Seulement quand UCP est activé: cherche tout caractère Unicode avec la propriété ppp. Par exemple, "\b\p{Cyrillic}+" cherche tous les mots cyrilliques; "\p{Sc}" cherche tout symbole monétaire. Consultez la documentation de référence pour plus de détails. |
| \P{ppp} | Seulement quand UCP est activé: cherche un caractère Unicode qui n'a pas la propriété ppp. |
| \R | Cherche toute séquence 'newline' Unicode par défaut, ou avec le paramètre (*BSR_...) actif. Par défaut \R cherche "(?>\r\n|\n|\r)" où "(?>...)" est une entité, qui rend la séquence "\r\n" (@CRLF) insécable. |
| \s | Cherche tout caractère 'blanc' (voir tableau ci-dessous). |
| \S | Cherche tout caractère qui n'est pas 'blanc'. |
| \v | Cherche tout caractère 'blanc vertical' (voir tableeu ci-dessous). |
| \V | Cherche tout caractère qui n'est pas 'blanc vertical'. |
| \w | Cherche tout caractère 'mot': tout chiffre, toute lettre ou l'underscore "_" (tout chiffre Unicode, toute lettre Unicode dans tout langage ou l'underscore "_" quand UCP est activé). |
| \W | Cherche tout caractère qui n'est pas 'mot'. |
| \X | Seulement quand UCP est activé: cherche tout Unicode étendu qui est un élément graphème - une séquence insécable de codes qui représente un simple caractère pour l'utilisateur. En conséquence \X peut chercher plus d'un caractère dans la chaîne d'origine, contrairement à toutes les autres séquences de ce tableau. |
| [ ... ] | cherche tout caractère d'un ensemble explicite: "[aeiou]" cherche 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]" cherche toute lettre ASCII minuscule. Pour inclure un tiret (-) dans l'ensemble, placez-le au début ou à la fin de l'ensemble, ou faires-en un caractère d'échappement (\-). Notez que le modèle "[A-z]" n'est pas le même que "[A-Za-z]": cette forme est équivalente à "[A-Z\[\\\]^_`a-z]". Pour inclure un crochet fermant dans l'ensemble, placez-le en première position de l'ensemble ou faites-en un caractère d'échappement: "[][]" et "[\[\]]" chercheront tous les deux "[" 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 backspace (Chr(8)). |
| [^ ... ] | Cherche tout caractère qui n'est pas dans l'ensemble: "[^0-9]" cherche tout caractère qui n'est pas un chiffre. Pour inclure un caret (^) dans un ensemble, placez-le en première position de l'ensemble ou faites-en un caractère d'échappement (\^). |
| [:alnum:] | Lettres et chiffres ASCII (pareil que [^\W_] ou [A-Za-z0-9]). Quand UCP est activé: Lettres et chiffres Unicode (pareil que [^\W_] ou \p{Xan}). |
| [:alpha:] | Lettres ASCII (pareil que [^\W\d_] ou [A-Za-z]). Quand UCP est activé: lettres Unicode (pareil que [^\W\d_] ou \p{L}). |
| [:ascii:] | Caractères ASCII (pareil que [\x00-\x7F]). |
| [:blank:] | Espace ou Tab (@TAB) (pareil que \h ou [\x09\x20]). Quand UCP est activé: 'blanc horizontal' Unicode (pareil que \h). |
| [:cntrl:] | Caractères de contrôle ASCII (pareil que Chr(0) ... Chr(31) et Chr(127)). |
| [:digit:] | Chiffres décimaux ASCII (pareil que \d ou [0-9]). Quand UCP est activé: Chiffres décimaux Unicode (pareil que \d or \p{Nd}). |
| [:graph:] | Caractères ASCII qui s'affichent, sauf Espace (pareil que Chr(33) ... Chr(126)). |
| [:lower:] | Lettres minuscules ASCII (pareil que [a-z]). Quand UCP est activé: Lettres minuscules Unicode (pareil que \p{Ll}). |
| [:print:] | Caractères ASCII qui s'affichent, y compris Espace (pareil que Chr(32) ... Chr(126)). |
| [:punct:] | Caractères de ponctuation ASCII, [:print:] sauf [:alnum:] et Espace, (33-47, 58-64, 91-96, 123-126). |
| [:space:] | Espaces blancs ASCII (pareil que [\h\x0A-\x0D]). [:space:] n'est pas tout à fait pareil que \s: il inclut VT, Chr(11)). |
| [:upper:] | Lettres majuscules ASCII (pareil que [A-Z]). Quand UCP est activé: Lettres majuscules Unicode (pareil que \p{Lu}). |
| [:word:] | Caractères ASCII "Word" (pareil que \w or [[:alnum:]_]). Quand UCP est activé: Caractères Unicode "word" (pareil que \w ou [[:alnum:]_] ou \p{Xwd}). |
| [:xdigit:] | Chiffres Hexadécimaux (pareil que [0-9A-Fa-f]). |
| ( ... ) | Capture de groupe. 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". En capturant des groupes, rappelez-vous le texte qu'ils cherchent pour une utilisation dans les références arrières et qu'ils remplissent le tableau éventuellement retourné. Ils sont numérotés à partir de 1 dans l'ordre d'apparition de leur parenthèse ouvrante. Les groupes de capture peuvent également être considérés comme des subroutines ailleurs dans le modèle, peut-être de manière récursive. |
| (?<name> ... ) | Groupe de capture nommé. Peut être appelé plus tard par son nom aussi bien que par son numéro. Evitez d'utiliser le nom "DEFINE" (voir "Modèles conditionnels"). |
| (?: ... ) | Groupe sans capture. N'enregistre pas les caractères trouvés dans un tableau qui ne peuvent donc pas être re-utilisés dans une référencence arrière. |
| (?| ... ) | Groupe sans capture avec initialisation. Re-initialise les numéros de groupes cappturés dans chaque alternative de haut niveau qu'il contient : "(?|(Mon)|(Tue)s|(Wed)nes|(Thu)rs|(Fri)|(Sat)ur|(Sun))day" cherche un jour de la semaine et capture son abréviation dans un groupe numéro 1. |
| (?> ... ) | Groupe atomique non capturant: locks and never backtracks into (gives back from) what has been matched (see also Quantifiers and greediness below). Atomic groups, like possessive quantifiers, are always greedy. |
| (?# ... ) | Groupe commentaire: toujours ignoré (mais ne peut pas contenir une parenthèse fermante donc les commentaires de groupes ne sont pas emboîtables). |
| ? | 0 ou 1, gourmand. |
| ?+ | 0 ou 1, possessif. |
| ?? | 0 ou 1, paresseux. |
| * | 0 ou plus, gourmand. |
| *+ | 0 ou plus, possessif. |
| *? | 0 ou plus, paresseux. |
| + | 1 ou plus, gourmand. |
| ++ | 1 ou plus, possessif. |
| +? | 1 ou plus, paresseux. |
| {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, lazy. |
| {x,} | x ou plus, gourmand. |
| {x,}+ | x ou plus, possessif. |
| {x,}? | x ou plus, paresseux. |
| X|Y | Cherche chaque partie du modèle X ou Y: "ac|dc|ground" cherche "ac" ou "dc" ou "ground". |
| \n | Fait référence un groupe précédemment capturé par son numéro absolu. ATTENTION: si aucun groupe numéro n n'existe, il évalue comme un caractère de valeur
n si n est une valeur octale valide, ou d'autres erreurs apparaissent. En raison de cette ambiguïté, cette formulation ne est pas recommandée. Favorisez les formes suivantes pour une sécurité sémantique. |
| \gn | Fait référence à un groupe précédemment capturé par son numéro absolu. |
| \g{n} | Fait référence à un groupe précédemment capturé par son numéro absolu. Similaire à ce qui précède mais délimite clairement où n se termine: utile lorsque les caractères qui suivent sont des chiffres. |
| \g-n | Fait référence à un groupe précédemment capturé par son numéro relatif. |
| \k<name> | Fait référence à un groupe précédemment capturé par son nom. |
| (?R) ou (?0) | Récursivité dans 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 relatif. |
| (?&name) | Appelle un sous-modèle par son nom. |
| ^ | En dehors d'une classe de caractère, le caret correspond au début du texte d'origine, et également juste après une séquence 'newline' non-finale si l'option (?m) est active. Par défaut, la séquence 'newline' est @CRLF. Dans une classe de caractères, le leading ^ complèmente la classe (exclut les caractères qui y sont énumérés). |
| $ | En dehors d'une classe de caractères, le dollar teste la correspondance à la fin du texte sujet, et aussi juste avant une séquence 'newline' si l'option (?m) est active. Dans une classe de caractères, $ signifie lui-même, le signe dollar. |
| \A | Teste la correspondance seulement au début absolu de la chaîne sujet, quel que soit le l'option multiligne (?m). Ne validera pas jamais une correspondance si l'offset n'est pas 1. |
| \G | Valide la correspondance quand la position courante est la première position trouvée dans le sujet. |
| \z | Cherche une correspondance seulement à la fin de la chaîne sujet, quel que soit l'option multiligne (?m). |
| \Z | Cherche une correspondance seulement à la fin de la chaîne sujet, ou avant une séquence 'newline', quel que soit l'option multiligne (?m). |
| \b | Cherche une correspondance à la limite d'un "word", par exemple entre les caractères \w ou \W. Voir \w pour la signification de "word". Dans une classe de caractères, \b signifie "backspace" (Chr(8)). |
| \B | Cherche une correspondance qui n'est pas à la limite d'un "word". |
| (?=X) | Look-ahead positif: succès quand le sous-modèle X trouve une correspondance au début de la position courante. |
| (?!X) | Look-ahead négatif: succès quand le sous-modèle X ne trouve pas une correspondance au début de la position courante. |
| (?<=X) | Look-behind positif: succès quand le sous-modèle X trouve une correspondance avec les caractères qui précèdent la position courante. Le modèle X doit chercher une chaîne de longueur fixée, c'est-à-dire ne pas utiliser des quantificateurs indéfinis * + ou ?. |
| (?<!X) | Look-behind négatif: succès quand le sous-modèle X ne trouve pas de correspondance avec les caractères qui précédent la position courante. Le modèle X doit chercher une chaîne de longueur fixée, c'est-à-dire ne pas utiliser des quantificateurs indéfinis * + ou ?. |
| \K | Ré-initialise le démarrage de la recherche au point courant de la chaîne sujet. Remarquez que les groupes déjà capturés sont abandonnés dans le tableau retourné; il est donc toujours possible de faire des références arrières vers eux plus tard. L'action de \K est similaire mais non identique à un look-behind, en ce que \K peut travailler sur des alternances de différentes longueurs. |
| (?(condition)yes-pattern) | Permet une exécution conditionnelle de modèle. |
| (?(condition)yes-pattern|no-pattern) | Choisit entre des modèles distincts suivant le résultat de (condition). |
| (n) | Teste si le groupe de capture avec le numéro absolu n réalise la correspondance. |
| (+n) | Teste si le groupe de capture avec le numéro relatif +n réalise la correspondance. |
| (-n) | Teste si le groupe de capture avec le numéro relatif -n réalise la correspondance. |
| (<name>) | Teste si le groupe de capture avec le nom name réalise la correspondance. |
| (R) | Teste si un type de récurrence s'est produite. |
| (Rn) | Teste si la plus récente récurrence était pour capturer un groupe avec le numéro absolu n. |
| (R&name) | Teste si la plus récente récurrence était pour capturer un groupe avec le nom name. |
| (DEFINE) | Utilisée sans modèle, permet la définition d'un sous-programme utilisable à partir d'ailleurs. "(?x) (?(DEFINE) (?<byte> 2[0-4]\d | 25[0-5] | 1\d\d | [1-9]?\d) )" définit un sous-programme nommé "byte" qui cherche une correspondance avec un composant 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. |
| (?J) | Permet de dupliquer les noms de groupes ou de sous-programme (n'est pas détaillé plus loin ici). |
| (?X) | Provoque des séquences hors-cadre pour déclencher une erreur, au lieu d'être bénigne. |
| (*J) | Installe la compatibilité avec Javascript (n'est pas détaillé ici). |
| (*LIMIT_MATCH=n) | Limite le nombre de correspondances trouvés à n. |
| (*LIMIT_RECURSION=n) | Limite la récurrence à n levels. |
| (*NO_START_OPT) | Désactive plusieurs optimisations (n'est pas détaillé ici). |
| (*ACCEPT) | Force un succès immédiat de la recherche dans le sous-programme en cours ou dans le modèle de haut niveau. |
| (*FAIL) ou (*F) | Force un échec immédiat de la recherche. |
| (*MARK:name) or (*:name) | (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.) |
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
Local $aArray = 0, _
$iOffset = 1
While 1
$aArray = StringRegExp('<test>a</test> <test>b</test> <test>c</Test>', '(?i)<test>(.*?)</test>', $STR_REGEXPARRAYMATCH, $iOffset)
If @error Then ExitLoop
$iOffset = @extended
For $i = 0 To UBound($aArray) - 1
MsgBox($MB_SYSTEMMODAL, "RegExp Test with Option 1 - " & $i, $aArray[$i])
Next
WEnd
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
Local $aArray = StringRegExp('<test>a</test> <test>b</test> <test>c</Test>', '(?i)<test>(.*?)</test>', $STR_REGEXPARRAYFULLMATCH)
For $i = 0 To UBound($aArray) - 1
MsgBox($MB_SYSTEMMODAL, "RegExp Test with Option 2 - " & $i, $aArray[$i])
Next
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
Local $aArray = StringRegExp('<test>a</test> <test>b</test> <test>c</Test>', '(?i)<test>(.*?)</test>', $STR_REGEXPARRAYGLOBALMATCH)
For $i = 0 To UBound($aArray) - 1
MsgBox($MB_SYSTEMMODAL, "RegExp Test with Option 3 - " & $i, $aArray[$i])
Next
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
Local $aArray = StringRegExp('F1oF2oF3o', '(F.o)*?', $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aMatch = 0
For $i = 0 To UBound($aArray) - 1
$aMatch = $aArray[$i]
For $j = 0 To UBound($aMatch) - 1
MsgBox($MB_SYSTEMMODAL, "RegExp Test with Option 4 - " & $i & ',' & $j, $aMatch[$j])
Next
Next