首页 > 其他分享 >Gvim基础操作(正则表达式)-02

Gvim基础操作(正则表达式)-02

时间:2023-01-08 10:55:34浏览次数:41  
标签:02 字符 匹配 删除 正则表达式 Gvim foo 替换

Gvim正则表达式

正则表达式在linux中使用非常广泛。主要是进行一些替换,在编写脚本的时候都会使用到。gvim、perl、sed、tcl中都会使用到。

Gvim正则表达式的使用

  • 搜索命令
    /正则表达式--搜索内容
  • :%s(替换)命令
    :%s/正则表达式/替换字符串/选项

元字符

  .  表示匹配任意字符
  [abc]  匹配方括号内的任意一个字符,可以使用-表示字符范围
  [a-z0-9]  表示匹配0-9及小写字母
  [^abc] ^表示匹配出来括号中的字符
  \d  匹配阿拉伯数字
  \D 匹配除了阿拉伯数字之外的字符
  \x 匹配十六进制数
  \X 匹配十六进制数字之外的任意字符
  \w 匹配任意数字字母下划线
  \W  匹配数字字母下划线之外的任意字符
  \t 匹配tab
  \s 匹配空白字符
  \S 匹配非空白字符

特殊字符

  \* 匹配*
  \. 匹配.
  \/  匹配/
  \\  匹配\
  \[  匹配[

表示数量的元字符

  * 匹配0-任意个
  \+  匹配1到任意个
  \?  匹配0-1个
  \{n,m}  匹配n-m个
  \{n,}  匹配n-任意个
  \{,n}  匹配0-n个

表示位置的符号

  $ 表示行尾
  ^ 表示行首
  \< 匹配单词词首
  \> 匹配单词词尾

实例

1.将所有的help或者是Help换为HELP

:%s/[Hh]elp/HElLP/g
  • substitute--执行的替换操作
  • global执行的是其他命令

2.使用单一空格替换一个或者多个空格

 :%s/ \+/ /g

3.删除没有字符的空行及有空字符的空行

:g/^\s*$/d       d表示删除操作

4.删除某些字符的行

:g/ERROR/d

5.删除每行的前导空格

:%s/^ *//g

6.在每行的开始插入>

:%s/^/->g

7.在所有的行尾加一个句号

:%s/$/。/g

8.删除以数字开头的行

:%s/^\d.*$//g

9.删除以[a,b,c]开头的行

:%s/^[a|b|c].*//g

替换成空格,还有行,删除行直接替换成空/xxx//g

10.删除重复的行

使用(和)符号括起来的正则表达式,搜索得到的内容可以在后面的正则表达式进行引用\1、\2表示前面搜索到的第一个和第二个

/\(a\+\)[^a]\+\1
头部搜索1-n个a,中间匹配1-n个非a,最后\1,表示使用之前的内容和头部一致
意义:搜索头和尾处a的个数相同的字符串
aabbbbaa  aaacccdhaaa    abbbaa(x)

删除重复的行

:%s/^\(.*\)\n\1$/1/g

11.将多行重复的行压缩至一行

:%s/\(.*\)\(\n\1\)+$/\1/g

复杂的例子

1.交换列表中所有连字符分割的条目的顺序

ABC:XYZ

:%s/\(.*\):\(.*\)/\2:\1/g

搜索两组进行替换

2.将所有方法中的foo(a,b,c)的实例更改为foo(b,a,c)

foo(bar(8),x+y+z,5)-->foo(x+y+z,bar(8),5)

:%s/foo(\([^,]*,\[^,]*,[^,]*\))/foo(\2,\1,\3)/g

3.查找test开头的后面为一个或者式多个空格,然后作为一个单词。将test和这个单词调换位置

:%s/\(test\)\s\+\(\w\+\)/\2 \1/g

函数式

格式

:%s/替换字符串/=函数式

例1:将各行的id字符串替换为行号

%s/\<id\>/\=line(".")

2.将每行开头的单词替换为(行号-10)

  :%S/^\<\W\+\>/\=(line(".")-10)

与perl正则表达式的区别

Sed用法

直接处理文件

1.删除所有的空行

sed '/^$/d' *.txt

2.删除所有只包含空格或者制表位的行

sed '/^[   ]*$/d' price.txt

3.删除所有的引号

sed 's/"//g' price.txt

正则表达式非常的灵活,同一种效果有不同的处理方式,这里只简单介绍常用的操作,其他操作后续补充

标签:02,字符,匹配,删除,正则表达式,Gvim,foo,替换
From: https://www.cnblogs.com/Icer-newer/p/17034125.html

相关文章

  • 2023 年openEuler 社区技术委员会增选,新增2位委员
    openEuler技术委员会于12月4日举行了2023年技术委员会增选。社区通过推举产生了候选人,在选举过程中,经过候选人自我陈述、提问答辩、现任委员投票等环节,来自Intel的......
  • 罗振宇2023“时间的朋友”跨年演讲原版PPT(附下载)
    大家好,我是文文,今天给大家分享罗振宇老师2023年跨年演讲的PPT原稿《罗振宇2023“时间的朋友“跨年演讲PPT.pdf》,本PPT已收录到小程序省时查报告中,大家可以到小程序省时查报......
  • 2022年中小企业数字化转型路径报告(附下载链接)
    大家好,我是文文,今天给大家分享一份干货报告《2022中小企业数字化转型路径报告.pdf》。关注数字化转型的伙伴别错过了!到小程序省时查报告中搜索“数字化”、“转型”、“中台......
  • 2022朝花夕拾-持续快速成长
    ​​2022年又过去了,学业繁忙好久没和大家聊天了。​​2020年终总结2020朝花夕拾-不务正业的大学生做了什么比赛?​​和​​2021年终总结2021朝花夕拾-我在校搞副业实现经济......
  • 【小5聊】回看2022,展望2023,分享我的年度总结和感想,在一个行业十年,坚持下去你就是这个
     2022年,已成为过去!2023年,TA已悄然而至!非常感谢提供的技术平台,很早就关注了C站,11年的时候,当时用的是163邮箱注册的账号,也是主要用来找资料看文章。18年的时候,由于旧账号早就......
  • 上市公司绿色专利申请数据(绿色创新数据1)(1990-2021)
    上市公司绿色专利申请数据(绿色创新数据1)(1990-2021)上市公司绿色专利申请数据(绿色创新数据1)(1990-2021)上市公司绿色专利申请数据(绿色创新数据1)(1990-2021) 最新版数据已整......
  • 2023年1月8日 学习软件工程
    提前发现缺陷在CodeReview阶段发现的逻辑错误、业务理解偏差、性能隐患等时有发生,CR可以提前发现问题。提高代码质量主要体现在代码健壮性、设计合理性、代码优雅性等......
  • 2021.09 ccf csp 第四题 收集卡牌
    2021.09ccfcsp第四题收集卡牌思路这题如果直接计算,因为不同的分类种数太多,枚举所有的分类情况是一个几乎不可能的复杂任务。但不同摸牌次数,不同已摸出牌种类的子问......
  • 2023.1.7(Atcoder Beginner Contest 284)
    A.HappyNewYear2023Linkhttps://atcoder.jp/contests/abc284/tasks/abc284_dStatement将给定的\(N\)分解成\(N=p^2\cdotq\)的形式,其中\(p,q\)为两个不......
  • Gvim基础操作-01
    Gvim基础操作进行代码或者是文本、脚本都要使用到文本编辑工具。vi是visual的缩写,其意为可视化。它是Unix系统文本编辑的标准工具。利用光标在屏幕上的移动,用户可以方便......