如何用一些文本替换VIM中的捕获组2

时间:2017-10-23 16:02:07

标签: regex vim vi

我正在使用下面的正则表达式abc1,cde2,efg3替换为你好但不知何故它不起作用

 :%s/\(\d\{2}:\d\{2}:\d\{2\}\s\)\([A-z0-9]*\)/hello/gc

Mar 17 02:25:01 abc1 micro:启动use.slice。

Mar 17 02:25:01 cde2 micro:启动use.slic

mar 17 02:25:01 efg3 micro:启动use.slic

2 个答案:

答案 0 :(得分:4)

您可以使用\zs来设置匹配将在替换中开始的位置。

:%s/\d\{2}:\d\{2}:\d\{2\}\s\zs[A-z0-9]*/hello/gc

如需更多帮助,请参阅:h /\zs

答案 1 :(得分:2)

您可以在vim

中使用此替换命令
%s/\v(\d{2}:\d{2}:\d{2}\s+)[a-zA-Z0-9]+/\1hello/g
  • 此处\v用于非常神奇,可避免按旧BRE语法转义。
  • \1是对已捕获的组#1
  • 的反向引用