有些时候我们在使用vim的时候,希望将其中的某些pattern, 替换成另外的pattern, 直接使用替换的话,会将某些不属于这个pattern的地方给误替换,因此可以采用如下的方式;
简单说下规则:
\ ( \) : 用括号将需要捕获的信息包起来;
\1,\2,\3: 和perl类似,就是将前面括号内的东西,用1,2,3来暂时存储;
上述的意思是:
1. 找到this+空格+一个或者多个字母数字下划线,在上述文本中,就是:this is
2. 其中,一个或者多个字母数字下划线,希望捕获下来,继续使用,因此,用()包起来,注意这里的括号需要用\转义;
3. 找到之后,将前面包起来的内容,用\1存储;
4. 将上述的pattern, 替换成substitue to \1, 结果为:
同理,如果想要捕获多个,按照上述的方式操作即可,只是捕获的内容,是从\1, \2, \3依次存储;
下文有更详细的描述:
VIM学习笔记 正则表达式-捕获组(Regex-Groups) - 知乎 (zhihu.com)