Vim Regex替换

80v*_*s90 19 regex vim

我认为这是一个非常简单的解决方案,但我一直试图找到大约一个小时的答案,似乎无法弄明白.

我正在尝试在Vim中进行查找/替换,以替换一系列以数字开头103并且后跟四位数123后跟相同四位数的数字,如下所示:

1033303- > 1233303
1033213- >1233213

我最接近的是:

%s/103\d\{4}/123\0/g
Run Code Online (Sandbox Code Playgroud)

然而,这导致整个数字匹配\0,因此:

1033303 - > 1231033303

非常感谢您的帮助

Con*_*ner 26

你很近

%s/103\(\d\{4}\)/123\1/g
Run Code Online (Sandbox Code Playgroud)

之间的图案\(\)是一个子匹配可以由被访问\1,\2等等中出现的顺序.有关:help \(更多信息,请参阅


Pet*_*ker 7

现在没有捕获组!

:%s/103\ze\d\{4}/123/g
Run Code Online (Sandbox Code Playgroud)

\ze将在那里设置比赛的结束.这允许您匹配整个模式,但只对其中的一部分进行替换.

:h /\ze
:h /\zs
Run Code Online (Sandbox Code Playgroud)