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