查找进阶
回顾上节课内容🤔
- 实时搜寻
:set incsearch
- 大写小写
ignorecase
-
查找以后单词
- * 正向按单词
- # 反向按单词
- g* 正向不按单词
- g# 反向不按单词
-
持续查找
- n 放弃方向
- N 改变方向
- 这个搜寻能够做一些含糊匹配吗?
- 应该在哪里查问呢?
模式匹配
-
:h /
能够找到对于搜寻相干的帮忙- 咱们能够关上
patterns.txt
- 找到对于比较简单的解释
03.9
的超链接地位 - ctrl + ] 跳转文档
- 咱们能够关上
行头行尾
/include
匹配所有的include
-
^
意味着行结尾/^include
只匹配include
在行头的/^#
只匹配#
在行头的
-
$
意味着行结尾/the.$
只匹配the.
在行尾的/^End$
匹配行头接着End
,而后就是行尾的一行
:g/^$/d
删除所有空行- 行头行尾和词头词尾很像
^
自身就是跳到行头$
自身就是跳到行尾
任意字符
.
能够匹配任意字符,作为通配符来应用-
比方
/c.m
- 第一个字符为
c
- 第二个字符为
.
就是任意字符 - 第三个字符为
m
- 第一个字符为
- 能够匹配
company
中的com
- 也能够匹配
camera
中的cam
任意字符
ter.
匹配ter
前面加一个字符
-
如果想要失常匹配一个真的
.
- 就要加上一个反斜杠
\
- 写做
\.
-
应用反斜杠
\
本义之后.
就不再代表任意字符了- 比方搜寻
/ter\.
就是寻找ter.
- 就要加上一个反斜杠
更多字符
-
.
代表任意字符/c.m
匹配c 和 m 两头有一个字符
的状况/c..m
匹配c 和 m 两头有两个字符
的状况/c...m
匹配c 和 m 两头有三个字符
的状况
-
如果我想查找 c 和 m 两头有任意多个字符怎么办?
- 应用
*
通配符 -
/a*
意味着呈现 0 到任意多个 a/c.*m
在c
和m
两头呈现 0 到任意多个.
(任意字符)-
如果我心愿呈现任意屡次的是小写字母怎么办?
/c[a-z]*m
这样就是两头呈现任意多个[a-z] 小写字母
了
- 应用
-
:g/^s*$/d
删除搜有只有空格和 tab 的行s
代表空格和 tab
词头词尾
^
和$
别离代表着行头和行尾- 再回一下词头词尾
- 如果我想找出单词的结尾结尾是某些字符的怎么办呢?
-
\<
意味着单词结尾/\<a
意味着a
结尾的单词
-
\>
意味着单词结尾/\>b
意味着b
结尾的单词
-
\<a[a-z]*\>b
- 意味着以 a 结尾,b 结尾,ab 之间可能有零到任意多个字符的单词
搜寻历史
-
咱们应用
*
、#
查找的时候就主动给加上这个词头词尾- 能够 * 之后
- /
- 配合高低方向键看到
- 已经的搜寻记录
举荐网站
- 举荐一个好玩的网站
- https://blog.robertelder.org/…
- 能够可视化的察看正则匹配的过程
总结
-
行头行尾
^
意味着行结尾$
意味着行结尾
-
任意字符
.
代表任意字符[a-z]
代表任意小写字母
-
字符数量
*
代表 0 到任意多个前字符+
代表 1 到任意多个前字符?
代表 0 或 1 个前字符
-
行头行尾
\<
意味着单词结尾\>
意味着单词结尾
- 正则表达式的初步规定先介绍到这里
- 咱们把握了在 vi 中光标静止的各种办法
- 但如何编辑文本呢?🤪
- 下次再说 👋
[Github 地址] (https://github.com/overmind19…)
[Gitee 地址] (https://gitee.com/overmind198…)
[蓝桥实验楼 邀请码 FJWYIMGB] (https://www.lanqiao.cn/course…)