-
Gvim基础操作(正则表达式)-02
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
正则表达式非常的灵活,同一种效果有不同的处理方式,这里只简单介绍常用的操作,其他操作后续补充
__EOF__
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式