Eggdrop & Tcl

Base de connaissances eggdrop et tcl

Outils pour utilisateurs

Outils du site


tcl:regsub

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
tcl:regsub [2023/10/12 12:35] – créée CrazyCattcl:regsub [2023/11/13 08:33] (Version actuelle) – [Voir aussi] CrazyCat
Ligne 6: Ligne 6:
 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 [[:faq: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: 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 [[:faq: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.   * **-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 [[:faq:re_syntaxe#meta_syntaxe]]) +  * **-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 [[:faq:re_syntax#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 [[:faq:re_syntaxe#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 [[:faq:re_syntax#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 [[:faq:re_syntaxe#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 [[:faq:re_syntax#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 [[:faq:re_syntaxe#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 [[:faq:re_syntax#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".   * **-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.   * **-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.
Ligne 18: Ligne 18:
  
 ===== Voir aussi ===== ===== Voir aussi =====
-[[:tcl:regexp]], [[:faq:re_syntax]]+[[:tcl:regexp]], [[:faq:re_syntax]], {{ :faq:regexp.pdf |}}
 {{tag>tcl "Expressions rationnelles"}} {{tag>tcl "Expressions rationnelles"}}
  
tcl/regsub.1697114141.txt.gz · Dernière modification : 2023/10/12 12:35 de CrazyCat