Visual Sudio Code et les expressions régulières
Petit pense-bête pour utiliser les expressions régulières sur Visual Sudio Code. C’est une fonctionnalité que j’utilise fréquemment, mais pas assez pour que je me souvienne des motifs quand j’en ai besoin.
Quel est le moteur d’expression régulière ?
Les expressions régulières pourront être au format ECMAScript 5
ou PCRE2
.
Ouvrir le widget recherche/remplacement
Pour lancer une recherche, il suffit d’utiliser les touches [CTRL]+[F], qui ouvre ce widget :
Pour lancer une recherche avec remplacement il suffit d’utiliser les touches [CTRL]+[H], qui ouvre ce widget :
Pour activer les regex, il faut cliquer sur .*
Saisir des expressions régulières
Je ne vais pas refaire le cours sur les expressions régulières perl ↗, mais je vais prendre quelques pour piqûre de rappel. Vous pouvez vous entraîner avec le site regex101.com ↗.
Pour rechercher un caractère dans un ensemble il suffit de le mettre entre []
.
Par exemple une lettre minuscule [a-z]
, une lettre minuscule ou majuscule
[a-zA-Z]
, un nombre [0-9], etc. Vous pouvez ajouter d’autres caractères dans
la liste.
|
permet d’indiquer un ou : moi|toi|nous
recherche les mots moi,toi,nous.
Les caractères spéciaux :
\n
saut de ligne\r
retour chariot\t
tabulation\f
saut de page\e
échappement^
désigne le début d’une ligne$
désigne la fin d’une ligne
Les raccourcis :
\w
qui équivaut à [a-zA-Z0-9_]\W
à [^a-zA-Z0-9_] donc le contraire de\w
\s
à [\r\n\t\f\v]\S
à tous les caractères autres que ceux de\s
\d
à [0-9]\D
à tous les caractères non numériques. [^0-9].
à n’importe quel caractère sauf retour à la ligne\b
recherche toutes les séquences \w dont la première ou/et la dernière lettre est la précédant.
Pour définir le nombre d’occurrences d’un caractère ou d’un ensemble :
?
à zéro ou une occurrence d’une recherche+
à une ou plus d’occurrence(s) d’une recherche.*
à zéro ou plus d’occurrence(s) d’une recherche.{i,j}
idem, mais on définit le nombre de répétitions mini et maxi.
La capture :
(...)
permet de capturer le contenu afin de le réutiliser dans la zone remplacement avec le caractère $n. n’étant l’index de l’occurrence ().
Si vous recherchez un caractère parmi ceux qui sont réservés, il faudra les
échapper avec \
: $^.|?*+()[]{}
Quelques exemples
1) Dans un playbook Ansible vous avez oublié d’entourer d’espaces le nom d’une variable.
“{{variable}}” doit s’écrire ”{{ variable }}”.
On doit ajouter des échappements puisque nous recherchons des {} :
- Dans la zone recherche :
\{\{(\w+)\}\}
- Dans la zone remplacement :
\{\{ $1 \}\}
2) Dans les descriptions de tâches, nous aimerions que la première lettre de celle-ci soit en Majuscule.
- Dans la zone recherche :
(\s+) - name: (\w+)
- Dans la zone remplacement :
$1 - name: \u$2
Dans la zone résultat, il suffit de précéder l’occurrence de la capture par \u
.
Pour mettre en minuscule \l
. Pour le faire sur tout le mot \L
ou \U
.
Je compléterai ce billet avec d’autres exemples quand je les utiliserai.