notepadpp:expreg:exemples

**Ceci est une ancienne révision du document !** ----

A PCRE internal error occured. This might be caused by a faulty plugin

=====Expregs : exemples===== Il ne s'agit pas ici de lister des exemples d'expressions régulières, dont les bases sont couvertes [[syntaxe_base|ici]], mais de donner des exemples concrets d'utilisation des expressions régulières via recherche et remplacement dans [[:notepadpp|Notepad++]]. ====Insérer du texte en début de ligne==== Ouvrir la fenêtre de remplacement avec <key>Ctrl-h</key>, et sélectionner le mode //Expressions Régulières//. Rechercher le premier caractères en début de ligne (dans un groupe pour pouvoir le ré-écrire) avec : <code>^(.)</code> Remplacer par le texte voulu suivi du résultat du groupe, par exemple : <code>- \1</code> Ainsi le texte : <code> abricot banane cerise </code> Deviens : <code> - abricot - banane - cerise </code> ====Insérer du texte en fin de ligne==== Ouvrir la fenêtre de remplacement avec <key>Ctrl-h</key>, 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 : <code>(.)$</code> Remplacer par le résultat du groupe suivi du texte voulu, par exemple : <code>\1 :</code> Ainsi le texte : <code> abricot banane cerise </code> Deviens : <code> abricot : banane : cerise : </code> ====Supprimer des décimales==== Ouvrir la fenêtre de remplacement avec <key>Ctrl-h</key>, 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" : <code>([0-9]+)[.,][0-9]+</code> L'utilisation d'une parenthèse capturante permet de ne conserver au remplacement que la valeur entière, au moyen de : <code>\1</code> Par exemple : <code>8 1.0 56.82 589,273</code> Deviens : <code>8 1 56 589</code> ====Arrondir des valeurs==== La recherche/remplacement ne permet pas d'opérations proprement conditionnelles : Notepad++ n'est pas d'un interpréteur ou un compilateur et ne peut traiter des opérations mathématiques. <note important> Il est donc, de manière générale, impossible d'arrondir automatiquement et facilement des valeurs dans Notepad++. </note> 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, augmentant avec la taille des valeurs : * valeurs comprises entre 0 et 9.9999... : 11 remplacements * valeurs comprises entre 0 et 99.999... : 21 remplacements * valeurs comprises entre 0 et 999.99... : 31 remplacements Il est donc très vite plus intéressant de faire appel à un langage de programmation. On prendra pour exemple la série suivante : <code> 0.0 58.256 982.498 4.5 98.663 506.942 19.6 59.701 189.842 </code> D'abord, arrondir les valeurs dont la première décimale est inférieure à 5 correspond à en supprimer les décimales. On recherchera donc : <code>([0-9]+)[.,][0-4][0-9]*</code> Pour n'en garder que la valeur entière : <code>\1</code> <code> 0 58 982 (première décimale inférieure à 5) 4.5 98.663 506.942 19.6 59.701 189.842 </code> 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 : <code>([0-9]*)0[.,][5-9][0-9]* remplacé par \11</code> <code>([0-9]*)1[.,][5-9][0-9]* remplacé par \12</code> <code>([0-9]*)2[.,][5-9][0-9]* remplacé par \13</code> <code>([0-9]*)3[.,][5-9][0-9]* remplacé par \14</code> <code>([0-9]*)4[.,][5-9][0-9]* remplacé par \15</code> <code>([0-9]*)5[.,][5-9][0-9]* remplacé par \16</code> <code>([0-9]*)6[.,][5-9][0-9]* remplacé par \17</code> <code>([0-9]*)7[.,][5-9][0-9]* remplacé par \18</code> <code>([0-9]*)8[.,][5-9][0-9]* remplacé par \19</code> <code> 0 58 982 5 99 507 (chiffre des unités inférieur à 9) 19.6 59.701 189.842 </code> 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 : neuf remplacements pour les dizaines comprises entre 0 et 8 en mettant le chiffre des unités à 0. <code>([0-9]*)09[.,][5-9][0-9]* remplacé par \110</code> <code>([0-9]*)19[.,][5-9][0-9]* remplacé par \120</code> <code>...</code> <code> 0 58 982 5 99 507 20 60 190 (chiffre des dizaines inférieur à 9) </code> Et l'on recommence les neuf opérations pour les dizaines égales à 9, puis pour les centaines, etc, etc...