mercredi 26 décembre 2012

Les rechercher/remplacer complexes

Tout éditeur de texte a la fonction rechercher/remplacer, aussi essentielle que le copier/coller. En utilisant conjointement cette fonction avec les expressions régulières, on peut aller très loin dans l'édition de texte et ainsi économiser de longues séances de rechercher/remplacer à la chaîne.
J'utilise Notepad++ mais tout éditeur un peu évolué permet les manipulations suivantes.

Par exemple, dans le texte suivant :
"toto, tata, titi, toto1, t1ata, titi1, toto2, t2ata, titi2, toto3, t3ata, titi3"
Je veux remplacer toutes les occurrences du mot tata par tutu tout en conservant le numéro, la difficulté étant que le chiffe est au milieu du mot.
Le rechercher/remplacer devient alors : "Je veux remplacer toutes les occurrences des mots qui contiennent les lettres t.a.t.a. avec un chiffre en deuxième position par t.u.t.u. et mettre le chiffre à la fin".
Cela paraît tout simple dans ce cas là, mais imaginez ce que cela peut donner avec des fichiers de plusieurs milliers de lignes.

La solution est, relativement, simple :

Rechercher/remplacer sur Notepad++


Il faut noter que, dans la fenêtre d'option de rechercher/remplacer, on a choisi comme mode de recherche "Expression régulière" que l'expression régulière proprement dite est t(\d?)ata remplacée par tutu$1. Tout cela pourrait être traduit par : "retourne le chiffre, si il y en a un, en deuxième position de la séquence de caractère tata et met le dans la variable $1 que je réutiliserais en dernière position de la séquence de lettre tutu et ce, pour chaque occurrence qui réponds à ces conditions dans le texte"

des utilitaires comme Expresso sont extrêmement précieux pour comprendre ou mettre au point des expressions régulières qui, au départ, peuvent paraître très compliquées mais qui, une fois, que l'on connait le principe, sont extrêmement puissantes pour tout travail sur des chaînes de caractères ou de gros fichiers textes.
Logiciel Expresso


Si vous souhaitez plus de détail ou des exemples un peu plus parlant, je vous conseille cet article très complet et intéressant  Rechercher et remplacer du texte avec Notepad++ et quelques regex 

Aucun commentaire: