我在 vim 上使用正则表达式时遇到了问题。我有一个如下模式:http:\/\/\(\w\+\.\?\)\+
[匹配 http://(AS MANY WORDS FOLLOWED BY DOT OR NOT ENCOUNTERS) 例如http://wd1.wd2.com]
我有一段文字如下:
http://wd1.wd2.com/wd3
我正在尝试对其进行替换:
s/\(http:\/\/\)\(\w\+\.\?\)\+/\1wd4.wd5.com
结果是http://wd4.wd5.com /wd3
(注意在替换末尾插入的空格)
我怎样才能避免插入这个空格?我担心这是正则表达式引擎的一个错误,但我不确定。
答案1
我无法重现此情况。正则表达式仍然不正确,但它必须是\w\+
。
使用
:s/\(http:\/\/\)\(\w\+\.\?\)\+/\1wd4.wd5.com
对我来说结果如下。
http://wd4.wd5.com/wd3
提示::help regex
通过使用 vim 的“非常神奇”正则表达式模式 (cf ),可以实现更简洁的正则表达式版本
:s#\v(http://)(\w+\.?)+#\1wd4.wd5.com