У меня проблема с регулярным выражением на vim. У меня есть шаблон следующим образом: http:\/\/\(\w\+\.\?\)\+ [соответствует http://(КАК МНОГО СЛОВ ПО СЛЕДУЮЩИМ ТОЧКАМ ИЛИ НЕ СЧЕТЧИКАМ) например, http://wd1.wd2.com]

У меня есть текст следующим образом:

http://wd1.wd2.com/wd3

Я пытаюсь сделать эту замену:

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

и результат будет http://wd4.wd5.com /wd3 (обратите внимание на пробел, вставленный в конце замены)

Как я могу избежать вставки этого пробела? Я боюсь, это ошибка в движке регулярных выражений, но я не уверен.

1 ответ1

2

Я не могу воспроизвести это. Регулярное выражение все еще не правильно, однако, оно должно быть \w\+ .

С помощью

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

результаты для меня следующие.

http://wd4.wd5.com/wd3

Подсказка: гораздо более чистая версия вашего регулярного выражения может быть достигнута с помощью «очень волшебного» режима регулярных выражений vim (см :help regex)

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .