tutoriel_de_rappel_sur_les_regexp
no way to compare when less than two revisions
Différences
Ci-dessous, les différences entre deux révisions de la page.
| — | tutoriel_de_rappel_sur_les_regexp [2016/01/07 23:53] (Version actuelle) – créée nc | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Notepad++, les expressions régulières ====== | ||
| + | Extrait de [[http:// | ||
| + | |||
| + | Une expression régulière (abrégé expreg), en anglais regular expression (abrégé regexp), est une chaine de caractère permettant de décrire un ensemble variable par l' | ||
| + | |||
| + | Voir [[https:// | ||
| + | |||
| + | La maîtrise de cette syntaxe vous permettra une manipulation de textes sans limite dans Notepad++ mais aussi dans la majeure partie des langages de programmation. | ||
| + | ===== Distinguer les motifs et leurs résultats ===== | ||
| + | Il faut bien saisir qu'un motif de recherche vise à chercher des résultats lui correspondant dans un texte, qui peuvent être remplacés selon un motif de remplacement : | ||
| + | |||
| + | * Le motif de recherche décrit quoi chercher dans ce texte, par exemple “mots commençant par un N”. | ||
| + | * Les résultats de la recherche pourront alors être par exemple “Nature, Nounours, Nord”. | ||
| + | * Optionnellement, | ||
| + | |||
| + | ===== Syntaxe du motif de recherche ===== | ||
| + | |||
| + | |||
| + | Notepad++ (ou plus précisément sa composante Scintilla) ne prend en compte que la syntaxe de base des expressions régulières, | ||
| + | ==== Les caractères ==== | ||
| + | |||
| + | |||
| + | * . : un point désigne n' | ||
| + | * tout autre caractère, s'il ne fait pas parti de la syntaxe des expressions régulières, | ||
| + | |||
| + | Les expressions régulières dans Notepad++ ne sont sensibles à la casse | ||
| + | que si l' | ||
| + | |||
| + | === Exemples === | ||
| + | |||
| + | |||
| + | * a.c désigne littéralement “la lettre a, puis n' | ||
| + | * .-5% désigne littéralement “n' | ||
| + | |||
| + | ==== Début et fin de ligne ==== | ||
| + | |||
| + | |||
| + | * ^ : l' | ||
| + | * $ : le dollar désigne la fin d'une ligne. | ||
| + | |||
| + | === Exemples === | ||
| + | |||
| + | |||
| + | * ^a désigne “la lettre a en début de ligne”. | ||
| + | * ^. désigne “n' | ||
| + | * a$ désigne “la lettre a en fin de ligne”. | ||
| + | * ^a$ désigne “la lettre a seule sur une ligne”. | ||
| + | |||
| + | ==== Les répétitions ==== | ||
| + | |||
| + | |||
| + | * * : une étoile indique que le symbole précédent est présent n' | ||
| + | * + : un plus indique que le symbole précédent est présent au moins une fois. | ||
| + | |||
| + | === Exemples === | ||
| + | |||
| + | * ab*c désigne littéralement “la lettre a, n' | ||
| + | * ab+c désigne littéralement “la lettre a, au moins une fois la lettre b, puis la lettre c”. Cela peut désigner abc, abbc, abbbbbc… | ||
| + | |||
| + | ==== Les ensembles ==== | ||
| + | |||
| + | |||
| + | * […] : un ensemble de caractères entre crochets désigne n' | ||
| + | * [^…] : un ensemble entre crochets commençant par un accent circonflexe désigne n' | ||
| + | * […-…] : un tiret séparant deux caractères dans un ensemble désigne une plage de caractères. | ||
| + | |||
| + | === Exemples === | ||
| + | |||
| + | |||
| + | * [abc7] désigne littéralement “les lettres minuscules a, b et c ou le chiffre 7”. | ||
| + | * [^abc7] désigne littéralement “n' | ||
| + | * [a-z] désigne littéralement “n' | ||
| + | * [a-z0-9] désigne littéralement “n' | ||
| + | |||
| + | ==== Les groupes ==== | ||
| + | |||
| + | |||
| + | * (…) : les parenthèses définissent un groupe qui peut être répété ou récupéré dans un motif de remplacement. | ||
| + | |||
| + | === Exemples === | ||
| + | |||
| + | |||
| + | * a(bc)+ désigne littéralement “la lettre a puis au moins une fois le groupe de lettres ab”. Cela pourrait être abc, abcbc, abcbcbcbcbc… | ||
| + | |||
| + | ==== Échappement ==== | ||
| + | |||
| + | |||
| + | * Pour désigner un caractère qui est utilisé dans la syntaxe des expressions régulières, | ||
| + | === Exemples === | ||
| + | |||
| + | |||
| + | * a\[bc\] désigne littéralement “la lettre a, puis les lettres b et c entre crochets”. C'est à dire la chaine de caractères a[bc]. | ||
| + | * a[\bc] désigne littéralement “la lettre a, puis b ou c ou un antislash”. Cela pourrait être a\, ab ou ac. | ||
| + | |||
| + | ==== Les mots ==== | ||
| + | |||
| + | |||
| + | * \< : désigne le début d'un mot. | ||
| + | * \> : désigne la fin d'un mot. | ||
| + | * \w : désigne un caractère d'un mot. Correspond à [a-zA-Z0-9_]. | ||
| + | |||
| + | === Exemples === | ||
| + | |||
| + | |||
| + | * \w+ désigne littéralement “un mot d'au moins une lettre”. | ||
| + | |||
| + | ===== Syntaxe du motif de remplacement ===== | ||
| + | |||
| + | |||
| + | * Tout caractère se désigne lui-même. | ||
| + | * \x : avec x un chiffre entre 1 et 9 (\1, \2, …) désigne le résultat d'un groupe du motif de recherche. | ||
| + | |||
| + | === Exemples === | ||
| + | |||
| + | |||
| + | * Dans le motif de recherche a(bc), le motif de remplacement z\1 désigne la lettre z suivie du résultat du premier groupe, donc zbc. | ||
| + | * Dans le motif de recherche (a(bc))(de), | ||
| + | |||
| + | ===== Utilisation dans Notepad++ ===== | ||
| + | |||
| + | ==== La fenêtre de recherche et remplacement ==== | ||
| + | |||
| + | |||
| + | Lors d'une recherche ou d'un remplacement, | ||
| + | |||
| + | Indiquez dans le champ // | ||
| + | ==== Les plugins utiles ==== | ||
| + | |||
| + | |||
| + | La fenêtre Find/ | ||
| + | |||
| + | Le plugin RegEx Helper est un atout important, car il permet de visualiser directement tous les résultats d’un motif. | ||
| + | ===== Exemples ===== | ||
| + | |||
| + | ==== Insérer du texte en début de ligne ==== | ||
| + | |||
| + | |||
| + | Ouvrir la fenêtre de remplacement avec Ctrl+H, et sélectionner le mode Expressions Régulières. | ||
| + | |||
| + | Rechercher le premier caractère en début de ligne (dans un groupe pour pouvoir le réécrire) avec : | ||
| + | |||
| + | ^(.) | ||
| + | |||
| + | Remplacer par le texte voulu suivi du résultat du groupe, par exemple : | ||
| + | |||
| + | - \1 | ||
| + | |||
| + | Ainsi le texte : | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Devient : | ||
| + | |||
| + | - abricot | ||
| + | - banane | ||
| + | - cerise | ||
| + | |||
| + | ==== Insérer du texte en fin de ligne ==== | ||
| + | |||
| + | |||
| + | Ouvrir la fenêtre de remplacement avec Ctrl+H, et sélectionner le mode Expressions Régulières. | ||
| + | |||
| + | Rechercher le dernier caractère en fin de ligne (dans un groupe pour pouvoir le réécrire) avec : | ||
| + | |||
| + | (.)$ | ||
| + | |||
| + | Remplacer par le résultat du groupe suivi du texte voulu, par exemple : | ||
| + | |||
| + | \1 : | ||
| + | |||
| + | Ainsi le texte : | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Devient : | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | ==== Supprimer des décimales ==== | ||
| + | |||
| + | |||
| + | Ouvrir la fenêtre de remplacement avec Ctrl+H, et sélectionner le mode Expressions Régulières. | ||
| + | |||
| + | Rechercher « un chiffre ou plus suivi d’un point ou d’une virgule puis d’au moins un chiffre » : | ||
| + | |||
| + | | ||
| + | |||
| + | L’utilisation d’une parenthèse capturante permet de ne conserver au remplacement que la valeur entière, au moyen de : | ||
| + | |||
| + | \1 | ||
| + | |||
| + | Par exemple : | ||
| + | |||
| + | 8 1.0 56.82 589,273 | ||
| + | |||
| + | Devient : | ||
| + | |||
| + | 8 1 56 589 | ||
| + | |||
| + | ==== Arrondir des valeurs ==== | ||
| + | |||
| + | |||
| + | La recherche/ | ||
| + | |||
| + | Il est donc, de manière générale, impossible d’arrondir | ||
| + | | ||
| + | |||
| + | La méthode suivante permet d’arrondir toute valeur positive à l’unité la plus proche. Elle nécessite toutefois un grand nombre d’opérations, | ||
| + | |||
| + | * valeurs comprises entre 0 et 9.9999… : | ||
| + | * valeurs comprises entre 0 et 99.999… : | ||
| + | * valeurs comprises entre 0 et 999.99… : | ||
| + | |||
| + | Il est donc très vite plus intéressant de faire appel à un langage de programmation. | ||
| + | |||
| + | On prendra pour exemple la série suivante : | ||
| + | |||
| + | * 0.0 58.256 | ||
| + | * 4.5 98.663 | ||
| + | * 19.6 59.701 | ||
| + | |||
| + | D’abord, arrondir les valeurs dont la première décimale est inférieure à 5 correspond à en supprimer les décimales. On recherchera donc : | ||
| + | |||
| + | | ||
| + | |||
| + | Pour n’en garder que la valeur entière : | ||
| + | |||
| + | \1 | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Ensuite, les valeurs dont la première décimale est comprise entre 5 et 9 doivent être augmentées de un : l’arrondi de 12.71 est 13. | ||
| + | |||
| + | Les valeurs dont le chiffre des unités est inférieur à 9 n’influeront pas le chiffre des dizaines. On peut donc déterminer neuf remplacements à effectuer afin de remplacer le chiffre des unités en conservant les chiffres précédents : | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Il ne reste à ce stade plus que les valeurs avec une unité de 9, dont le remplacement doit influer sur les chiffres des dizaines. | ||
| + | |||
| + | Les remplacer demande alors de reprendre le raisonnement précédent : | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | ... | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Et l’on recommence les neuf opérations pour les dizaines égales à 9, puis pour les centaines, etc. | ||
tutoriel_de_rappel_sur_les_regexp.txt · Dernière modification : 2016/01/07 23:53 de nc
