Les expressions régulières (regex) sur Notepad++ sont très pratiques pour standardiser un fichier de données avant import par exemple, récupérer des données, corriger des chaînes particulières, avec des conditions, etc...

Ici quelques astuces propres à mon usage personnel.


Marquer des lignes

Si vous recherchez une chaîne particulières dans un fichier - exemple : mailto: - et que vous souhaitiez marquer les lignes concernées, en les faisant débuter par un arobas (@) :

Remplacer :

^(.*)(mailto:)(.*)$

Par :

@$1$2$3

Chercher des ensembles de lignes

Pour chercher des lignes particulières suivies d'autres lignes particulières.

Ici par exemple, chercher les lignes qui commencent par un tiret ("-") et qui sont suivies par une ligne commençant par un espace :

^[-](.*)$\r\n^[ ]

Ou inversement, les lignes commençant par un tiret puis suivies par une ligne vide :

^[-](.*)$\r\n^[ \t]*$\r?\n

Supprimer des portions inutiles

Exemple dans le cas de liens mailto. Rappelons la forme d'un lien mailto : 

<a href="mailto:Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.">Text</a>

Si vous supprimez tout ce qui vient avant mailto: et tout ce qui vient après le dernier " restant, alors vous ne récupérerez plus que les emails.

Supprimez tout ce qui vient avant :

^(.*)(mailto:)

Supprimez tout ce qui vient après :

(")(.*)$

 

Pour cette fois supprimer toutes les lignes qui ne contiennent pas la chaîne http, supprimez ces lignes :

^(?!http).*

Correction de fichiers corrompus par des sauts de lignes intempestifs

Dans le cas d'imports de fichiers text, csv, etc... vers une base de données SQL, les sauts de lignes non-souhaités (souvent issus de champs Notes, des zones de texte, tags <BR>, tabulations ou autre HTML mal interprêtés...) sont très pénibles. Ils peuvent faire échouer les imports ou vous faire perdre du temps. Explorer son fichier sous Notepad est parfois nécessaire.

Nous allons commencer par quelques tests bien utiles pour prendre connaissance d'un fichier, mais dont nous verrons qu'ils sont insuffisants. Nous finirons par une Correction complète en 4 temps .

Chercher les lignes qui ne commencent pas avec tel caractère

Si vos débuts de ligne sont censés commencer par des guillemets double par exemple (champs entourés par ", ce système d'enclosure SQL est très répandu, c'est pourquoi nous l'utilisons ici).

En Mode de recherche Expressions régulières, vous pouvez tester les lignes ne commençant pas avec ces guillemets double ainsi :

^[^"]

Le 1er chapeau signifie en début de ligne. Les crochets délimitent l'ensemble à tester. Le 2nd chapeau, entre crochets, signifie qui n'est pas (une fois inclu dans l'ensemble, dans les crochets). Les guillemets double sont le caractère à tester (à remplacer en fonction de vos besoins).

L'expression régulière ci-dessus vous renverra donc aux lignes ne commençant pas avec des guillemets double, mais en vous sélectionnant aussi le 1er caractère de la ligne. Atention donc aux remplacements sous cette forme.

Une autre méthode est de chercher les sauts de ligne (au lieu du début de ligne), de cette façon : 

\n[^"]

L'expression \n signifiant un saut de ligne. Ce qui vous renverra toujours aux lignes ne commençant pas avec des guillemets double, mais toujours en vous sélectionnant 1er caractère de la ligne. Ce n'est donc pas non plus idéal pour des remplacements précis (sauf pour des chaînes de texte redondantes en défaut, en les faisant une-par-une si elles sont peu nombreuses, ou si on les connaît à l'avance).

Chercher les lignes commençant avec un caractère alphanumérique

Dans ce cas précis, une méthode inverse donnerait le même résultat, en recherchant cette fois les lignes commençant avec un caractère alphanumérique (lettres, chiffres et underscore, grâce à l'expression \w). Et donc ne commençant pas par un guillemet double :

\n[\w]

Ou

^[\w]

 Mais là encore ce n'est pas idéal pour des corrections précises et sans perte, puisque un remplacement élimine toujours le 1er caractère des lignes corrompues.

Correction complète en 4 temps

Comment donc gérer efficacement ces sauts de lignes ?

Dans notre exemple, nous souhaitons traiter les lignes ne commençant pas avec des guillemets double au sein d'un fichier où les lignes saines commencent avec des guillemets double.

Nous allons procéder en 4 temps :

1) Remplacement de tous les sauts de ligne correctement enclosés et du 1er guillemet double par une chaîne complexe, volontairement choisie pour être totalement absente du fichier :

Rechercher \r\n^["]

Remplacer par xxxxxyzf123456789fzyxxxxx"

Le nombre de lignes de votre fichier va nettement diminuer, et vous allez visualiser sans peine les éventuelles erreurs.

2) Remplacement de tous les sauts de lignes restants (les corrompus) par un espace :

Rechercher \r\n

Remplacer par 

L'espace est nécessaire afin de ne pas concaténer les chaînes illogiquement séparées par des sauts de lignes.

Là encore votre fichier maigrit à vue d'œil. Si vous regardez bien les curseurs de Notepad, vous verrez aussi que sa longueur a augmenté.

3) Remplacement de tous les sauts de lignes encore restants (je ne sais expliquer ceux-ci, sans doute une question d'encodage) par un espace également :

Rechercher \n

Remplacer par 

Vous n'obtenez alors plus qu'une seule loooonnngue ligne. C'était l'objectif.

4) Parfait, vous n'avez plus qu'à remplacer dans cette ligne unique notre fameuse chaine complexe par des sauts de lignes suivis d'un guillemet.

Tous les sauts de ligne ayant été supprimés, vous serez ainsi sûr de ne rétablir que les sauts de lignes nécessaires au début de chaque enregistrement :

Rechercher xxxxxyzf123456789fzyxxxxx"

Remplacer par \r\n"

La ligne à rallonge reprend la forme d'un fichier standard, mais sans les sauts de lignes non-voulus, bon pour import !


Cumuler des fichiers dans un seul fichier

Cette astuce ne concerne pas directement Notepad, mais elle a toute sa place ici.

Dans le cas où vous avez récupéré une multitude de petites fichiers que vous souhaitez concaténer dans un seul fichier :

1) Assemblez tous ces fichier dans un seul répertoire.

2) Dans ce répertoire, créez un fichier cumul.txt et mettez-y le code suivant :

copy *.txt importfichier.txt

3) Renommez votre fichier cumul.txt en cumul.bat, puis double-cliquez dessus :

Un fichier nommé importfichier.txt va se créer, contenant les données des petites fichiers.

Récupérer ses fichiers de configurations FTP/SFTP

Bien pratique quand vous utilisez le plugin NPP et que vous souhaitez traverser les mises à jour sans trop de problèmes.

Emplacement du fichier contenant les confs :

AppData \ Roaming \ Notepad++ \ plugins \ config \ NppFTP \ NppFTP.xml