1 votes

Vim regex : + doit être échappé, * non. Pourquoi ?

Supposons que vous vouliez sélectionner les lignes qui sont : un espace blanc facultatif, suivi d'un nombre entier positif, suivi d'un autre espace blanc facultatif.

Voici une regex qui fonctionne pour cela :

:g/^\s*\d\+\s*/

Le site * n'est pas échappé, tandis que l'opérateur + est. Échapper à * casse la regex. Il en va de même pour le désencadrement + .

Y a-t-il une bonne explication à cela ? Idéalement, quelque chose qui rendrait la règle intuitive. Avec vim, j'ai toujours eu du mal à écrire des regex à cause des règles d'échappement inhabituelles, alors j'aimerais bien avoir une idée qui me permette de tout comprendre.

2voto

Patrick Klug Points 5320

C'est pour des raisons historiques, et la compatibilité serait rompue si elle était modifiée. Cependant, vous pouvez préfixer votre motif avec \v pour activer "very magic" afin de ne pas avoir à faire d'échappement spécial. Voir :help /\v .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X