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… ;
\1le groupe numéro 1 ;\umettre en majuscule ;\3le groupe numéro 3 ;
/g faire toutes les occurrences trouvées.
Merci pour cette bien jolie regex, c’est exactement ce dont j’avais besoin… Trop fort, vim !