Regexp

From Base de connaissances eggdrops & TCL
Jump to: navigation, search

regexp - Compare une expression rationelle à une chaîne

Syntaxe

regexp ?switches? exp string ?matchVar? ?subMatchVar subMatchVar ...?

Description

Détermine si l'expression rationelle exp correspond à tout ou partie de string et retourne 1 si vrai, 0 si faux, à moins que -inline soit spécifié (voir ci-dessous). (la correspondance des expressions rationelles est décrite dans la page de référence de re_syntax.)

Si des arguments supplémentaires sont spécifiés après string alors ils sont traités comme les noms des variables dans lesquelles renvoyer l'information au sujet de la ou les parties de string correspondant à exp. MatchVar sera fixé à la partie de string correspondant à exp La première subMatchVar contiendra les caractères de string qui correspondent à la sous expression entre parenthèses la plus à gauche dans exp, la subMatchVar suivante contiendra les caractères qui correspondent à la sous expression entre parenthèses suivante à droite dans exp, et ainsi de suite.

Si les arguments initiaux à regexp commencent avec - alors ils sont traités comme des commutateurs. Les commutateurs suivants sont couramment supportés:

  • -about Au lieu de tenter de correspondre à une expression rationelle, retourne une liste contenant l'information concernant l'expression rationelle Le premier élément de la liste est un compte des sous expressions Le second élément est une liste de noms de propriété qui decrivent plusieurs attributs de l'expression rationelle. Ce switch est conçu dans un but de debugging.
  • -expanded Active l'usage de la syntaxe étendue des expressions rationelles où l'espace et les commentaires sont ignorés. Identique à la spécification de l'option (?x).
  • -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).
  • -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 METASYNTAXE, ci-dessous).
  • -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).
  • -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 rationelle 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 rationelle.

Exemples:

regexp -inline -- {\w(\w)} " inlined "
# => {in n}
regexp -all -inline -- {\w(\w)} " inlined "
# => {in n li i ne e}
  • -start index Spécifie un index de caractère dans une chaîne pour commencer la correspondance à une expression rationelle 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. parcequ'il etait 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

Voir également

regsub, re_syntax, Documentation Expressions régulières pour tcl