欢迎光临散文网 会员登陆 & 注册

oeasy教您玩转vim - 35 - # 正则表达

2021-09-02 07:26 作者:oeasy  | 我要投稿

查找进阶

回忆上节课内容🤔

  • 实时搜索 :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 中间有任意多个字符怎么办?

    • /c.*mcm 中间出现 0 到任意多个 .(任意字符)

    • 如果我希望出现任意多次的是小写字母怎么办?

    • /c[a-z]*m 这样就是中间出现任意多个 [a-z]小写字母

    • 使用 * 通配符

    • /a* 意味着出现 0 到任意多个 a

  • :g/^\s*$/d 删除搜有只有空格和tab的行

    • \s代表空格和tab

词头词尾

  • ^$ 分别代表着行头和行尾

  • 再回一下词头词尾

  • 如果我想找出单词的开头结尾是某些字符的怎么办呢?

  • - `\<` 意味着单词开头
        - `\<a` 意味着 `a` 开头的单词
    - `\>`意味着单词结尾
        - `b\>` 意味着 `b` 结尾的单词
    - `\<a[a-z]*b\>`
        - 意味着以 a 开头,b 结尾,ab 之间可能有零到任意多个小写字符的单词

搜索历史

  • 我们使用 *# 查找的时候就自动给加上这个词头词尾

    • 可以*之后

    • /

    • 配合上下方向键看到

    • 曾经的搜索记录

推荐网站

  • 推荐一个好玩的网站

  • https://blog.robertelder.org/regular-expression-visualizer/

  • 可以可视化的观察正则匹配的过程

总结

  • 行头行尾

    • ^ 意味着行开头

    • $ 意味着行结尾

  • 任意字符

    • . 代表任意字符

    • [a-z] 代表任意小写字母

  • 字符数量

    • * 代表 0 到任意多个前字符

    • + 代表 1 到任意多个前字符

    • ? 代表 0 或 1 个前字符

  • 行头行尾

    • \< 意味着单词开头

    • \> 意味着单词结尾

  • 正则表达式的初步规则先介绍到这里

  • 我们掌握了在 vi 中光标运动的各种方法

  • 但如何编辑文本呢?🤪

  • 下次再说 *

[Github地址] (https://github.com/overmind1980/vimtutorial)
[Gitee地址] (https://gitee.com/overmind1980/vimtutorial)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)


oeasy教您玩转vim - 35 - # 正则表达的评论 (共 条)

分享到微博请遵守国家法律