.. regexp + N++

intro

introduction aux RE "regular expression"

Les principales classes.

Nom

Équivalent

Description

\d

[0-9]

Un chiffre

\D

[^0-9]

Caractère qui n'est pas un chiffre

\w

[a-zA-Z0-9_]

Caractère alpha-numérique, ou underscore

\W

[^a-zA-Z0-9_]

Caractère non alpha-numérique (autre que underscore)

\s

Caractère "blanc" (espace, saut de ligne, tabulation, etc.)

\S

Caractère "non-blanc"

\b

Début / fin de mot (début de chaîne, espace, etc.)

\B

Ni début ni fin de mot

Nom

Équivalent

Description

?

{0,1}

0 ou 1 fois

*

{0,}

N'importe quel nombre de fois

+

{1,}

Au moins une fois

more


 .at     matches any three-character string ending with "at",  "hat", "cat", and "bat"
 [hc]at  matches "hat" and "cat".
 [^b]at  matches all strings matched by .at except "bat".
 [^hc]at matches all strings matched by .at other than "hat" and "cat".
 ^[hc]at matches "hat" and "cat", but only at the beginning of the string or line.
 [hc]at$ matches "hat" and "cat", but only at the end of the string or line.
 \[.\]   matches any single character surrounded by "[" and "]" since the brackets are escaped, eg: "[a]" and "[b]".
 s.*     matches s followed by zero or more characters,  eg: "s" and "saw" and "seed".

 [hc]?at matches "at", "hat", and "cat".
 [hc]*at matches "at", "hat", "cat", "hhat", "chat", "hcat", "cchchat", and so on.
 [hc]+at matches "hat", "cat", "hhat", "chat", "hcat", "cchchat", and so on, but not "at".
 cat|dog matches "cat" or "dog".



trouver une ligne "img" sans "alt"
<img src="eg.gif">
^.*img((?!alt).)*$ trouver une adresse email valide ^([A-Z|a-z|0-9](\.|_){0,1})+[A-Z|a-z|0-9]\@([A-Z|a-z|0-9])+((\.){0,1}[A-Z|a-z|0-9]){2}\.[a-z]{2,3}$ src: https://regexr.com/3bcrb

notepad++

l'éditeur N++ permet du recherche/remplace de base, mais aussi avec les RE
                        Ctrl+F    Ctrl+H 

Actuellement 4 onglets:
(1) "Rechercher"     
(2) "Remplacer"      
(3) "Rechercher dans le fic d'un dossier"  
(4) "Marquer"      

---------------------------------------------------------------------------- (1) Rechercher | Remplacer | Rechercher dans les fic d'un dossier | Marquer | --- ------------------------------------------------------------- Recherche: [ABC____________________v] [ Suivant ] [x] = 2B [ Compter ] [ Recherche tous doc ] [ Recherche doc act ] [ Annuler ] [ ] Recherche AR [ ] Mot entier [x] Respect casse [x] Boucler -- "Mode de recherche" ------------ ( ) Mode normal ( ) Mode étendu (\n, \r, \t ...) (*) expression régulière Alt+E [ ] . match NL Alt+. [ ] . comprend ligne r (version FR ?)
voir stackoverflow.com
------------------------------------------------------------------------------ Rechercher| (2) Remplacer | Rechercher dans les fic d'un dossier | Marquer | ----------- ------------------------------------------------- Recherche: [ABC________________v] [ Suivant ] Remplacer par: [DEF________________v] [ Remplacer ] [x] dans select [ Remplacer tout ] [ Remplacer tous doc ] [ Annuler ] [x] Respect casse [x] Boucler -- "Mode de recherche" ------------ (*) Mode normal ( ) Mode étendu (\n, \r, \t ...) ( ) expression régulière
----------------------------------------------------------------------------- Rechercher| Remplacer | (3)Rechercher dans les fic d'un dossier | Marquer | -------------------------- ---------- Recherche: [ABC___________________v] [ Trouver tout ] Remplacer par: [DEF___________________v] [ Remplacer tout ] Filtres: [*.htm_________________v] [ Annuler ] Dossier: [D:\data\mon_rep___________v] [..] [ ] suivre doc act [x] sous-dossier [x] Respect casse [ ] dossiers cachés -- "Mode de recherche" ------------ (*) Mode normal ( ) Mode étendu (\n, \r, \t ...) ( ) expression régulière
------------------------------------------------------------------------------ Rechercher| Remplacer | Rechercher dans les fic d'un dossier | (4) Marquer | --------------------------------------------------------------- Recherche: [____________________] [ Recherche tout ] [ Purger ] [ Annuler ] [ ] Marquer les lignes [ ] Purger à chaque fois [x] Respect casse [x] Boucler -- "Mode de recherche" ------------ (*) Mode normal ( ) Mode étendu (\n, \r, \t ...) ( ) expression régulière
---- pour "trouver" (puis supprimer) sur plusieurs lignes ex: tout entre "<div" et "</div>"
<div id="mon_div"> bla bla bla bla bla </div>
Recherche:
<div[^>]+>(.*?)</div>
(*) expression régulière [x] . match NL
----- Il est possible d'utiliser un module intégré... depuis "Edition / Ligne" / Enlever les lignes vides Déplacer la ligne vers le haut Ctrl+Shift+Up Déplacer la ligne vers le bas Ctrl+Shift+Down ... ----- Sinon, installer 2 plugins bien sympa TextFX: fenêtre Find/Replace de TextFX faite pour la manipulation des RE... ou un tri .... RegEx Helper: ce plugin permet de visualiser directement tous les résultats d'un motif RE. --- comparer L'autre truc cool c'est "Compléments/Compare/Compare" Ctrl+Alt+C pour comparer 2 fichiers "presque identique" PS: sous unix, un utilitaire équivalent: vimdiff 02/2019 - version: N++ v7.5.9 - N++ v7.5.6 home

even odd / pair impair

Après avoir récupéré mon "title" et son nom de fichier, je veux inverser l'ordre
/mnt/d.../ski$ find . -name "*.htm" -exec grep -i '<title' {} \; -print|wc 242 /mnt/d/...ski$ find . -name "*.htm" -exec grep -i '<title' {} \; -print> index_search.txt
inverser lignes paires et impaires (toujours avec N++, car je veux vérifier et supprimer des lignes)
Recherche: (^.+)(\R)(^.+)\R? Remplacer: $3$2$1$2 (*) RE ... [ Remplacer ... ]

inversion mots / group

 
"mettre le span existant en début de ligne" = utiliser les groupes


40km <span class="data">2h</span><br>
     -------------------
(1)  (2)                (3)
<span class="data">40km 2h</span><br>
(2)                (1)  (3)
ou new


Rechercher: 1 2 3 ^(.*)(<span class="data">)(.*)$ ou ^(.*)(<span class="data2">)(.*)$ Remplacer: $2$1$3 ou <span class="data">$1$3 (*) RE ... [ Remplacer ... ]

2 lignes


recoller la 2e ligne à la précédente = utiliser les groupes


<li><a class=xxxxxxx href=
------------
(1)         
   ">xxxx</a></li>
---
  (2) 



Rechercher: 1 2 (<li><a class.*)\r\n( .*) Remplacer: (\$1)(\$2) (*) RE ... [ Remplacer ... ]
voir n++2lines_group.jpg
et ainsi on pourra faire un tri (dans N++) de l'index avec "Edition / lignes / trier..."

link

check online
regex101.com/
regexr.com/ with explanation
regexpal.com
voir https://rubular.com/r/nfJdiHx2sE pour ex. 6 decimales

N++
nppmanuel.nliautaud.fr/expressions-regulieres