Cette commande cherche une correspondance de l'expression exp dans string, et elle copie string dans la variable dont le nom est donné par varName (la correspondance avec les expressions rationnelles est décrite dans la page de référence de re_syntax). S'il y a une correspondance, alors pendant la copie de string vers varName, la partie de “string” qui correspond à “exp” est remplacée par subSpec. Si subSpec contient un & ou \0, cette séquence est remplacée lors de la substitution, par la partie de chaîne qui correspond à “exp”. Si subSpec contient un \n où n est un chiffre entre 1 et 9, cette séquence est remplacée pendant la substitution par la partie de chaîne qui correspond à la n_ième sous expression de “exp”. Pour éviter cette interprétation spéciale de &, \0 ou \n, on peut ajouter des antislashs additionnels. Attention, l'usage d'antislashs dans subSpec tend à provoquer des conflits avec l'emploi des antislashs dans le parser de Tcl, c'est pourquoi il est souvent plus sûr d'encadrer subSpec par des accolades s'il contient des antislashs. Si les arguments initiaux de regexp commencent avec -, ils sont alors traités comme des switchs. Les switchs suivants sont actuellement reconnus:
-all : Toutes les séquences dans “string” qui interceptent “exp” sont trouvées et la substitution est faite sur chacune de ces séquences. Sans ce switch, seule la première séquence est substituée. Si -all est indiqué, alors les séquences ''&' et \n sont traitées pour chaque substitution en utilisation l'information de l'interception adéquate.
-expanded : Autorise l'utilisation d'expressions rationnelles étendues, où le blanc et les commentaires sont ignorés. Ceci est la même chose que d'indiquer l'option embarquée (?x). (voir
meta_syntaxe)
-line : Autorise la sensibilité au retour-chariot (newline). Par défaut newline est un caractère ordinaire sans signification particulière. Avec ce switch, les expressions entre crochets '[^' et le '.' n'interceptent jamais newline, '^' intercepte une chaîne vide après newline en complément de sa fonction normale, et '$' intercepte une chaîne vide avant newline en plus de sa fonction normale. Ce switch est équivalent aux switchs -linestop et -lineanchor réunis, ou bien à l'option embarquée (?n). (voir
meta_syntaxe)
-linestop Change le comportement des expressions entre crochets '[^' et l'expression '.' de façon qu'ils s'interrompent en rencontrant des retours chariots (newline). Ceci est équivalent à l'option embarquée (?p). (voir
meta_syntaxe)
-lineanchor : Change le comportement des expression '^' et '$' (les ancres) de telle sorte qu'ils interceptent respectivement le début et la fin d'une ligne. Ceci est le même que d'indiquer l'option embarquée (?w). (voir
meta_syntaxe)
-nocase Les lettres majuscules de “string” seront converties en minuscules avant d'être comparées à “exp”; cependant les substitutions indiquées par subSpec utilisent la forme originale, avant conversion, de “string”.
-start index : Indique une position de caractère dans string, à partir de laquelle il faut commencer la recherche d'expression rationnelle. Quand on utilise ce switch, '^' n'interceptera pas le début de la ligne, et \A interceptera toujours le début de la chaîne à l'index indiqué. L'index sera contraint dans les limites effectives de la chaîne entrée.
– Marque la fin des switches. L'argument suivant cette fin sera traité comme étant l’expression “exp”, même s'il commence par -.
Cette commande renvoie le nombre de séquences qui ont été interceptées et remplacées. Voir le manuel regexp pour des précisions sur l'interprétation des expressions rationnelles.