Misbehavior na expressão regular no VIM

0

Estou tendo um problema com uma expressão regular no vim. Eu tenho um padrão da seguinte forma: http:\/\/\(\w\+\.\?\)\+ [corresponde http: // (COMO MUITAS PALAVRAS SEGUIDAS PELO DOT OU NÃO ENCONTRAR), por exemplo link

Eu tenho um texto da seguinte forma:

http://wd1.wd2.com/wd3

Estou tentando fazer essa substituição:

s/\(http:\/\/\)\(\w\+\.\?\)\+/wd4.wd5.com

e o resultado é http://wd4.wd5.com /wd3 (observe o espaço em branco inserido no final da substituição)

Como posso evitar ter esse espaço inserido? Eu tenho medo é um bug no mecanismo de regexp, mas não tenho certeza.

    
por poissonbreaker 14.10.2012 / 10:23

1 resposta

2

Eu não posso reproduzir isso. O regex ainda não está correto, mas deve ser \w\+ .

Usando

:s/\(http:\/\/\)\(\w\+\.\?\)\+/wd4.wd5.com

resulta no seguinte para mim.

http://wd4.wd5.com/wd3

Dica: uma versão muito mais limpa do seu regex pode ser obtida usando o modo regex 'muito mágico' do vim (c.f. :help regex )

:s#\v(http://)(\w+\.?)+#wd4.wd5.com
    
por 14.10.2012 / 10:43

Tags