我有一个单词列表:
bau
ceu
diu
fou
gau
我想将该列表变成:
byau
cyeu
dyiu
fyou
gyau
我尝试命令失败:
:%s/(\w)(\w\w)/\1y\2/g
鉴于这不起作用,我需要更改什么才能使正则表达式捕获组在 Vim 中工作?
最佳答案
解决此问题的一种方法是确保模式用转义括号括起来:
:%s/\(\w\)\(\w\w\)/\1y\2/g
稍微短一点(并且更神奇-al)的是使用\v
,这意味着在它后面的模式中,除了'0'之外的所有ASCII字符- '9'
、'a'-'z'
、'A'-'Z'
和 '_'
有一个特殊含义:
:%s/\v(\w)(\w\w)/\1y\2/g
参见:
关于regex - Vim 正则表达式捕获组 [bau -> byau : ceu -> cyeu],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19902089/