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

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

Gvim基础操作(正则表达式)-02的更多相关文章

  1. Gvim基础操作-01

    Gvim基础操作 进行代码或者是文本.脚本都要使用到文本编辑工具. vi是visual的缩写,其意为可视化.它是Unix系统文本编辑的标准工具.利用光标在屏幕上的移动,用户可以方便的建立.修改或者插入 ...

  2. ES5基础之正则表达式02:范围类、预定义类和边界字符

    1.范围类 //元字符 /* * 正则表达式由两种基本字符类型组成 * 1.原义文本字符:例如123abc * 2.元字符:元字符是在正则表达式中有特殊含义的非字母字符 */ //常见特殊符号:. * ...

  3. 实训任务02:Hadoop基础操作

    实训任务02:Hadoop基础操作 班级            学号               姓名 实训1:创建测试文件上传HDFS,并显示内容 需求说明: 在本地计算机上创建测试文件helloH ...

  4. 《Genesis-3D开源游戏引擎-官方录制系列视频教程:基础操作篇》

    注:本系列教程仅针对引擎编辑器:v1.2.2及以下版本 G3D基础操作   第一课<G3D编辑器初探> G3D编辑器介绍,依托于一个复杂场景,讲解了场景视图及其基本操作,属性面板和工具栏的 ...

  5. MYSQL 基础操作

    1.MySQL基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t1; --创建一个和t1一样的表,用like(表结构也一样 ...

  6. (大数据工程师学习路径)第一步 Linux 基础入门----正则表达式基础

    介绍 虽然我们这一节的标题是正则表达式,但实际这一节只是介绍grep,sed,awk这三个命令,而正则表达式作为这三个命令的一种使用方式(命令输出中可以包含正则表达式).正则表达式本身的内容很多,要把 ...

  7. 黑马程序员:Java基础总结----正则表达式

    黑马程序员:Java基础总结 正则表达式   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 正则表达式 import  java.util.regex.*; 符合一定规 ...

  8. 【Linux 操作系统】Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用

    . : 关机, 如果将Linux默认运行等级设置为0, 系统将无法启动; -- : 多用户模式, 允许使用网络文件系统, 一般不使用图形界面登陆就是这种模式; -- : 多用户图形界面模式, 该模式下 ...

  9. python基础之 正则表达式,re模块

    1.正则表达式 正则表达式:是字符串的规则,只是检测字符串是否符合条件的规则而已 1.检测某一段字符串是否符合规则 2.将符合规则的匹配出来re模块:是用来操作正则表达式的 2.正则表达式组成 字符组 ...

随机推荐

  1. 学生管理系统(C语言简单实现)

    仅供借鉴.仅供借鉴.仅供借鉴(整理了一下大一C语言每个章节的练习题.没得题目.只有程序了) 文章目录 1 .实训名称 2.实训目的及要求 3. 源码 4.实验小结 1 .实训名称 实训12:文件 2. ...

  2. 如何规范App广告的隐私获取,让用户拥有更多知情权?

    随着互联网的不断普及,越来越多老百姓使用智能设备触达互联网.但用户经常发现自己无意间提到的东西,打开App就收到相关产品的广告推送,甚至有人怀疑手机App是通过麦克风来窃取自己平时聊天信息中的关键词进 ...

  3. Android 13 新特性及适配指南

    Android 13(API 33)于 2022年8月15日 正式发布(发布时间较往年早了一些),正式版Release源代码也于当日被推送到AOSP Android开源项目. 截止到笔者撰写这篇文章时 ...

  4. 知识图谱顶会论文(ACL-2022) ACL-SimKGC:基于PLM的简单对比KGC

    12.(2022.5.4)ACL-SimKGC:基于PLM的简单对比KGC 12.(2022.5.4)ACL-SimKGC:基于PLM的简单对比KGC 摘要 1.引言 2.相关工作 2.1 知识图补全 ...

  5. 【JavaWeb】学习笔记——JSP

    概念 全称:Java Server Pages, Java服务端页面 描述:一种动态的网页技术,可以在其中定义HTML.JS.CSS等静态内容,以及Java代码的动态内容 说明:JSP = HTML ...

  6. 「MySQL高级篇」explain分析SQL,索引失效&&常见优化场景

    大家好,我是melo,一名大三后台练习生 专栏回顾 索引的原理&&设计原则 欢迎关注本专栏:MySQL高级篇 本篇速览 在我们上一篇文章中,讲到了索引的原理&&设计原则 ...

  7. golang中的锁竞争问题

    索引:https://www.waterflow.link/articles/1666884810643 当我们打印错误的时候使用锁可能会带来意想不到的结果. 我们看下面的例子: package ma ...

  8. VS使用正则表达式删除程序中的空行

    Ctrl+H; 需要替换的正则表达式 ^(?([^\r\n])\s)*\r?$\r?\n

  9. python(27)反射机制

    1. 什么是反射? 它的核心本质其实就是基于字符串的事件驱动,通过字符串的形式去操作对象的属性或者方法 2. 反射的优点 一个概念被提出来,就是要明白它的优点有哪些,这样我们才能知道为什么要使用反射. ...

  10. Docker | 专栏文章整理🎉🎉

    Docker Docker系列文章基本已经更新完毕,这是我从去年的学习笔记中整理出来的. 笔记稍微有点杂乱.随意,把它们整理成文章花费了不少力气.整理的过程也是我的一个再次学习的过程,同时也是为了方便 ...