Eggdrop & Tcl

Base de connaissances eggdrop et tcl

Outils pour utilisateurs

Outils du site


faq:re_syntax

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
faq:re_syntax [2023/10/11 09:05] – [Méta syntaxe] CrazyCatfaq:re_syntax [2023/10/19 12:52] (Version actuelle) – [Expressions rationnelles basiques] CrazyCat
Ligne 62: Ligne 62:
 Par exemple, supposez une séquence d'assemblage incluant un élément d'assemblage ch multi-caractère. Ensuite la RE [[.ch.]]*c (zéro ou plus ch's suivi par c) correspond les cinq premiers caractères de `chchcc`. Également, la RE [^c]b correspond à tout de `chb` (parce que [^c] correspond au multi-caractère ch). Par exemple, supposez une séquence d'assemblage incluant un élément d'assemblage ch multi-caractère. Ensuite la RE [[.ch.]]*c (zéro ou plus ch's suivi par c) correspond les cinq premiers caractères de `chchcc`. Également, la RE [^c]b correspond à tout de `chb` (parce que [^c] correspond au multi-caractère ch).
  
-Dans une expression crochet, un élément d'assemblage entouré de [= et =] est une classe d'équivalence, remplaçant la séquence de caractères de tout élément d'assemblage équivalent à celui-ci, incluant lui-même. (Si il n'y a pas d'autre élément d'assemblage équivalent, le traitement est le même que si les délimiteurs étaient `[.` et `.]`.) Par exemple, si o et ô sont les membres d'une classe d'équivalence, alors `[[=o=]]`, `[[=ô=]]`, et `[oô]` sont tous synonymes. Une classe d'équivalence ne peut pas être le point final d'un intervalle. (Note: Tcl implémente seulement la locale Unicode. Il ne définit aucune classes d'équivalence. Les exemples précédents sont juste des illustrations.)+Dans une expression crochet, un élément d'assemblage entouré de [= et =] est une classe d'équivalence, remplaçant la séquence de caractères de tout élément d'assemblage équivalent à celui-ci, incluant lui-même. (Si il n'y a pas d'autre élément d'assemblage équivalent, le traitement est le même que si les délimiteurs étaient `[.` et `.]`.) Par exemple, si o et ô sont les membres d'une classe d'équivalence, alors `<nowiki>[[=o=]]</nowiki>`, `<nowiki>[[=ô=]]</nowiki>`, et `[oô]` sont tous synonymes. Une classe d'équivalence ne peut pas être le point final d'un intervalle. (Note: Tcl implémente seulement la locale Unicode. Il ne définit aucune classes d'équivalence. Les exemples précédents sont juste des illustrations.)
  
 Dans une expression crochet, le nom d'une character class entourée de [: et :] équivaut à la liste de tous les caractères (pas tous les éléments d'assemblage!) appartenant à cette classe. Les classes standard de caractères sont: Dans une expression crochet, le nom d'une character class entourée de [: et :] équivaut à la liste de tous les caractères (pas tous les éléments d'assemblage!) appartenant à cette classe. Les classes standard de caractères sont:
Ligne 80: Ligne 80:
 Une locale peut en fournir d'autres. (Notez que l'implémentation Tcl courante a seulement une locale: la locale Unicode.) Une classe de caractère ne peut pas être utilisée comme point final d'un intervalle. Une locale peut en fournir d'autres. (Notez que l'implémentation Tcl courante a seulement une locale: la locale Unicode.) Une classe de caractère ne peut pas être utilisée comme point final d'un intervalle.
  
-Il y a deux cas spéciaux d'expressions crochet: les expressions crochet [[:<:]] et [[:>:]] sont des contraintes, correspondant à des chaîne vides respectivement au début et à la fin d'un mot. Un mot est défini comme une séquence de mots caractères qui est ni précédée ni suivie par des mots caractères. Un mot caractère est un caractère alnum ou un underscore (_). Ces expressions crochet spéciales sont obsolètes; les utilisateurs d'AREs devraient utiliser les contraintes échappement à la place (voir ci-dessous).+Il y a deux cas spéciaux d'expressions crochet: les expressions crochet `<nowiki>[[:<:]]</nowiki>et `<nowiki>[[:>:]]</nowiki>sont des contraintes, correspondant à des chaîne vides respectivement au début et à la fin d'un mot. Un mot est défini comme une séquence de mots caractères qui est ni précédée ni suivie par des mots caractères. Un mot caractère est un caractère alnum ou un underscore (_). Ces expressions crochet spéciales sont obsolètes; les utilisateurs d'AREs devraient utiliser les contraintes échappement à la place (voir ci-dessous).
  
 ==== Echappements ==== ==== Echappements ====
Ligne 110: Ligne 110:
  
 Les échappements Class-shorthand (AREs seulement) fournissent des raccourcis pour certaines classes de caractère communément utilisées: Les échappements Class-shorthand (AREs seulement) fournissent des raccourcis pour certaines classes de caractère communément utilisées:
-  * \d \[\[:digit:]] +  * \d <nowiki>[[:digit:]]</nowiki> 
-  * \s \[\[:space:]] +  * \s <nowiki>[[:space:]]</nowiki> 
-  * \w \[\[:alnum:]_] (notez l'underscore)+  * \w <nowiki>[[:alnum:]_]</nowiki> (notez l'underscore)
   * \D [^[:digit:]]   * \D [^[:digit:]]
   * \S [^[:space:]]   * \S [^[:space:]]
Ligne 192: Ligne 192:
 Les règles de correspondance pour les REs contenant à la fois des quantificateurs normaux et non-greedy ont changé depuis les premières versions beta-test de ce package. (Les nouvelles règles sont plus simples et plus propre, mais ne travaillent pas trop dur pour deviner les intentions réelles de l'utilisateur.) Les règles de correspondance pour les REs contenant à la fois des quantificateurs normaux et non-greedy ont changé depuis les premières versions beta-test de ce package. (Les nouvelles règles sont plus simples et plus propre, mais ne travaillent pas trop dur pour deviner les intentions réelles de l'utilisateur.)
  
-Le package original regexp de 1986 par Henry Spencer, toujours largement utilisé (ex., dans les pre-8.1 releases de Tcl), implémentait une première version des EREs d'aujourd'hui. Il y a quatre incompatibilités entre les regexp proches des EREs (`RREs') et les AREs. Dans un ordre croissant de signification:+Le package original regexp de 1986 par Henry Spencer, toujours largement utilisé (ex., dans les pre-8.1 releases de Tcl), implémentait une première version des EREs d'aujourd'hui. Il y a quatre incompatibilités entre les regexp proches des EREs (`RREs`) et les AREs. Dans un ordre croissant de signification:
  
 Dans les AREs, \ suivi d'un caractère alphanumérique est soit un échappement soit une erreur, alors que dans les RREs, c'était juste un autre moyen d'écrire l'alphanumérique. Ceci ne sera pas une problème parce que il n'y a pas de raison d'écrire une séquence pareille dans les RREs. Dans les AREs, \ suivi d'un caractère alphanumérique est soit un échappement soit une erreur, alors que dans les RREs, c'était juste un autre moyen d'écrire l'alphanumérique. Ceci ne sera pas une problème parce que il n'y a pas de raison d'écrire une séquence pareille dans les RREs.
Ligne 202: Ligne 202:
 AREs rapporte la plus longue/plus courte correspondance de la RE, plutôt que le premier trouvé dans l'ordre de recherche spécifié. Ceci peut affecter quelque RREs qui aurait été écrites dans l'hypothèse où la première correspondance serait rapportée. (La rédaction soigneuse des RREs pour optimiser l'ordre de recherche pour une comparaison rapide est obsolète (les AREs examinent toutes les correspondances possible en parallèle, et leurs performances sont largement insensible à leur complexité) mais les cas où l'ordre de recherche a été exploité pour trouver delibérément une correspondance qui n'est pas la plus longue/plus courte devront être réécrits.) AREs rapporte la plus longue/plus courte correspondance de la RE, plutôt que le premier trouvé dans l'ordre de recherche spécifié. Ceci peut affecter quelque RREs qui aurait été écrites dans l'hypothèse où la première correspondance serait rapportée. (La rédaction soigneuse des RREs pour optimiser l'ordre de recherche pour une comparaison rapide est obsolète (les AREs examinent toutes les correspondances possible en parallèle, et leurs performances sont largement insensible à leur complexité) mais les cas où l'ordre de recherche a été exploité pour trouver delibérément une correspondance qui n'est pas la plus longue/plus courte devront être réécrits.)
 ==== Expressions rationnelles basiques ==== ==== Expressions rationnelles basiques ====
-Les BREs diffèrent des EREs sous plusieurs aspects `|`, `+`, et ? sont des caractères ordinaires et il n'y a pas d'équivalent à leurs fonctionnalité. Les délimiteurs des intervalles sont `\{` et `\}`, avec les { et } interprétées seules comme des caractères ordinaires. Les parenthèses des sous expressions imbriquées sont `\(` et `\)`, avec les ( et ) interprétées seules comme des caractères ordinaires. ^ est un caractère ordinaire excepté au début de la RE ou au début d'une sous expressions entre parenthèses, $ est un caractère ordinaire excepté à la fin de la RE ou la fin d'une sous expressions entre parenthèses, et [24] est un caractère ordinaire s'il apparaît au début de la RE ou au début d'une sous-expression entre parenthèses (après un `^`possible en tête). Finalement, les back références à un seul chiffre sont disponibles, et \< et \> sont des synonymes de [[:<:]] et [[:>:]] respectivement ; aucun autre échappement ne sont disponibles+Les BREs diffèrent des EREs sous plusieurs aspects
 +  * `|`, `+`, et ? sont des caractères ordinaires et il n'y a pas d'équivalent à leurs fonctionnalité. 
 +  * Les délimiteurs des intervalles sont `\{` et `\}`, avec les <kbd>{</kbd> et <kbd>}</kbd> interprétées seules comme des caractères ordinaires. 
 +  * Les parenthèses des sous expressions imbriquées sont `\(` et `\)`, avec les <kbd>(</kbd> et <kbd>)</kbd> interprétées seules comme des caractères ordinaires. 
 +  * `^est un caractère ordinaire excepté au début de la RE ou au début d'une sous expressions entre parenthèses, `$est un caractère ordinaire excepté à la fin de la RE ou la fin d'une sous expressions entre parenthèses, et [24] est un caractère ordinaire s'il apparaît au début de la RE ou au début d'une sous-expression entre parenthèses (après un `^`possible en tête). 
 +  * Finalement, les back références à un seul chiffre sont disponibles, et `\<et `\>sont des synonymes de `<nowiki>[[:<:]]</nowiki>et `<nowiki>[[:>:]]</nowiki>respectivement; aucun autre échappement ne sont disponibles 
 +===== Voir aussi ===== 
 +[[:tcl:regexp]], [[:tcl:regsub]] {{:faq:regexp.pdf|Documentation Regexp}} 
 +{{tag>F.A.Q.}} 
faq/re_syntax.1697015151.txt.gz · Dernière modification : 2023/10/11 09:05 de CrazyCat