下冰雹 · 1月19日

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

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

典型的替换命令格式:

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

典型删除命令格式:

%g/正则表达式/d

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

一. 元字符

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

1. 普通元字符:

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

image.png

2. 特殊字符:

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

image.png

3. 数量元字符:

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

image.png

4. 位置元字符

image.png

几个例子:

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

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

1 表示匹配除 a,b,c 以外的任意任意字符

^abc 表示匹配以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/^\ (.*)(\n\1){2,}/\1/g (将2行及以上重复行压缩成一行)

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

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

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

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

参考文档:

  • Vim documentation : vim online
  • Vim 对特定行处理常用方法(四):删除、压缩重复行 - 知乎 (zhihu.com)
  • GVIM/VIM中的正则表达式详解_gvim正则表达式-CSDN博客
作者:芯片设计验证
文章来源:芯片设计验证

推荐阅读

更多IC设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

  1. abc
推荐阅读
关注数
19608
内容数
1303
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息