Le manuel de KSirc
Précédent | Chapitre 3. Les Filtres | Suivant

# 3.2. Exemples :

1. Vous voulez convertir tous les "boren" depuis "boren" jusqu'à "BoreN"

        Correspondance : .*
        Depuis : boren
        Jusqu'à : BoreN

   Sans aucun doute, il y a une correspondance, ensuite modifiez "boren" en "BoreN".

2. Vous voulez tout faire correspondre avec "boren" et l'envoyer à la fenêtre appelée "boren"

        Correspondance : boren
        Depuis : ^
        To: ˜boren˜

   Cherche "boren", s'il le trouve, remplace le début de la chaîne de caractères (^) par ˜boren˜.

3. Bien que l'exemple n°2 fonctionne, si la chaîne de caractères contient déjà `˜somewindow˜`, vous aurez maintenant deux `˜boren˜˜somewindow˜...`. Donc vous pouvez faire plutôt :

        Correspondance : boren
        Depuis :  ^(?:˜\S+˜)
        Jusqu'à : ˜boren˜

   D'accord, la ligne "depuis" est un tout petit peu plus compliquée. Elle signifie qu'il n'y a pas de correspondance ou qu'il y a une copie de `˜\S+˜`, qui est le premier tilde, une espace ou pas d'espace du tout, et ensuite un autre tilde. Les puristes feront `(*:˜\S+˜)` qui signifie correspondance 0 ou plusieurs instructions de canal, au cas où les règles précédentes ne fonctionneraient plus.

4. Les messages d'arrêt du serveur sont alors longs, laids, ennuyeux, etc. Un message typique sur réseau de dialogue ressemble à :

        *** Notice -- Received KILL message for BOBO!ANDY@line82-basel.datacomm.ch
        from NickServ Path: empire.ny.us.dal.net[209.51.168.14]!trapdoor.ca.us.dal
        .net[206.86.127.252]!caris.ca.us.dal.net[208.1.222.221]!services.dal.net[2
        008.1.222.222]!services.dal.net (NickServ Enforcement)

   Lorsque vous êtes `+s`, vous avez des tas de messages, et vous ne voulez pas en voir partout sur votre écran. Je vais créer 3 règles pour les traiter morceau par morceau. Vous pourrez le faire avec moins de règles, mais cela vous montrera la structure de base d'une règle, avec des étapes faciles, et comment utiliser les multiples règles pour analyser un message. La première étape consiste à supprimer le Path: (chemin) du message, et ce sera l'exemple 4.

        Correspondance : ^\*\*\*.* KILL message for .* (message d'ARRET pour .*)
        Depuis : Path: \S+
        Jusqu'à: .

   La correspondance cherche le message débutant avec `***`, les * doivent être mentionnées avec \ puisqu'elles signifient par elles-mêmes 0 ou supérieur au caractère précédent. Le `.*` signifie correspondance quelconque jusqu'à ce que vous trouviez `KILL message for` . Cela nous permet d'éviter de taper `-- Received...` etc. La fin `.*` indique une correspondance quelconque jusqu'à la fin de la ligne. (inutile je pense)

   La ligne "Depuis" indique de remplacer l'espace "Path: espace" et tout caractère autre qu'une espace par "Jusqu'à". "Jusqu'à" est un `"."`, par conséquent le chemin entier se transforme en un point uniquement. ().

   Le message ressemble maintenant à :

        *** Notice -- Received KILL message for BOBO!ANDY@line82-basel.datacomm.ch
        from NickServ. (NickServ Enforcement)

   Vous remarquez le nouveau `"."` après `NickServ`?

5. D'accord, le message est beaucoup plus net, mais les messages d'arrêt depuis le serveur de pseudonymes ne sont pas vraiment importants, donc laissons-les dans la fenêtre `!supprimer`.

        Correspondance : ^\*\*\*.*KILL message .*\(NickServ Enforcement\)
        Depuis: ^(?:˜\S+˜)
        Jusqu'à :  ˜!discard˜

   La règle de correspondance recherche le message d'ARRET et s'assure qu'il vient de NickServ (serveur de pseudonymes). Vous remarquez les `\(` et `\)`, les deux `()` utilisés dans les expressions rationnelles, par conséquent nous devons les mentionner. Ceci est très similaire à l'exemple 3.

6. Nous avons maintenant éliminé tous les messages d'arrêt du serveur de pseudonymes, mais le message est encore assez difficile à lire d'un simple coup d'oeil. Remettons-le donc en ordre comme ceci :

        *** [KILL] <KILLER> arrêté <KILLED> (motif)
        Correspondance: \*\*\*.*message d'ARRET
        Depuis: \*\*\*.*for (.*?) from (.*?)\. \((.*?)\).*
        Jusqu'à:  *** [KILL] $$2 killed $$1 ($$3)

   D'accord, la correspondance cherche le message d'ARRET `***<something>`. Nous ne pouvons utiliser `^` puisque nous venons d'ajouter `˜<fenêtre>˜`.

   La ligne "Depuis" devient un peu plus intéressante. L'expression `"for (.*?) "` cherche le mot pour la suite du texte. `.*?` correspond à zéro ou plusieurs occurences de n'importe quel caractère, excepté une nouvelle ligne, mais n'est pas absorbant. Arrêtons lorsque la première condition de terminaison est trouvée, mais non la dernière. En d'autres termes, il cherche une correspondance quelconque jusqu'à ce qu'il trouve une espace. La zone entourée de `()` indique de sauvegarder le contenu. Chaque () sauvegarde les données correspondantes dans `$#` où `#` commence à 1 pour la première sous-chaîne de caractères, etc. Dans ce cas, `$1` obtient l'information-utilisateur/pseudonyme de la personne "tuée". `$2` est ensuite complétée avec le nom du "tueur". Entre les `()`, nous avons le motif de l'arrêt. Ici les `(` et `\(` prêtent un peu à confusion. Rappelez-vous, `\(` correspond au caractère réel `'('`.

7. Comment colorer votre vie. D'accord, vous voulez ajouter de la couleur à ksirc. Voyez la section section Couleurs pour une information sur la couleur, mais il y a une règle de filtre pour mettre en surbrillance le pseudonyme entre `<NICK>` sur chaque ligne :

        Correspondance: ^(?:˜\S+˜)<\S+>
        Depuis: <(\S+)>
        Jusqu'à: <˜4$$1˜c>

   Prend le pseudonyme et ajoute la couleur n°4 entre les deux `<> ˜c` éclaircit la couleur

Précédent | Sommaire | Suivant
Les Filtres | Niveau supérieur | Touches