Vim中的正则表达式

Vim中的正则表达式

1 元字符对照表

Perl 元字符Vim 元字符说明
\\元字符<—>普通字符
^^字符串的开始位置。vim中表示行首
$$字符串的结束位置。vim中表示行尾巴
**零次或多次
+\+一次或多次
?\?或者\=零次或一次
{n}\{n}匹配确定的 n 次
{n,}\{n,}至少匹配n 次
{n,m}\{n,m}最少匹配 n 次且最多匹配 m 次
?\{-}
\{-1,}
\{-,1}
跟在限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。vim中的三个相当于*? +? ??
..除换行符(\n、\r)之外的任何单个字符
(pattern)匹配 pattern 并获取这一匹配
(?:pattern)\%(atom)匹配 pattern 但不获取匹配结果
(?=pattern)\(pattern\)\@=正向肯定预查,标注pattern前面
(?!pattern)\(pattern\)\@!正向否定预查
(?<=pattern)\(pattern\)\@< =反向肯定预查
(?<!pattern)\(pattern\)\@<!反向否定预查
x|y\|或者,注意优先级最低
[xyz][abc]匹配所包含的任意一个字符
[^xyz][^abc]匹配未包含的任意字符
[a-z]匹配指定范围内的任意字符
[^a-z]匹配任何不在指定范围内的任意字符
\b\<和\>单词和空格间的位置。vim中的单词首和单词尾
\B匹配非单词边界
\cx匹配由 x 指明的控制字符
\d\d[0-9]
\D\D[^0-9]
\n换行符
\r回车符
\s\s匹配空白字符,等价于 [ \f\n\r\t\v]
\S\S匹配非空白字符
\w\w[A-Za-z0-9_]
\W\W[^A-Za-z0-9_]

2 Vim中的4种模式

Vim中包括magic(默认)nomagic两种模式

magic模式中,除了\ $ . * ^五个元字符,其他元字符都需要加反斜杠,可以用\m打开

nomagic模式中,除了\ $ ^三个元字符,其他元字符都需要加反斜杠可以用\M打开

此外,还有\v(very magic)\V(very nomagic)两种模式

very magic模式中,所有的元字符都不用加反斜杠

very nomagic模式中,所有的元字符都需要加反斜杠

3 替换

在vim中,可以实用:[range]s/正则表达式/替换字符串/[option]命令来替换文中的字符

在正则表达式中用\(\)括起来的内容,可以在替换字符串中用\1\2等引用

range

默认只在当前行中匹配

%表示在所有行中匹配(相当于1,$)

1,10表示从第1到第10行

.,$代表从当前行到本文件的末尾

option

g(global)表示全局匹配,否则只替换在行中匹配的第一个内容

c(comfirm)表示每次替换前询问

y:确认执行这个替换将将所有Vim替换成vim;

n:取消这个本交Vim替换命令的操作;

a:执行本次所有替换字符串操作且不再询问;

q:退出当前vim字符串替换操作而不做任何改动;

l:替换完当前匹配点后退出(last)

i(ignorecase)表示不区分大小写
n表示忽略替换操作,只统计匹配到的数量

4 函数式

也可以使用:s/替换字符串/\=函数式进行操作

在函数式中可以使用 submatch(1)submatch(2) 等来引用 \1\2 等的内容,而submatch(0)可以引用匹配的整个内容。

:%s/\<id\>/\=line(".")                              
" 将各行的 id 字符串替换为行号

:%s/^\<\w\+\>/\=(line(".")-10) .".". submatch(1)    
" 将每行开头的单词替换为 (行号-10).单词 的格式,
" 如第11行的 word 替换成 1. word
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值