vim中的正则替换

来源:互联网 发布:淘宝网真皮短款女靴 编辑:程序博客网 时间:2024/06/04 17:49

vim编辑器提供的正则替换命令很强大,在末行模式下可以使用替换命令,其命令格式如下:

:[range]s/s1/s2/[option]

其中,

[option] 表示检索范围,省略时表示当前行,示例如下:

1,10 表示从第一行到第十行

% 表示整个文件

.,$ 示从当前行到文件尾

1,$ 表示整个文件

[option] 表示额外选项,可以有如下选项:

g 在当前整行中进行替换

c 在每次替换前需要进行确认

i 忽略大小写

这些选项可以合并使用

正则表达式

元字符

. 匹配任意字符

[abc] 匹配方括号中的任意一个字符,可用-表示字符范围。如[a-z0-9]匹配小写字母和数字

[^abc] 匹配除方括号中字符之外的任意字符

\d 匹配阿拉伯数字,等同于[0-9]

\D 匹配阿拉伯数字之外的任意字符,等同于[^0-9]

\x 匹配十六进制数字,等同于[0-9A-Fa-f]
\X 匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]
\l 匹配[a-z]
\L 匹配[^a-z]
\u 匹配[A-Z]
\U 匹配[^A-Z]
\w 匹配单词字母,等同于[0-9A-Za-z_]
\W 匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]
\t 匹配<TAB>字符
\s 匹配空白字符,等同于[\t]

\S 匹配非空白字符,等同于[^\t]

需要转义的字符

* . \ / [ ] 这六个字符均需要加上\进行转义才能匹配到自身

表示数量的元字符

*  匹配0-任意个

\+ 匹配1-任意个

\? 匹配0-1个

\{n,m} 匹配n-m个

\{n}   匹配n个

\{n,}  匹配n-任意个

\{,m}  匹配0-m个

表示位置的元字符

$ 匹配行尾

^  匹配行首

\< 匹配单词词首

\> 匹配单词词尾

替换变量

在正则式中以\(和\)括起来的正则表达式,在后面使用的时候可以用\1、\2等变量来访问\(和\)中的内容

例子: 将11-12-01替换为12.01.2011

s/\(\d\+\)-\(\d\+\)-\(\d\+\)/\2.\3.20\1/