0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

sanyue7758 来源:芯片设计验证 2024-01-19 16:47 次阅读

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十六进制
X 匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]
w 匹配单词字母,等同于[0-9A-Za-z],正则表达式中一般用"w+"表示一个单词
W 匹配单词字母之外的任意字符,等同于[0-9A-Za-z]
s 匹配空白符,等同于[ ]
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('.')代表获取行号的函数,.':'代表拼接:号,最终格式为:"行号:"。







审核编辑:刘清

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

    关注

    0

    文章

    8

    浏览量

    2958

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

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是正则表达式正则表达式如何工作?哪些语法规则适用正则表达式

    正则表达式又称规则表达式(Regular Expression,在代码中常简写为 regex、regexp 或 RE),是种用于匹配、查找、替换文本的强大工具。它能够以特定的模式匹配字符串,从而
    的头像 发表于 11-03 14:41 2915次阅读
    什么是<b class='flag-5'>正则表达式</b>?<b class='flag-5'>正则表达式</b>如何工作?哪些语法规则适用<b class='flag-5'>正则表达式</b>?

    GVIM正则表达式介绍和使用示例

    的Ken Thompson借用这个概念并将它应用到了文本编辑器中。后面正则表达式的说法进入到了大家常用的vi、vim、gvim当中。
    的头像 发表于 12-18 15:09 1162次阅读
    <b class='flag-5'>GVIM</b><b class='flag-5'>正则表达式</b>介绍和使用示例

    shell正则表达式学习

    正则表达式在计算机科学中,是指个用来描述或者匹配系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容
    发表于 07-25 17:18

    解析go语言正则表达式

    ]+)g", "11golang11") //true fmt.Println(match)上面我们直接使用了字符串匹配的正则表达式,但是对于其他的正则匹配任务,需要使用个优化过
    发表于 10-17 17:25

    深入浅出boost正则表达式

    什么是正则表达式正则表达式种用来描述定数量文本的模式。Regex代表Regular Express. 如果您不知道什么是正则表达式
    发表于 09-08 18:09 9次下载

    PHP正则表达式

    PHP正则表达式,PHP建设必备的的工具,初学者简单易懂快速入门,高手进阶手册。
    发表于 04-18 10:46 0次下载

    精通正则表达式

    详细的快速正则表达式的查询电子书,简单而丰富
    发表于 05-16 18:04 5次下载

    关于java正则表达式的用法详解

    正则表达式 正则表达式个用于文本搜索的文本模式。换句话说,在文本中搜索出现的模式。例如,可以用
    发表于 09-27 14:24 0次下载

    快速入门IPv6和正则表达式

    对于日常开发中只接触IPv4,并没有深入研究过正则表达式的开发者,面对IPv6和正则表达式,容易产生畏惧心理,觉得是两座难以翻越的大山。本文通过些表格整理对IPv6的表示方法,以及正则表达式
    的头像 发表于 03-30 09:31 8926次阅读
    快速入门IPv6和<b class='flag-5'>正则表达式</b>

    Python正则表达式的学习指南

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化
    发表于 09-15 08:00 0次下载
    Python<b class='flag-5'>正则表达式</b>的学习指南

    Python正则表达式指南

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化
    发表于 03-26 09:13 10次下载
    Python<b class='flag-5'>正则表达式</b>指南

    python正则表达式中的常用函数

    编译正则表达式模式,返回正则对象的模式。(可以把那些常用的正则表达式编译成正则表达式对象,这样可以提高
    的头像 发表于 03-18 16:12 1768次阅读

    Linux入门之正则表达式

    些约定好的匹配规则,但由于规则较多,可能比较容易忘记。 本文会先整理出所有的正则表达式以及其含义,接下来会利用grep命令,详细介绍每种正则表达式的使用方式,并给出案例。
    的头像 发表于 05-12 15:31 838次阅读
    Linux入门之<b class='flag-5'>正则表达式</b>

    shell脚本基础:正则表达式grep

    在Linux上有许多命令可以使用正则表达式,其中最常见的是grep命令和sed命令。正则表达式有多种类型,每种类型中可以使用的元字符类型不同。最常见的是基本正则表达式和扩展正则表达式
    的头像 发表于 05-29 09:29 1207次阅读
    shell脚本基础:<b class='flag-5'>正则表达式</b>grep

    Python中的正则表达式

    哈喽大家好,我是了不起,今天给大家讲Python中的正则表达式 在Python中,正则表达式种强大的文本处理工具,它可以用来匹配、搜索、替换文本。正则表达式
    的头像 发表于 06-21 16:52 955次阅读