常用的vim正则

参考Vim帮助文档:【pattern.txt】

现在网上讲vim正则的文章多如牛毛,但是大多都只是简单的复制粘贴,转载。甚至还有很明显的错误(比如斜杠反了)。其实vim的帮助手册已经很完善了,也有中文版,而且文章质量非常之高,附带跳转功能,这么好的资料不看,为什么还要在网上找有明显漏斗的资料呢?

很多手册里面也根本没提magic的概念,也没提其实+,?,=不能在vi中使用,也没提贪婪和非贪婪模式

下面我只列举一些我自己常用的正则命令,其他的大家可以通过自带的帮助文档查看(授人以鱼不如授人以渔)

:h pattern

基本用法

在vim里,正则一般就在两个地方使用:

  • 查找:/正则
  • 替换::s//g

注意::noh[lsearch]可以关闭高亮

默认vim是大小写敏感,如果要设置成不敏感:

    :set ignorecase

在vim手册里提到了magic的

某些字符在模式中是按本义出现的。它们匹配自身。然而,当前面有一个反斜杠时,这些字符具有特殊的含义。

另外一些字符即使没有反斜杠也代表特殊的意思。它们反而需要一个反斜杠来匹配按本义出现的自身。

一个字符是否按本义出现取决于 ‘magic’ 选项以及下面将解释的条目。

可以通过设定magic或者nomagic来设定,或者使用\m表示后面出现的模式采用magic模式,或者\M表示后面的模式不采用magic模式

魔术

有些字符有特殊作用,如果需要用它的本意,需要加上\转义

模式作用
$匹配行尾
^匹配行首
.匹配任何字符
*前面匹配原的任意次重复
|分隔可选分支
\转义 (按本义)

本身

模式作用
\$匹配$
\^匹配^
\.匹配.
\*匹配*
\\匹配\

注意:其他的? + = 在vi中都不能使用,所有这里没提,需要使用的自己看手册

字符类

字符说明
\s空白字符; \ 和 \
\S非空白字符: \s 之反
\d数位: [0-9]
\D非数位: [^0-9]
\x十六进制数位: [0-9A-Fa-f]
\X非十六进制数位: [^0-9A-Fa-f]
\o八进制数位: [0-7]
\O非八进制数位: [^0-7]
\w单词字符: [0-9A-Za-z_]
\W非单词字符: [^0-9A-Za-z_]
\a英文字母字符: [A-Za-z]
\A非英文字母字符: [^A-Za-z]
\n换行符
\_.匹配任意一个字符或换行符

范围匹配

注意里面的原则,是贪婪还是非贪婪

字符原则说明
[]1个匹配括号内的任一个字符(参考上面)
[^]1个匹配 除了 括号内的任何字符
\{n}尽可能多匹配n次数
\{n,m}尽可能多匹配n-m次,不指定:n默认为0,m默认为无穷
*尽可能多匹配0或无穷次
\{-}尽可能少匹配0或更多
\{-n,m}尽可能少匹配n-m的范围

常用模式

其实一般人能用到的真不多

一般无疑就是:

.* : 匹配所有字符(不含换行)

\_.*:匹配所有字符包括换行(在匹配大段含换行文字有奇效)

\s*:匹配所有空格(用来删除空行)

\d*:匹配所有数字

\w*: 匹配所有英文字母

分组

其实我觉得真正在日常生活中用的最多的,反而是这个分组功能,特别是在批量修改html标签的时候

用法:

  • 先用\(\) 括住需要保留的部分
  • 然后用\1 \2 ……依次选择需要之前保留的分组

比如我要把<div class='test'>的标签修改成<p>

:%s/<div.*'test'>\(\_.\{-}\)<\/div>/\1/g

your text

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值