Changes between Initial Version and Version 1 of fr:Documentation/Pattern matching


Ignore:
Timestamp:
Oct 16, 2013, 9:22:03 PM (14 months ago)
Author:
AmigaPhil
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • fr:Documentation/Pattern matching

    v1 v1  
     1[[TranslatedPages]]
     2
     3= MOTIFS ET JOKERS AMIGADOS =
     4
     5L'utilisation des jokers dans un motifs vous permet d'effectuer des
     6recherches très poussées. voici les caractères jokers utilisés :
     7
     8   `?`   Correspond à un seul caractère (quel qu'il soit)
     9       ainsi  Y?M correspond à YAM, YUM, Y@M etc.
     10
     11   `#`   Correspond de zéro à plus de l'occurrences du caractère qui le suit
     12       ainsi Y#AM correspond à YM, YAM, YAAM, YAAAM etc.
     13
     14   `#?`  Correspond à tout (rien y compris !)
     15       ainsi #?YAM#? correspond à toutes les chaînes avec « YAM » dedans.
     16
     17   `%`   Correspond à une chaîne vide. Pas vraiment utile par lui même, mais vous pourrez l'utiliser pour trouver les messages sans sujet.
     18
     19   `()`  Les parenthèses sont utiliser pour grouper des caractères et des expressions ainsi que pour donner un ordre dans l'évaluation de l'expression.
     20       Ainsi #(Re!:)YAM correspond à YAM, Re:YAM, Re:Re:YAM ...
     21
     22   `[]`  Les crochets sont utilisés pour indiquer une liste de caractères possible,
     23       ainsi [YAM] correspond à n'importe laquelle de ces lettres Y, A or M mais ''pas'' YAM.
     24
     25   `-`   Indique une « fourchette », ainsi ![0-9] correspond à n'importe quel chiffre et #![0-9] correspond à n'importe quel nombre.
     26
     27   `~`   Signifie PAS, fait référence à l'expression qui le suit,
     28       ainsi ~Re: correspond à ''toute'' chaîne qui ne commence pas par « Re: ».
     29
     30   `|`   Signifie OU, fait référence aux expressions de part et d'autre.
     31       Vous ''devez'' mettre l'expression entière entre parenthèses :
     32       ex. (#?YAM#?|#?MUI#?) se rapporte aux chaînes qui contiennent soit « YAM » soit « MUI ».
     33
     34ATTENTION ! Ce n'est pas si simple que ça en a l'air !
     35Par exemple, essayez de construire un filtre qui trouverait YAM et YAM2
     36mais qui ignorerait YAM1. Essayez celui-ci : #?YAM(~1)
     37
     38Qu'est-ce que ça veut dire ?\\
     39Lire la nouvelle chaîne à partir de la gauche, et chercher la séquence YAM.
     40Si elle est trouvée, recherche la partie qui suit : est-ce égale à « 1 » ?
     41Si non, vous avez la correspondance. l'ennuie est que « 1.3.5 » n'est pas
     42égale à « 1 » (c'est trop long) donc YAM1.3.5 sera inclus alors que vous ne
     43le souhaitiez pas. La solution est de faire que la partie qui suit « YAM »
     44ne commence pas par « 1 », donc essayons ceci : #?YAM(~1#?)
     45
     46On se débarrasse bien de « 1.3.5 », mais il reste un problème. Des fois
     47les gens insèrent un espace entre YAM et son numéro de version. Donc les
     48références « YAM 1 » sont toujours prise en compte. Vous devez alors
     49préciser qu'il peut y avoir un nombre quelconque d'espaces entre le nom et
     50le numéro de version comme ceci : #?YAM# (~1#?)
     51
     52Autre cas - Supposons que nous voulons trouver toutes les chaînes qui
     53contiennent YAM, mais qui ne commence pas par « Re: ». Essayons (~Re!:)YAM#?
     54
     55Ceci commence par comparer le début de la chaîne avec « Re: ». Si nous
     56obtenons une correspondance, cette chaîne est annulée. Si non, on recherche
     57dans le reste de la chaîne « YAM ». Que ce passe t-il si la chaîne ''commence''
     58par « YAM » ? La lettre n'est pas « R » donc la condition n'est pas
     59satisfaite. Mais nous venons de tester la lettre Y, donc YAM ne sera pas
     60trouvé ! Pour mettre tout ça au clair, il nous faut indiquer que la partie à
     61gauche de YAM peut-être une chaîne vide (ce pourquoi elle est faite !),
     62comme ceci : (~Re!:|%)YAM#?
     63
     64Question pour les pros de l'ordinateur :
     65à quoi correspond ~((~#?YAM#?)|(~#?MUI#?)) ?  :-)