Envoyé par
Bovino
Si tu penses que quelque chose manque...
Et si on trouve que quelque chose n'est pas tout à fait correct ?
Envoyé par
jmnicolas
J'ai mis le chapitre sur les REGEX en favori, merci pour ton travail
C'est aussi un des premiers chapîtres que je suis allé voir parce que je suis fan des regex (et que Notepad++ s'est grandement amélioré depuis la 6.0 apparement (mars 2012, même si j'ai l'impression que ça fait plus longtemps que ça)).
Et je ne suis pas du tout d'accord avec sa phrase de présentation :
Notepad++ (ou plus précisément sa composante Scintilla) ne prend en compte que la syntaxe de base des expressions régulières, mais permet déjà un très grand nombre d'opérations.
Le moteur de regex de Notepad++ ne prend pas en compte que la syntaxe de base des regex (dans ses premières versions oui, c'était même risible). Il utilise désormais une syntaxe perl-like (PCRE :
Perl Compatible Regular Expressions) très poussée, tant dans la recherche que dans le remplacement.
Quelques exemples en vrac :
- les "backreferences" dans la recherche : il est possible de réutiliser un groupe existant dans la regex
1 2 3 4
| regex : (\w{3})\1 (match tout motif de 3 caractères répété 2 fois)
texte :
source | résultat
abcabc abcdef | abcabc |
- "zero-width positive lookahead" :
1 2 3 4 5 6 7 8
| regex : ^(?=.+) (match tout début de ligne possédant au moins un caractère, le fait d'accepter une expression non fixe (.+) n'est pas géré par tous les moteurs de regex)
remplacement : '- '
texte :
source | résultat
abc | - abc
def | - def
|
ghi | - ghi |
- "zero-width positive lookbehind" :
1 2 3 4 5 6 7 8
| regex : (?<=.)$ (match toute fin de ligne précédée d'un caractère)
remplacement : .
texte :
source | résultat
abc | abc.
def | def.
|
ghi | ghi. |
- remplacement en majuscule :
1 2 3 4 5 6 7
| regex : \b(?:(a\w*)|(\w+))\b (match séparément les mots commençant par un "a" des autres)
remplacement \u$1\U$2 (mets en majuscule la première lettre des mots commençant par "a" ou tout le mot pour les autres)
texte :
source | résultat
abc | Abc
def | DEF
ghi | GHI |
Tous ces exemples ne sont possibles que sur un moteur de regex assez évolué et je trouve que la phrase qu'il a mise peut induire en erreur un lecteur qui aurait utilisé Notepad++ dans ses anciennes versions (ou qui n'aurait pas mis à jour) où effectivement la gestion des expressions régulières était extrèmement basique (
.* accepté,
.+ non reconnu par exemple).
Je crois qu'il est important de rendre cet hommage à Notepad++ qui a fait l'effort d'intégrer un moteur de regex très performant dans son processus de recherche/remplacement (il est assez impressionnant par sa rapidité sur de gros documents (200/300Mo)).
Avant j'utilisais jEdit pour faire tous mes remplacements par regex, maintenant c'est beaucoup plus rare, sauf quand il faut faire des calculs (numérotation incrémentielle, ...).
2 |
0 |