转载自:http://www.xuebuyuan.com/806332.html;个人进行了一些修正和添加。

下面我们对 VIM 正则表达式进行介绍并会显示指出其与 Perl 正则的不同之处。

字符集

.         匹配任意一个字符
\w 匹配单词字母,等同于[0-9A-Za-z_]。
\W 匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]。
\t 匹配字符。
\a 所有的字母字符. 等同于[a-zA-Z]
\e
\t
\r
\b
\d 数字 [0-9]
\D 非数字 [^0-9]
\x 十六进制数 [0-9a-fA-F]
\X 非十六进制数 [^0-9a-fA-F]
\s 空白字符 [ ] ( 和),等同于[ /t]
\S 非空白字符 [^ ] (除 和 之外),等同于[^ /t]
\l 小写字母 [a-z]
\L 非小写字母 [^a-z]
\u 大写字母 [A-Z]
\U 非大写字母 [^A-Z]
\i 标识符字符 'isident'
\I 同于\i,但排除了数字
\k 关键字字符
\K 同\k,但排除数字
\p 可打印字符
\P 同\p,但排除数字
\f 文件名字符
\F 同\f,但排除数字
\_ 表示段行,他与以上的字符组合,如 \_s,\_a 。。。

范围

[abc]     匹配方括号中的任意一个字符。可以使用-表示字符范围,
[a-z0-9] 匹配小写字母和阿拉伯数字。
[^abc] 在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。

多选一

模式中的"或"操作符是"\|"。(因为vim输入正则表达式是在vim命令模式下输入的,自然会存在一些特殊字符[就像java里输入\要输入四个],故这里不能直接用|而应该用转义)
如:
/foo\|bar
(/是从上往下搜,?是从下往上搜)

分组
\(\)  (主要还是因为是在vim命令行里输入,而vim又不支持像bash一样用'pattern'括起来的字符串就只是字符串)
在替换的时候可以使用 \1、\2 。。。来引用 \(\) 捕获的内容
perl : () ,替换的时候要么\1要么$1,notepad++是后者。

量次(重复次数)

*              匹配0-任意个
*\{-\}(经过测试是-*才对) * 的惰性模式 perl : *?
\+ 匹配1 至任意个 perl : +
\+\{-\}(经过测试不行,但没测出是怎么写,可以用\{-1,}代替) \+ 的惰性模式 perl : +?
\? 匹配0-1个 perl : ?
\{n,m\}(后面的\是可以省略的) 匹配n-m个 perl : {n,m}
\{-n,m\} \{n,m\} 的惰性模式 perl : {n,m}?
\{n\} 匹配n个 perl : {n}
\{-n\} \{n\} 的惰性模式 perl : {n}?
\{n,\} 匹配n 至任意个 perl : {n,}
\{-n,\} \{n,\} 的惰性模式 perl : {n,}?
\{,m\} 匹配0- m 个 perl : {0,m}
元字符 说明
\* 匹配 * 字符
\. 匹配 . 字符
\/ 匹配 / 字符
\\ 匹配 \ 字符
\[ 匹配 [ 字符
很特别的是{就是普通字符,但是要模式匹配时反而要\{,为什么不做成和[一样呢?

位置

$         匹配行尾
^ 匹配行首
\< 匹配单词词首 perl : \b
\> 匹配单词词尾

函数式
:s/替换字符串//=函数式
在函数式中可以使用 submatch(1)、submatch(2) 等来引用 /1、/2 等的内容,而submatch(0)可以引用匹配的整个内容。

VIM 正则表达式详解及与 perl 正则的区别的更多相关文章

  1. Linux文本处理三剑客之grep及正则表达式详解

    Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...

  2. JavaScript正则表达式详解(一)正则表达式入门

    JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...

  3. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

  4. Java 正则表达式详解_正则表达式

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  5. Django url配置 正则表达式详解 分组命名匹配 命名URL 别名 和URL反向解析 命名空间模式

    Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11版本 ...

  6. Python正则表达式详解——re库

    一.简介 1.1.相关链接 官方文档: Python2:https://docs.python.org/2/library/re.html Python3:https://docs.python.or ...

  7. Django路由配置之正则表达式详解

    正则表达式详解 urls.py from django.conf.urls import url from . import views urlpatterns = [ url(r'^articles ...

  8. (转)linux正则表达式详解

    linux正则表达式详解 http://blog.csdn.net/wuliowen/article/details/64131815 1:什么是正则表达式: 简单的说,正则表达式就是处理字符串的方法 ...

  9. [转帖]xargs命令详解,xargs与管道的区别

    xargs命令详解,xargs与管道的区别 https://www.cnblogs.com/wangqiguo/p/6464234.html 之前一直说要学习一下 xargs 到现在为止也没学习.. ...

随机推荐

  1. eclipse使用ctrl+shift+F格式化代码失效

    通常情况出现这种问题是组合快捷键和别的软件快捷键冲突了, 最常见的是和搜狗输入法冲突, 在设置中找到搜狗输入法然后把冲突的快捷键取消掉就可以了.

  2. 第二次安装docker时,报Transaction check error的解决方法

    如果在yum安装软件的时候,出现了Transaction check error:这种情况,说明rpm软件包出现了冲突,解决方法是: vi /etc/yum.repos.d/epel.repo 将en ...

  3. Scala语言学习笔记(3)

    类 // 定义并使用类 class User val user1 = new User // 主体构造器(primary constructor) class Point(var x: Int, va ...

  4. vim使用方法:

    vim使用方法: 模式: 编辑模式.未编辑模式.命令行模式 i 插入形式进入编辑模式 a 增加 o 下行编辑 O 上行插入 : 进入命令行模式 esc 退出编辑模式 wq 保存文件 yy 复制 p 粘 ...

  5. EasyUI 删除

    <script type="text/javascript"> <!-- js --> /*================================ ...

  6. LOG4J spring与mybatis整合

    1.导入包log4j-1.2.17.jar <dependency>            <groupId>log4j</groupId>            ...

  7. 表单跳转到Struts2

    在使用表单跳转到Struts2时,路径一直不正确. login.html如下: <form action="login.do" method=post> 账号:< ...

  8. iOS下JS与OC互相调用(七)--Cordova 环境搭建

    Cordova大家可能比较陌生,但肯定听过 PhoneGap ,Cordova 就是 PhoneGap 被 Adobe 收购后所改的名字.它是一个可以让 JS 与原生代码互相通信的一个库,并且提供了一 ...

  9. python 安装scikit!!!

    首先,吐槽一下,真的是折腾好几天,一会更新这个,一会更新那个,总是各种奇葩问题诸如此类: cannot import check-build pip有新版本,需要更新(黄字) 其中scipy出错最多, ...

  10. Django的admin介绍

    我们看到我们创建一个默认的django的项目,他在project的urls有一个admin的url的路径 我们访问这个路径,他是一个登陆框,需要输入用户名和密码 我们就需要创建这个用户名和密码,如果你 ...