共计 1483 个字符,预计需要花费 4 分钟才能阅读完成。
查找细节
回顾上节课内容🤔
咱们学习了
- 替换
substitude
- 替换
替换单行
:s/shiyanlou/oeasy
加上
range
:3,5s/shiyanlou/oeasy
:%s/shiyanlou/oeasy
加上
flag
:3,5s/shiyanlou/oeasy/g
多个替换:3,5s/shiyanlou/oeasy/gc
多个替换且一一确认
- 替换还是很不便的
- 然而我想替换中应用正则表达式
- 能够么?🤔
- 先回顾一下正则表达式模式匹配
模式 – 列举字符
[abcd]
- 示意匹配方括号中列举的
- 任意一个 字符
- abcd 中的任意一个字符
[a-z]
- 可用
中划线 -
` 示意字符范畴来缩小列举的 [a-d]
等价于[abcd]
- 可用
[^abcd]
- 示意匹配除方括号中字符以外的任意字符
- 除了
abcd
之外的任意字符
模式 – 罕用符号
.
- 等价于
[^\n]
- 除了换行符
(\n)
以外,示意匹配任意一个字符
- 等价于
\l
- 等价于
[a-z]
- 示意匹配 任意一个
小写字母
- 意思是 lowercase
- 等价于
\L
- 等价于
[^a-z]
- 示意匹配 任意一个
除小写字母外的其余字符
- 等价于
\u
- 等价于
[A-Z]
- 示意匹配 任意一个
大写字母
- 意思是 uppercase
- 等价于
\U
- 等价于
[^A-Z]
- 示意匹配
任意一个除大写字母外的其余字符
- 等价于
\w
- 等价于
[0-9A-Za-z_]
- 示意匹配
任意一个字母、数字、下划线
- 等价于
\W
- 等价于
[^0-9A-Za-z_]
- 示意匹配
任意一个字符除了字母、数字、下划线。
- 等价于
\d
- 等价于
[0-9]
- 示意匹配
任意一个数字
- 等价于
\D
- 等价于
[^0-9]
- 示意匹配
任意一个除数字外的其余字符
- 等价于
\x
- 等价于
[0-9A-Fa-f]
- 示意匹配
任意一个十六进制数字
- 等价于
\X
- 等价于
[^0-9A-Fa-f]
- 示意匹配
任意一个除十六进制数字外的其余字符
- 等价于
\s
- 包含两种
分隔符
空格
和tab
- 包含两种
帮忙手册
起止标记
而后咱们明确一下起止标记
^
示意匹配 输出字符串的开始地位 (行首)。$
示意匹配 输出字符串的完结地位 (行尾)。
–\<
示意匹配 单词词首。\>
示意匹配 单词词尾。
对应单词
:%s/four/4/g
- 把所有的
four
替换为4
- 把所有的
然而同时
twenty-four
- 被替换为
twenty-4
- 被替换为
- 这不合理
咱们须要 `:%s/\<four\>/4/g
\<four\>
匹配独立的four
- 这样替换就正当了
单词匹配
如果咱们要替换所有的以
a
结尾d
结尾的单词- 不容许在词中进行替换
oeasy
:%s/\<a.*d\>/oeasy/g
- 不容许在词中进行替换
add
、and
被替换band
不被替换
删除空行
- 首先咱们找到空行
/^$
- 从结尾
^
到结尾$
两头没货色 找到了当前,咱们来替换
%s/^$//
这并不能删除- 删完了之后空行还是存在
咱们能够应用
g
命令:g/^$/d
如果结尾结尾之间有空格怎么办?
/^\s*$
先找到匹配- \s 示意空格和 tab
- * 示意 0 - 任意多个空格或者 tab
:g/^\s*$/d
转义字符
如果咱们要删除所有
//
结尾的行- 这个
/
须要本义 - 先搜寻 /^//.*$
- 这个
:%s/^\/\/.*$//g
- 删除了正文内容
- 然而但空行还在
:g/^\/\/.*$/d
- 删除了空行
- 然而结尾有空格和 tab 的无奈删除
:g/^\s*\/\/.*$/d
- 把
\\
后面有空格和 tab 的也删除了
- 把
总结
- 进行了模式匹配批量替换的的操作
替换单词
:%s/\<a.*d\>/oeasy/g
转义字符
%s/^\/\/.*$/d
删除空行
:g/^\s*$//d
删除正文行
:g/^\s*\/\/.*$/d
- 替换还有一些什么玩法吗?🤔
- 下次再说 👋
[Github 地址] (https://github.com/overmind19…)
[Gitee 地址] (https://gitee.com/overmind198…)
[蓝桥实验楼 邀请码 FJWYIMGB] (https://www.lanqiao.cn/course…)
正文完