VIM 中正则表达式的错误行为

VIM 中正则表达式的错误行为

我在 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

相关内容