1.匹配指令
符号 | 作用 |
---|---|
. | 匹配任意一个字符 |
[abc] | 匹配方括号中的任意一个字符(可以使用-表示字符范围,如[a-z 0-9]匹配小写字母和阿拉伯数字) |
[^abc] | 匹配除方括号中字符之外的任意字符 |
\d | 匹配阿拉伯数字,等同于[0-9] |
\D | 匹配阿拉伯数字之外的任意字符,等同于[^0-9] |
\x | 匹配十六进制数字 |
\X | 匹配十六进制数字之外的任意字符 |
\w | 匹配单词字母,等同于[0-9 A-Z a-z] |
\W | 匹配单词字母之外的任意字符 |
\t | 匹配TAB字符 |
\s | 匹配空白字符 |
\S | 匹配非空白字符 |
2.位置符号
符号 | 表示的位置 |
---|---|
$ | 匹配行尾 |
^ | 匹配行首(和[^abc]中的符号作用不同) |
\ < | 匹配单词词首 |
\ > | 匹配单词词尾 |
3.数量符号
符号 | 表示的数量 |
---|---|
* | 匹配0-任意个 |
\ + | 匹配1-任意个 |
\ ? | 匹配0-1个 |
\ {n,m} | 匹配n-m个 |
\ {n} | 匹配n个 |
\ {n,} | 匹配n-任意个 |
\ {,m} | 匹配0-m个 |
4.特殊符号
符号 | 作用 |
---|---|
\ * | 匹配*字符 |
\ . | 匹配.字符 |
\ / | 匹配/字符 |
\ \ | 匹配\字符 |
\ [ | 匹配[字符 |
5.几个例子
①把所有单词help或Help都改为大写的HELP
:%s/[Hh]elp/HELP/g
- :命令指示
- %所有行有效
- s查找替换
- [Hh]带H或h
②使用单个空格替换一个或多个空格
:%s/ \ +//g
- \ +表示数量
- //中没有间距就是无空格
③删除所有空行(没有任何字符,除了一个回车符)
- :g/^ $ /d:匹配到行首行尾中间无字符则删除
- :g/[ \t]*$/d:多个空格到行尾删除
④删除含有某些字符的行
:g/ERROR/d
- 记住就好hhh
⑤删除每行的所有的前导空格
:%s/^ *//g
- ^ *:表示从行首知道有字符
⑥在文件中的每一行的开始插入“->”
:%s/^/->/g
- 定位行首,插入字符即可
⑦删除以[a,b,c]开头的行
:%s/^ [a|b|c].*$//g
- 删除abc开头的行,而不是a开头或者b开题或者c开头
⑧使用“\ (”和“\ )”符号括起正规表达式,即可在后面使用\1 \2等变量来访问 \ (和\ )中的内容
例:/ \ (a\ +\ )[^a]\ +\1
头和结尾处a的个数相同的字符串
- 相当于保存下来再调用
匹配aabbbaa
匹配aaacccaaa
不匹配abbbaa
⑧交换列表中所有连字符分隔的条目的顺序
ABC: XYZ
: %s/ (.* \ ):\ (.*\ )/\2:\ 1/g
- 先存任意字符到\1
- 然后匹配冒号:
- 再存任意字符到\2
- 然后1 2 互换代替