regex - Vim 正则表达式捕获组 [bau -> byau : ceu -> cyeu]

标签 regex vim capturing-group regex-group

我有一个单词列表:

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/

相关文章:

ruby - 正则表达式 - 保存重复捕获的组

perl - 为什么行终止符 `\r\n` 导致组不匹配?

html - 在 HTML 文件中查找特定标签

vim - 如何获取当前在 vim 中比较的文件列表

java - 在java中使用正则表达式替换两个不同的字符

Linux AVR-IDE开发、vim集成

C 编程和 vim

正则表达式模式不支持 # 符号

html - 提取所有 html 图像标签,Rails