首页 > 编程相关 > 【转】一个不错的VIM正则对照表

【转】一个不错的VIM正则对照表

2011年7月13日 sigma 发表评论 阅读评论

原文地址

序号 入门教程 Vim 备注
1 b是正则表达式规定的一个特殊代码……代表着单词的开头或结尾,也就是单词的分界处 没有直接对应的。

<,表示单词的起始;

>,表示单词的结

要查找单词hi,要用
2 +则匹配重复1次或更多次 {1,} 1 或更多,同 + d+匹配1个或更多连续的数字,Vim用 d+
3 ? 重复零次或一次 {0,1} 0 或 1,同 =
4 (?0d{2}[) -]?d{8}

这个表达式可以匹配几种格式的电话号码

(=0d{2}[) -]=d{8}
5 如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开 在一个查找模式中,”或” 运算符是 “|”
6 b(w+)bs+1b

可以用来匹配重复的单词

<(w+)s+1>
7 bw+(?=ingb),匹配以ing结尾的单词的前面部分(除了ing以外的部分) <w+(ing)@= Vim称为:零宽度匹配前面的匹配原
8 (?<=bre)w+b 会匹配以re开头的单词的后半部分(除了re以外的部分) ( 零宽度反向匹配。要求前面的匹配原紧贴在后面的模式之前匹配
9 假如你想要给一个很长的数字中每三位间加一个逗号(当然是从右边加起了)

((?<=d)d{3})+b

((d)@<=d{3})+>
10 (?<=s)d+(?=s)匹配以空白符间隔的数字 (s)@<=d+(s)@=
11

匹配包含后面不是字母u的字母q的单词

bw*q(?!u)w*b

<w*q(u)@!w*> 零宽度否匹配,亦即,要求前面的匹配原在当前位置_不_匹配
12 d{3}(?!d)匹配三位数字,而且这三位数字的后面不能是数字 d{3}(d)@!
13 b((?!abc)w)+b匹配不包含连续字符串abc的单词 <(((abc)@!)w)+>
14 (? ([a-z])@ 零宽度反向否匹配,要求前面的匹配原_不_紧贴在其后的模式之前匹配
15 (?<=<(w+)>).*(?=</1>)匹配不包含属性的简单HTML标签内里的内容

(<3>)@<=.*(</(w+)>)@=


表达式写出来 了,验证可用,但不明白为什么是3。

本文作者: Sigma    在新浪微博关注SigmaSigmaWeibo    RSS订阅本博客
本文链接: http://mblog.sigma.me/2011/07/13/vim-regular.html
本博客采用知识共享署名—非商业性-禁止演绎使用3.0协议进行许可,转载请保留作者和原文链接。

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.

无觅相关文章插件,快速提升流量