vim : expressions régulières rechercher remplacer (mémo)
Ci-suit une série d’expressions régulières qui fonctionnent sous vim, et dont j’ai fait la traduction en langue Française, afin que vous puissiez comprendre les subtilités :
/^ \+$
: rechercher toutes les lignes qui commencent et finissent par une suite de minimum un ou plus d’espaces (un antislash avant le «+
»)/^ *$
: rechercher toutes les lignes qui commencent et finissent par une suite de minimum zéro ou plus d’espaces (pas d’antislash avant le «*
»)/^ \*$
: rechercher toutes les lignes qui commencent par un espace et finissent par le caractère “*” (un antislash avant le «*
»)/^ \{1,1\}$
: rechercher toutes les lignes qui contiennent un et un seul espace (ne pas oublier l’antislash avant les «{}
»)
Et maintenant une expression complexe qui m’a été très utile :
Si vous tapez exactement cela :
:%s/\($this->[a-z]\+\)\(_\)\(.\)/\1\u\3/g
Vous aurez tous les ordres du type :
$this->Sejour_deb
Qui seront transformés en :
$this->SejourDeb
Très très utile.
Explication :
:%s/\($this->[a-z]\+\)\(_\)\(.\)/\1\u\3/g
:
= exécuter un ordre ;
%
= appliquer sur la totalité du document ;
s
= appliquer sur la chaine (ici ligne par ligne) ;
\($this->[a-z]\+\)
= groupe qui a $this-> puis une série de lettres ;
\(_\)
= groupe qui a un tiret bas ;
\(.\)
= groupe qui contient un caractère quel qu’il soit ;
On voit qu’il y a trois groupes, ils sont accessibles via antislash puis le numéro du groupe, exemple :”\1
“, et le cas concret :
/
= remplacer par… ;
\1
le groupe numéro 1 ;\u
mettre en majuscule ;\3
le groupe numéro 3 ;
/g
faire toutes les occurrences trouvées.
One comment