Vim regex: + tem que ser escapado, * não. Por quê?

1

Suponha que você queira selecionar linhas que sejam: espaços em branco opcionais, seguidos por um inteiro positivo, seguidos por espaços em branco mais opcionais.

Aqui está um regex que funciona para isso:

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

O operador * não é ignorado, enquanto o + é. Escapar * interrompe a regex. O mesmo acontece com + .

Existe uma boa explicação para isso? Idealmente algo para tornar a regra intuitiva. Com o vim sempre me esforcei para escrever expressões regulares por causa de regras incomuns de escape, então eu adoraria uma visão que faria tudo clicar para mim.

    
por Philip 27.05.2017 / 01:45

1 resposta

2

É por razões históricas, e quebraria a compatibilidade se fosse alterado. No entanto, você pode prefixar seu padrão com \v para ativar "muito mágico", para que você não precise fazer escape especial. Veja :help /\v .

    
por 27.05.2017 / 05:00

Tags