你还不会gvim正则表达式?一文搞懂!

电子说

1.2w人已加入

描述

gvim正则表达式常在命令行模式下使用,一般用于文本文件字符串的替换、删除等操作。

典型的替换命令格式:

%s/正则表达式/要替换的字符串/g”

典型删除命令格式:

%g/正则表达式/d

我们先讲元字符,接着讲述一些基本的应用例子,最后讲一些更高阶的应用例子,一文搞懂正则表达式!

一. 元字符

先搞清几个基本的概念,普通元字符,特殊元字符,数量元字符,位置元字符。

1. 普通元字符:

通常用来表示数字、单词、空格等。

[abc] 匹配a,b,c任意字符
[^abc] 匹配除abc以外的字符
d 匹配阿拉伯数字,等同于[0~9],decimal十进制
D 匹配阿拉伯数字之外的任意字符,等同于[^0~9]
x 匹配十六进制数字,等同于[0-9A-Fa-f],heximal十六进制
匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]
w  匹配单词字母,等同于[0-9A-Za-z],正则表达式中一般用"w+"表示一个单词
W 匹配单词字母之外的任意字符,等同于[0-9A-Za-z]
匹配空白符,等同于[ ]
t ‍ 匹配Tab字符
. 匹配任意字符

2. 特殊字符:

特殊字符通常用来表示一些特殊的符号,用转义。

* 匹配 * 字符
. 匹配 . 字符
匹配 / 字符
  匹配 字符
 [ 匹配 [ 字符

3. 数量元字符:

通常用来表示普通字符(数字、单词、空格)的数量。

* 匹配0~任意个
+ 匹配1~任意个
匹配0~1个
{n,m}  匹配n ~ m个
{n}  匹配 n 个
{n,}  匹配 n ~ 任意个
{,m}  匹配 0 ~ m 个

4. 位置元字符

匹配行尾
v 匹配行首
< 匹配单词词首
匹配单词词尾

几个例子:

[abc]表示匹配 a,b,c 中的任意一个字符;

abc 表示匹配abc,abc为一个整体;

[^abc]表示匹配除 a,b,c 以外的任意任意字符

^abc表示匹配以abc为开头的字符串,abc为一整体

表示匹配固定单词abc

w+表示匹配任意单词

二.  基础应用

替换与删除示例:

1. 把所有的abc或者Abc都替换为大写的ABC;

命令: %s/[Aa]bc/ABC/g

2. 删除所有空行(空行中无任何字符)

命令: %g/ ^ $/d

3. 删除所有空行(空行中可以包含空白符、Tab键等)

命令:%g/^ s * $/d

4. 删除含有abc字符的行

命令1: g/abc/d

命令2: %s/.*abc . *$//g (替换命令实现删除)

5. 删除每行开头的空格

命令 :%s/^ *//g——通过替换命令实现删除效果

6. 在文件中的每一行的开始插入abc字符

命令 ——:%s/^/abc/g

7. 在每一行尾部都加上abc字符

命令: %s/$/abc/g

8. 删除以数字开头的行

命令: %s/^d . *$ //g

三. 高阶应用-分组

所谓分组,即使用 ( 和 )符号括起来的正则表达式,即可在其后面使用1 ,2等变量来访问 ( 和 )符号括起来的内容。

1. 交换顺序: ABC:XYZ 改为XYZ:ABC

命令:%s/ (. ): (. )/2:1/g

2. abc开头的后面为一个或多个空格,然后为一个单词,将abc和该单词交换位置

命令: %s/^(abc)s+ (w+) /2 1/g

3. 删除重复行

命令 :%s/^ (.*)( 1){2,}/1/g (将2行及以上重复行压缩成一行)

解释:^(. * )表示以任意字符开头的行, 表示换行符, ( 1){2,}表示^(.* )换行后重复2次以上,替换成一行。

4. 给各行开头加上行号+: (123: )

命令: %s/^/=line('.').':' 

解释:^代表行首,line('.')代表获取行号的函数,.':'代表拼接:号,最终格式为: "行号:"。







审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分