我在制作适当的查找/替换正则表达式以在vim中使用时遇到问题
这是一些SQL:
select avg(field_name1), avg(field_name2), avg(field_name3) from a_table
Run Code Online (Sandbox Code Playgroud)
哎呀,我忘了别名结果:
select avg(field_name1) field_name1,
avg(field_name2) field_name2, avg(field_name3) field_name3 from a_table
Run Code Online (Sandbox Code Playgroud)
所以,在vim中,我确信有一个方便的查找和替换匹配任意[a-z]\+_[a-z]\+
内部括号,但我无法弄清楚如何在整个匹配后放置该令牌
集团要在置换/替换使用与周围的文字\(\)
,并用指的是替代这些反向引用\1
,\2
等等。
使用[:alnum:]
匹配字母数字字符:
:s/(\([[:alnum:]]\+_[[:alnum:]]\+\))/(\1) \1/g
Run Code Online (Sandbox Code Playgroud)
要将任一正则表达式应用于整个文件,请使用:
:%s/(\([[:alnum:]]\+_[[:alnum:]]\+\))/(\1) \1/g
Run Code Online (Sandbox Code Playgroud)
另请参阅:help \1
有关使用反向引用的更多详细信息。