====== regexp ====== Compare une expression régulière à une chaîne ===== Description ===== Détermine si l'expression régulière //exp// correspond à tout ou partie de //string// et renvoie 1 si c'est le cas, 0 si ce n'est pas le cas, à moins que //-inline// ne soit spécifié (voir ci-dessous). (La correspondance des expressions régulières est décrite dans la page de référence de [[:faq:re_syntax]]). Si des arguments supplémentaires sont spécifiés après chaîne, ils sont traités comme des noms de variables dans lesquelles sont renvoyées des informations sur la ou les parties de chaîne correspondant à //exp//. //matchVar// sera défini comme la plage de la chaîne qui correspond à l'ensemble de exp. Le premier subMatchVar contiendra les caractères de la chaîne qui correspondent à la sous-expression parenthésée la plus à gauche dans exp, le sous-MatchVar suivant contiendra les caractères qui correspondent à la sous-expression parenthésée la plus à droite dans exp, et ainsi de suite. ===== Syntaxe ===== regexp ?switches? exp string ?matchVar? ?subMatchVar subMatchVar ...? ==== switches ==== * **-about** : Au lieu d'essayer de faire correspondre l'expression régulière, renvoie une liste contenant des informations sur l'expression régulière. Le premier élément de la liste est le nombre de sous-expressions. Le deuxième élément est une liste de noms de propriétés qui décrivent divers attributs de l'expression rationnelle. Ce commutateur est principalement destiné à des fins de débogage. * **-expanded** : Active l'usage de la syntaxe étendue des expressions rationnelles où l'espace et les commentaires sont ignorés. Identique à la spécification de l'option (?x) (voir [[:faq:re_syntax#meta_syntaxe]]). * **-indices** : Change ce qui est stocké dans les //subMatchVars// Au lieu de stocker les caractères correspondants de //string//, chaque variable contiendra une liste de deux chaînes décimales donnant les indices dans string des premiers et derniers caractères dans l'intervalle correspondant des caractères. * **-line** : Active la correspondance sensible au saut de ligne Par défaut, le saut de ligne est un caractère ordinaire sans signification spéciale Avec ce flag, l'expression crochets [^ et . ne correspond jamais à newline, ^ correspond à une chaîne vide après toute newline en plus de sa fonction normale, et $ correspond une chaîne vide avant toute newline en en plus de sa fonction normale, ce flag est équivalent à la spécification à la fois de **-linestop** et **-lineanchor**, ou de l'option `(?n)` (voir [[:faq:re_syntax#meta_syntaxe]]). * **-linestop** : Change le comportement de l'expression crochets [^ et . de façon à ce qu'elles s'arrêtent aux saut de lignes. Ceci est identique à la spécification de l'option `(?p)` (voir [[:faq:re_syntax#meta_syntaxe]]). * **-lineanchor** : Change le comportement de ^ et $ (les "ancres") de façon à ce qu'ils correspondent au début et à la fin d'une ligne respectivement. Ceci est identique à la spécification de l'option `(?w)` (voir [[:faq:re_syntax#meta_syntaxe]]). * **-nocase** : Cause l'interprétation des caractères majuscules de //string// comme minuscules pendant le traitement des correspondances. * **-all** : Teste la correspondance de l'expression rationnelle le plus grand nombre de fois possible dans la chaîne, retournant le nombre total de correspondances trouvées si spécifié avec des variables de correspondance, ne contiendront l'information que pour la dernière correspondance. * **-inline** : Provoque le renvoi, comme liste, des données qui auraient été autrement placées dans des variables de correspondance Quand **-inline** est utilisée, les variables de correspondance ne peuvent pas être spécifiées Si utilisé avec **-all**, la liste sera concaténée à chaque itération, de ce fait une liste plate est toujours renvoyée. Pour chaque itération, la commande ajoutera les correspondances supplémentaires aux données, plus un élément pour chaque sous expression dans l'expression rationnelle. * **-start //index//** : Spécifie un index de caractère dans une chaîne pour commencer la correspondance à une expression rationnelle. A l'utilisation de ce switch, ^ ne correspond plus au début de la ligne, et \A correspond toujours au début de la chaîne à //index//. Si **-indices** est spécifié, les indices seront indexés en partant du début de la chaîne d'entrée. //index// sera contraint au limites de la chaîne d'entrée. * **--** : Marque la fin des commutateurs. L'argument suivant ceci sera traité comme //exp// même s'il commence avec un -. S'il y a plus de //subMatchVar// que de sous expressions entre parenthèses dans //exp//, ou si une sous expression particulière dans //exp// ne correspond pas à la chaîne (ex. parce qu’il était dans une partie de l'expression qui n'a pas été trouvée), alors la //subMatchVar// correspondante sera fixée à "-1-1" si **-indices** a été spécifié ou à une chaîne vide autrement. ===== Exemples ===== ===== Voir aussi ===== [[:faq:re_syntax]], [[:tcl:regsub]], {{ :faq:regexp.pdf |}} {{tag>tcl "Expressions rationnelles"}}