vim正则用法
来源:互联网 发布:如何阅读一本书 知乎 编辑:程序博客网 时间:2024/05/16 01:46
Vim中的正则表达式功能很强大,如果能自由运用,会带来很愉快的体验。
一、vim编辑的常用命令
s
d
/ ?
vim的这些常用命令可以配合表达式使用。
二、元字符
元字符是具有特殊意义的字符。使用元字符可以表达任意字符、行首、行 尾、某几个字符等意义。
元字符一览
元字符 说明
. 匹配任意一个字符
[abc] 匹配方括号中的任意一个字符。可以使用-表示字符范围,
如[a-z0-9]匹 配小写字母和阿拉伯数字。
[^abc] 在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。
\d 匹配阿拉伯数字,等同于[0-9]。
\D 匹配阿拉伯数字之外的任意字符,等同于[^0-9]。
\x 匹配十六进制数字,等同于[0-9A-Fa-f]。
\X 匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]。
\w 匹配单词字母,等同于[0-9A-Za-z_]。
\W 匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]。
\t 匹配<TAB>字符。
\s 匹配空白字符,等同于[ \t]。
\S 匹配非空白字符,等同于[^ \t]。
\u 匹配大写字符
\U 匹配非大写字符包括非字母符号
\l 匹配小写字母
\L 匹配非小写字母的所有符号
另外,如果要查找字符 *、.、/等,则需要在前面用 \ 符号来进行转义。
元字符 说明
\* 匹配 * 字符。
\. 匹配 . 字符。
\/ 匹配 / 字符。
\\ 匹配 \ 字符。
\[ 匹配 [ 字符。
表示数量的元字符
元字符 说明
* 匹配0-任意个
\+ 匹配1-任意个\? 匹配0-1个
\{n,m} 匹配n-m个
\{n} 匹配n个
\{n,} 匹配n-任意个
\{,m} 匹配0-m个
表示位置的符号
元字符 说明
$ 匹配行尾
^ 匹配行首
\< 匹配单词词首
\> 匹配单词词尾
使用例
/char\s\+[A-Za-z_]\w*;" 查找所有以char开头,之后是一个以上的空白,
" 最后是一个标识符和分号
/\d\d:\d\d:\d\d " 查找如 17:37:01 格式的时间字符串
:g/^\s*$/d " 删除只有空白的行
:s/\<four\>/4/g " 将所有的four替换成4,但是fourteen中的four不替换
三、替换变量
在正规表达式中使用
使用例
/
" 如 aabbbaa,aaacccaaa,但是不匹配 abbbaa
:s/
:s/
四、函数式
在替换命令 s/// 中可以使用函数表达式来书写替换内容,格式为
:s/替换字符串/\=函数式
在函数式中可以使用 submatch(1)、submatch(2) 等来引用 \1、\2 等的内容,而submatch(0)可以引用匹配的整个内容。
使用例
:%s/\<id\>/\=line(".") " 将各行的 id 字符串替换为行号
:%s/^\<\w\+\>/\=(line(".")-10) .".". submatch(1) " 将每行开头的单词替换为 (行号-10).单词 的格式,
" 如第11行的 word 替换成 1. word
五、vi 正则表达式练习
vim 命令模式,输入
:%s/.*src=”([^"]*)”[^>]*>/[img]1[/img]/g
替换为
[img ]gu.jpg[ /img]
[img ]os.jpg[ /img]
[img ]hu.jpg[ /img]
[img ]ang.jpg[ /img]
解释如下:
:
命令执行状态
%s
表示查找并替换
%s/a/b/g
a 被查找的字符串(正则匹配);b 要替换成的文字;g 表示全局搜索替换(否则只处理找到的第一个结果)
([^"]*)
表示非引号的字符N个;外面 () 表示后面替换要用(用 1,…,9等引用)
[/img]
/ 需要被 转义
相关资料:
vi 命令 作用
:%s/ */ /g 把一个或者多个空格替换为一个空格。
:%s/ *$// 去掉行尾的所有空格。
:%s/^/ / 在每一行头上加入一个空格。
:%s/^[0-9][0-9]* // 去掉行首的所有数字字符。
:%s/b[aeio]g/bug/g 将所有的bag、beg、big和bog改为bug。
- vim正则用法
- VIM正则
- vim用法
- vim用法
- vim 用法
- vim用法
- vim 用法
- vim 用法
- Vim 用法
- vim用法
- vim 用法
- vim 用法
- Vim用法
- VIM的正则表达式
- vim正则表达式
- vim 正则表达式
- vim 正则表达式
- VIM正则表达式替换
- java程序转exe
- 关于排版
- 在swift中, 如何桥接OC文件
- Google Guava缓存实现接口的限流
- Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片的优缺点比较
- vim正则用法
- 静态数据成员的Point 类
- 异常处理
- Java的内存泄漏
- iOS使用security.framework实现RSA加解密
- 静态成员应用
- 新建类无快捷提示?试试Xcode 8吧
- Java代码的形式创建一个ProgressBar。seekbar样式。
- javascript创建对象