VIM 正则表达式详解及与 perl 正则的区别

要在 VIM中使用高级搜索和替换功能,就要熟悉 VIM 中的正则表达式,VIM 正则和我们常用正则的语法大体相近,但是还是有个别不同的地方。
下面我们对 VIM 正则表达式进行介绍并总指出其与 Perl 正则的不同之处。

字符集

.         匹配任意一个字符 
\w        匹配单词字母,等同于[0-9A-Za-z_]。 
\W        匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]。 
\t        匹配字符。 
\a        所有的字母字符. 等同于[a-zA-Z] 
\e        
\t        
\r        
\b        
\d        数字 [0-9] 
\D        非数字 [^0-9] 
\x        十六进制数 [0-9a-fA-F] 
\X        非十六进制数 [^0-9a-fA-F] 
\s        空白字符 [ ] (),等同于[ /t]
\S        非空白字符 [^ ] (除 之外),等同于[^ /t]
\l        小写字母 [a-z] 
\L        非小写字母 [^a-z] 
\u        大写字母 [A-Z] 
\U        非大写字母 [^A-Z] 
\i        标识符字符 'isident'
\I        同于\i,但排除了数字 
\k        关键字字符 
\K        同\k,但排除数字 
\p        可打印字符 
\P        同\p,但排除数字 
\f        文件名字符 
\F        同\f,但排除数字 
\_        表示段行,他与以上的字符组合,如 \_s,\_a 。。。

范围

[abc]     匹配方括号中的任意一个字符。可以使用-表示字符范围, 
[a-z0-9]  匹配小写字母和阿拉伯数字。 
[^abc]    在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。 

多选一

模式中的"或"操作符是"\|"。
如:
/foo\|bar

分组
\(\)
在替换的时候可以使用 \1、\2 。。。来引用 \(\) 捕获的内容
perl : ()

量次(重复次数)

*              匹配0-任意个 
*\{-\}         * 的惰性模式    perl : *?
\+             匹配1 至任意个  perl : +
\+\{-\}        \+ 的惰性模式    perl : +?
\?             匹配0-1个      perl : ?
\{n,m\}        匹配n-m个      perl : {n,m}
\{-n,m\}       \{n,m\} 的惰性模式    perl : {n,m}?
\{n\}          匹配n个        perl : {n}
\{-n\}         \{n\} 的惰性模式    perl : {n}?
\{n,\}         匹配n 至任意个  perl : {n,}
\{-n,\}        \{n,\} 的惰性模式    perl : {n,}?
\{,m\}         匹配0- m 个    perl :  {0,m}
元字符 说明 
\*        匹配 * 字符 
\.        匹配 . 字符 
\/        匹配 / 字符 
\\        匹配 \ 字符 
\[        匹配 [ 字符

位置

$         匹配行尾 
^         匹配行首 
\<        匹配单词词首  perl : \b
\>        匹配单词词尾 

函数式
:s/替换字符串//=函数式
在函数式中可以使用 submatch(1)、submatch(2) 等来引用 /1、/2 等的内容,而submatch(0)可以引用匹配的整个内容。

历史搜索记录:

Post a Comment

Your email is never shared. Required fields are marked *

*
*