oeasy教您玩转vim - 35 - # 正则表达
查找进阶
回忆上节课内容
- 实时搜索
: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/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 - # 正则表达的更多相关文章
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- oeasy教您玩转python - 006 - # hello world
Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...
- oeasy教您玩转linux-010110内容回顾
我们来回顾一下 我们都讲了什么?
随机推荐
- mySql脚本转换成sqlserver脚本(主流数据库的脚本都能转换,需要使用powerdesigner)
我使用的powerdesginer版本是16.5,只需要脚本文件就可以了,不需要安装mysql和sqlserver. 文件->反向工程->Database... 选择原脚本文件的数据库类型 ...
- Swoole 实践篇之结合 WebRTC 实现音视频实时通信方案
原文首发链接:Swoole 实践篇之结合 WebRTC 实现音视频实时通信方案 大家好,我是码农先森. 引言 这次实现音视频实时通信的方案是基于 WebRTC 技术的,它是一种点对点的通信技术,通过浏 ...
- JavaScript 中 toString 的奇妙使用
JavaScript 中的toString()方法,我们通常会一些其他类型的变量,转为字符串类型.但这里还有一些其他奇妙的用法. 不同的类型调用 toString() 会得到不同的结果.我们来一一分析 ...
- Qt-FFmpeg开发-视频播放【硬解码】(2)
Qt-FFmpeg开发-视频播放[硬解码] 目录 Qt-FFmpeg开发-视频播放[硬解码] 1.概述 2.实现效果 3.FFmpeg硬解码流程 4.主要代码 6.完整源代码 更多精彩内容 个人内容分 ...
- itest work 开源接口测试&敏捷测试管理平台 9.5.0 GA_u1,优化及修复关键 BUG
(一)itest work 简介 itest work (爱测试) 一站式工作站让测试变得简单.敏捷,"好用.好看,好敏捷" ,是itest wrok 追求的目标.itest w ...
- centos os7 和redhat 7 安装yum源失败的解决办法
首先看我的报错 [Errno 14] curl#6 - "Could not resolve host: mirrors.aliyun.com; Unknown error" yu ...
- C语言常用数学函数
目录 C语言常用数学函数(头文件#include "math.h") abs()函数 labs()函数 fabs()函数 floor()函数 floorf() floorl() c ...
- Python中多线程的简单使用
from threading import Timer import time def run1(): print(1) print(2) print(3) def run2(): print(&qu ...
- idea mapper xml 文件报红
在使用 idea 打开 mapper 文件,出现一下报红错误: 可以看到数据表和字段都是红色的. 解决方案 打开设置,window版本是打开Settings: 找到 Languages & F ...
- Vue Router 4与路由管理实战
title: Vue Router 4与路由管理实战 date: 2024/6/7 updated: 2024/6/7 excerpt: 这篇文章介绍了如何在Vue.js应用中利用Vue Router ...