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

亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述oeasy教您玩转vim - 35 - # 正则表达相关的知识,希望能为你提供帮助。
查找进阶 回忆上节课内容????

  • 实时搜索 :set incsearch
  • 大写小写 ignorecase
  • 查找当前单词
    • < kbd> *< /kbd> 正向按单词
    • < kbd> #< /kbd> 反向按单词
    • < kbd> g*< /kbd> 正向不按单词
    • < kbd> g#< /kbd> 反向不按单词
  • 继续查找
    • < kbd> n< /kbd> 保持方向
    • < kbd> N< /kbd> 改变方向
  • 这个搜索可以做一些模糊匹配吗?
  • 应该在哪里查询呢?
模式匹配
  • :h / 可以找到关于搜索相关的帮助
    • 我们可以打开 patterns.txt
    • 找到关于比较简单的解释 03.9 的超链接位置
    • < kbd> ctrl< /kbd> + < kbd> ]< /kbd> 跳转文档
oeasy教您玩转vim - 35 - # 正则表达

文章图片

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

文章图片

  • /include 匹配所有的 include
  • ^ 意味着行开头
    • /^include 只匹配 include 在行头的
    • /^# 只匹配 # 在行头的
  • $ 意味着行结尾
    • /the.$ 只匹配 the. 在行尾的
    • /^End$ 匹配行头接着 End,然后就是行尾的一行
  • :g/^$/d 删除所有空行
  • 行头行尾和词头词尾很像
  • ^ 本身就是跳到行头
  • $ 本身就是跳到行尾
任意字符
  • . 可以匹配任意字符,作为通配符来使用
  • 比如 /c.m
    • 第一个字符为 c
    • 第二个字符为 . 就是任意字符
    • 第三个字符为 m
  • 可以匹配 company 中的 com
  • 也可以匹配 camera 中的 cam
oeasy教您玩转vim - 35 - # 正则表达

文章图片

任意字符
  • ter. 匹配 ter 后面加一个字符
oeasy教您玩转vim - 35 - # 正则表达

文章图片

  • 如果想要正常匹配一个真的 .
    • 就要加上一个反斜杠 \\
    • 写做 \\.
    • 使用反斜杠 \\ 转义之后
      • .就不再代表任意字符了
      • 比如搜索 /ter\\. 就是寻找 ter.
更多字符
  • . 代表任意字符
    • /c.m 匹配 c和m中间有一个字符 的情况
    • /c..m 匹配 c和m中间有两个字符 的情况
    • /c...m 匹配 c和m中间有三个字符 的情况
  • 如果我想查找 c 和 m 中间有任意多个字符怎么办?
    • 使用 * 通配符
    • /a* 意味着出现 0 到任意多个 a
    • /c.*mcm 中间出现 0 到任意多个 .(任意字符)
    • 如果我希望出现任意多次的是小写字母怎么办?
      • /c[a-z]*m 这样就是中间出现任意多个 [a-z]小写字母
  • :g/^s*$/d 删除搜有只有空格和tab的行
    • s代表空格和tab
oeasy教您玩转vim - 35 - # 正则表达

文章图片

词头词尾
  • ^$ 分别代表着行头和行尾
  • 再回一下词头词尾
  • 如果我想找出单词的开头结尾是某些字符的怎么办呢?
oeasy教您玩转vim - 35 - # 正则表达

文章图片

  • \\& lt; 意味着单词开头
    • /\\& lt; a 意味着 a 开头的单词
  • \\& gt; 意味着单词结尾
    • /\\& gt; b 意味着 b 结尾的单词
  • \\& lt; a[a-z]*\\& gt; b
    • 意味着以 a 开头,b 结尾,ab 之间可能有零到任意多个字符的单词
搜索历史
  • 我们使用 *# 查找的时候就自动给加上这个词头词尾
    • 可以 < kbd> * < /kbd> 之后
    • < kbd> /< /kbd>
    • 配合上下方向键看到
    • 曾经的搜索记录
oeasy教您玩转vim - 35 - # 正则表达

文章图片

推荐网站
  • 推荐一个好玩的网站
  • https://blog.robertelder.org/regular-expression-visualizer/
  • 可以可视化的观察正则匹配的过程
总结
  • 行头行尾
    • ^ 意味着行开头
    • $ 意味着行结尾
  • 任意字符
    • . 代表任意字符
    • [a-z] 代表任意小写字母
  • 字符数量
    • * 代表 0 到任意多个前字符
    • + 代表 1 到任意多个前字符
    • ? 代表 0 或 1 个前字符
  • 行头行尾
    • \\& lt; 意味着单词开头
    • \\& gt; 意味着单词结尾
  • 正则表达式的初步规则先介绍到这里
  • 我们掌握了在 vi 中光标运动的各种方法
  • 但如何编辑文本呢?????
  • 下次再说 ????
【oeasy教您玩转vim - 35 - # 正则表达】[Github地址] (https://github.com/overmind1980/vimtutorial)
[Gitee地址] (https://gitee.com/overmind1980/vimtutorial)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)

    推荐阅读