Rechercher et remplacer du texte avec Notepad++ et quelques regex
Ajoutée dans Bureautique, Webmaster, le 11/11/09 , cet article a été consulté 196022 fois.
Notepad++ est un éditeur de texte qui gère les expressions régulières (regex) lorsqu’on souhaite rechercher et remplacer du texte. Ce gros avantage (gestion des regex) permet d’automatiser pas mal les ajouts, supressions, sélections de caractères dans un texte tout en visant juste. Voyons ensemble 8 cas concrets de rechercher et remplacer par (raccourci CTRL+H) qui vont vous permettre de retravailler vos données avant utilisation sous excel, calc, writer, word, ou éditeur html de votre blog.
Au sommaire de ce tutoriel:
- Télécharger Notepad++
- Rechercher et Remplacer par dans Notepad++
- Notepad++ et les expressions régulières
- 8 exemples pratiques de rechercher et remplacer par
- Quelques liens pour aller encore plus loin !

Télécharger Notepad++

Notepad++ est devenu mon éditeur de texte par défaut… C’est avec Notepad++ que j’ai créé toutes les pages de Jeanviet.info (HTML, CSS). Je l’utilise aussi pas mal au travail pour retravailler des données. La grande force de Notepad++ est de gérer les expressions régulières lorsqu’on souhaite rechercher et remplacer du texte (CTRL+H)

Rechercher et Remplacer par dans Notepad++

Une fois que vous aurez ouvert votre fichier texte dans Notepad++, il suffira d’appuyer simultanément sur les touches CTRL et H (ou depuis le menu Rechercher -> Remplacer…) pour ouvrir la fenêtre Rechercher et remplacer par.

En (1) on met le texte générique (avec ou sans expressions régulières) à remplacer, en (2) le texte qui viendra en remplacement. En (3) on coche la case Expression régulière ou Mode étendu si nécessaire…. Et on appuie sur Remplacer tout ! si le résultat escompté n’est pas le bon, vous pouvez toujours revenir en arrière avec le raccourci clavier CTRL + Z.

Notepad++ et les expressions régulières

- Qu’est-ce qu’une expression régulière en informatique ?
- Les pincipales regex à utiliser avec notepad++
- Conserver le texte d’une regex sous notepad++

Les expressions régulières (regex) en informatique sont des règles qui permettent d’isoler dans une zone de texte certains types de caractères (lettre, numéro), ensemble de caractères (mots de 3 lettres, nombre à 4 chiffres, mots commencant par…) , position dans le texte (début, fin, saut de ligne).

Lorsqu’on a isolé ces bouts de textes aux prorpiétés choisies, on peut les supprimer, effacer tout ce qui se trouve autour, ou leur ajouter du texte. Les regex permettent d’automatiser le traiement de gros fichiers de données… Si vous gérez des fichiers textes, excel de plus de 100 lignes, les regex vont vous faire gagner du temps !

Comme ceci est très abstrait, voici quelques exemples de ce que peuvent faire les regex :
- Trouver dans un texte toutes les phrases qui commencent par "il était une foie" et remplacer le texte par "Il était une fois" (^il était une foie)
- Chaque fois qu’un texte se termine par un point, on peut forcer un retour à la ligne (.$)
- Trouver dans un texte tous les mots qui contiennent 2 o consécutifs (.*oo.*)

Les Principales Regex à utiliser avec notepad

| regex | effet | exemple |
|---|---|---|
| . | pour remplacer un caractère | ex: "jeanvie." va trouver "jeanviet" et "jeanvier" |
| […] | pour indiquer un ensemble de caractère | ex: "[éèêë]" pour trouver un accent |
| [^…] | pour indiquer des caractères complémentaires | ex: "[^0-9]" pour trouver tout ce qui est différent d’un chiffre |
| ^ | pour indiquer que le caractère doit être au début d’une ligne | ex: "^jeanviet" pour trouver toutes les lignes qui commencent par jeanviet |
| $ | pour indiquer que le caractère doit être en fin de ligne | ex: "jeanviet$" pour trouver toutes les lignes qui se terminent par jeanviet |
| .* | n’importe quel nombre de caractère entre deux caractères | ex:"j.*t" trouvera jeanviet, jet, jouet |


Conserver le texte d’une regex

Pour expliquer la règle qui permet de conserver le texte d’une regex, je vais partir d’un exemple… Prenons ces 4 lignes de texte :
- mois : jeanviet 2010
- mois : février 2010
- mois : mars 2010
- mois : avril 2010
Je ne veux garder que le mois, c’est à dire jeanviet, février, mars, avril. On va donc supprimer tout ce qui se trouve avant les " : " et l’année " 2010" et conserver le mois entre les deux.
Voici la manip sous notepad :

La première regex (.*) prend en compte tout ce qui se trouve avant " : ", la deuxième (.*) c’est le texte entre " : " et 2010. L’utilisation des parenthèses () va nous permetre de rappeler la regex dans le "remplacer par". Comme je veux garder la 2ème regex, je mets "\2" dans remplacer par, ce qui me donne en appuyant sur remplacer tout :
- jeanviet
- février
- mars
- avril
Si j’avais mis \1 à la place, j’aurais eu la 1ère regex, soit :
- mois
- mois
- mois
- mois

8 exemples pratiques de rechercher et remplacer par

- Enlever les espaces en fin de mot
- Mettre tout en minuscule ou tout en majuscule
- Supprimer des lignes vides
- Filtrer ses données : copier ou supprimer les lignes marquées
- Transformer une colonne d’adresse emails en 1 ligne avec séparateurs (virgules)
- Mettre des données en colonnes : saut de ligne à chaque séparateur
- Ajouter du code HTML
- Supprimer du code HTML


1. Enlever les espaces en fin de mots

En récupérant des données, il m’arrive fréquemment d’avoir à faire face à ce problème : l’export a ajouté des espaces en fin de cellule… Comment effacer ces espaces juste en fin de cellule et pas entre deux mots ?
Copiez-collez vos données dans notepad++
- mois de jeanviet
- mois de février
- mois de mars
- mois d’avril
CTRL + H, puis ajouter dans rechercher " $" (tout ce qui se termine par espace : espace suivi de $) et rien dans Remplacer par.

Remplacer tout, et le tour est joué !
- mois de jeanviet
- mois de février
- mois de mars
- mois d’avril
NB : on peut aussi faire Edition -> enlever les espaces/tabulations à la fin de la ligne (mais ça claque moins
)

2. Mettre tout en minuscule / majuscule

Notepad++ a créé des fonctions magiques automatiques pour résoudre vos problèmes de majuscules / minuscules. Toutes ces fonctions se trouvent sous TextFX -> TextFX Characters dans le menu horizontal de Notepad++. Assurez-vous que tout votre texte soit sélectionné au préalable (CTRL + A)

UPPER CASE met tout en majuscule
- MOIS DE JEANVIET
- MOIS DE FÉVRIER
- MOIS DE MARS
- MOIS D’AVRIL
lower case met tout en majuscule
- mois de jeanviet
- mois de février
- mois de mars
- mois d’avril
Sentence case rajoute une majuscule en début de phrase (la phrase doit se terminer par un point)
- Mois de jeanviet.
- Mois de février.
- Mois de mars.
- Mois d’avril.

RDV ici : TextFX -> TextFX Edit et appuyez sur Delete Blank Lines (supprimer les lignes vides)


Si je veux exporter que des lignes qui parlent de jeanviet, on va procéder en 2 temps marquer les lignes qui parlent de jeanviet (1) puis les copier-coller (2)
Pour marquer les lignes, faites CTRL + F, ajoutez le texte jeanviet (1), cochez marquer les lignes (2), et appuyez sur rechercher tout (3).

Toutes les lignes contenant jeanviet sont alors marquées

Dans le menu horizontal recherche, vous pouvez alors effectuer différentes actions sur les lignes marquées :

Les Copier, pour les coller ailleurs… je n’aurai que du jeanviet

Les Supprimer, adieu jeanviet !


5. Transformer une colonne d’adresse emails en 1 ligne avec séparateurs (virgules)

Vous avez récupéré ces adresses mail via un tableur excel ou votre outil de blogging, elles sont ordonnées en colonne :
- julien@jeanviet.info
- jules@jeanviet.info
- jeremy@jeanviet.info
- jordan@jeanviet.info
- jean@jeanviet.info
- jonathan@jeanviet.info
- jason@jeanviet.info
- jimmy@jeanviet.info
- joris@jeanviet.info
- jean-baptiste@jeanviet.info
- johan@jeanviet.info
Si vous voulez leur envoyer tous un mail, il faut les séparer par des virgules et les mettre sur la même ligne, rien de plus simple avec notepad++
On fait CTRL + H, on coche la case Mode étendu (mode regex qui comprends les caractères spéciaux) dans recherche je mets \r\n (\r c’est la fin de ligne - équivalent de notre $ en mode expression régulière - \n c’est le retour à la ligne), dans remplacer par je mets une virgule ","

On peut ensuite appuyez sur remplacer tout

Miracle ! ça fonctionne, je n’ai plus qu’à copier-coller cette ligne dans la zone destinataire de ma messagerie préférée.

6. Mettre des données en colonne (séparateur devient saut de ligne)

La réciproque de ce qu’on vient de voir avant est tout à fait possible à réaliser.

Il suffit de mettre la virgule dans recherche et le saut de ligne (\r\n) dans remplacer par… C’est aussi simple que ça


Ca devient un peu technique là… Pour que cela soit profitable au plus grand nombre, je vous propose de voir comment on peut tranformer des images hébérgées sur le web en miniatures cliquables…. Ci-dessous les urls qui chargent les photos des 12 membres les plus actifs de jeanviet.info :
- http://jeanviet.info/about/jeanviet.jpg
- http://jeanviet.info/about/cedric.jpg
- http://jeanviet.info/about/emilie.jpg
- http://jeanviet.info/about/daria.jpg
- http://jeanviet.info/about/tdj.jpg
- http://jeanviet.info/about/ptitfred.jpg
- http://jeanviet.info/about/justin.jpg
- http://jeanviet.info/about/furious.jpg
- http://jeanviet.info/about/sonja.jpg
- http://jeanviet.info/about/bigfoot.jpg
- http://jeanviet.info/about/cc69.jpg
- http://jeanviet.info/about/ziharmo.jpg
On va les copier-coller dans notepad++

Chaque image fait 83×97 en taille, on va en faire des miniatures cliquables de 40×47 (on garde la proportion, on diminue la taille), le lien ouvrira une nouvelle fenêtre.
On doit donc transformer ça :
http://jeanviet.info/about/jeanviet.jpg
en ça :
<a href="http://jeanviet.info/about/jeanviet.jpg" target="_blank"><img src="http://jeanviet.info/about/jeanviet.jpg" hspace="3px" width="40px"></a>
visuellement ça donne ça


On se lance ce n’est pas très compliqué ;- ) surtout que je vous ai donné le code html qui va bien avant

Dans rechercher on va ajouter (.*) et dans remplacer par, vous reprenez mon code en bleu, ce qui est en vert devient \1

Appuyez ensuite sur remplacer tout… le code est prêt, plus qu’à le copier-coller en mode html sur votre blog comme ceci :


C’est quand même plus sympa qu’une liste brute d’urls !


Si on veut revenir à l’affichage brut d’urls à partir du dernier code html généré, voici ce qu’il faut ajouter dans les champs rechercher et remplacer en mode expression régulière.

On veut récupérer la 2ème expression regulière dans le href=" ", soit \2 dans remplacer par… Et on retrouve ainsi notre liste d’urls :


Quelques liens pour aller encore plus loin

Avec les regex, les gains de productivité sont infinis ! il y a des regex dont je n’ai pas parlé… des usages plus avancées à explorer, si vous souhaitez aller plus loin, voici quelques liens utiles :
- Tuto vidéo pour connaître les sites qui pointent le plus souvent chez vous (en utilisant notepad++, des regex, et calc)
- Expreg : si vous voulez vous lancer dans le développement php
- D’autres exemples de regex pour Notepad++ (en anglais)
Autrement, vous pouvez aussi utiliser le forum logiciel pour poser toutes vos questions regex / notepad++
copie-colle dans ton blog:
Dans le même genre
- Wikipedia Offline - Installer Wikipedia.fr sur iPhone ou iPod touch
- Créer un DVD multizones avec DVD Shrink
- SMS GRATUIT - envoyer et recevoir des textos gratuitement en France
- Création et impression de carte de visite pro en moins de 5 minutes
- Horaire Bus - RATP - horaires de ligne de bus en temps réel sur son bureau














je voudrais tellement le montrer a mon pere et a ma mere svp svp svp svp
salut je veut tellement le montrer a mon pere et a ma mere jaimerais tellement ca svp
juste un merci et un grand bravo.
Merci beaucoup pour ces infos.
Pour ma part en format ANSI j’ai un fichier contenant beaucoup de caractère nul écrit NUL (en fond noir) comme on peut le voir sur cette image “http://image-heberg.fr.cr/files/1258915036313330.jpg” connaisez vous un moyen quel qu’il soit pour remplacer ou ne pas afficher ce caractère?
Merci d’avance
Ceci m’a été très utile ! Merci !
Bonjour,
Je souhaite trouver dans un dossier tous les fichiers contenant 2 mots spécifiques.
Est ce qu’il y a une solution avec notepad++ et “Rechercher dans les fichiers” ?
Merci pour votre réponse.
Merci, ca ma ete bien utile.
Argh!
Contrairement à ce qui est écrit, je n’arrive pas à utiliser le mode étendu avec des expressions régulières.
Je voudrais supprimer toutes les occurrences de “\n 0…..\n” de mon fichier, et je ne vois pas comment faire. Le mode expressions régulières ne gère pas les retours de lignes “\n” et le mode étendu ne gère pas les “…” comme une expression régulière.
Blaze!
Bonjour,
Merci pour cet article qui en deux lecture m’a permis de faire l’expression que je cherchais à faire depuis un moment