Eu quero usar regex para converter estes:
<input type="text" name="salutation" value={salutation} />
<input type="text" name="first_name" value={first_name} />
nestes:
<input type="text" name="salutation" value="" />
<input type="text" name="first_name" value="" />
Portanto, no VIM, tentei todos os seguintes comandos:
:0,$s/value={.+}/value=""/gc
:0,$s/value={(.)+}/value=""/gc
:0,$s/value={[a-zA-Z0-9_\.]+}/value=""/gc
:0,$s/value={[^}]+}/value=""/gc
Mas continuo recebendo a mensagem Padrão não encontrado. O que eu fiz errado?
Ao usar caracteres especiais na substituição, alguns quantificadores precisam ser escapados.
Isso inclui
+
, então você deve digitar\+
em seu lugar.Ver: 4.3 Quantificadores, Greedy e Non-Greedy .
Seu regex estava realmente fazendo isso:
:0,$s/value={.+}/value=""/gc
= Substitua a string " {.+} " por value="":0,$s/value={(.)+}/value=""/gc
= Substitua a string " {(.)+} " por value="":0,$s/value={[a-zA-Z0-9_\.]+}/value=""/gc
= Substitua a string " {X+} " por value="" onde X é qualquer um dos caracteres dentro de []:0,$s/value={[^}]+}/value=""/gc
= Substitua a string " {X+} " por value="" onde X não é o caractere '}'Portanto, se você pretende usar '+' como quantificador, deve usar '\+'. Caso contrário, como em todos os seus padrões, um '+' real é pesquisado em vez de 1 ou mais dos caracteres anteriores