转载自: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. 搭建Turbine时,报错误:Property or field 'default' cannot be found on object of type 'com.netflix.appinfo.InstanceInfo'

    Spring Boot + Eureka Server + Hystrix with Turbine: empty turbine.stream 配置的时候遇到了问题: Property or fie ...

  2. 修改rabbitmq Web UI 监控页面的端口

    在前几天工作中遇到一个问题,部署服务器,需要用rabbitmq自带的一个web UI监控组件,但是15672的端口没有对外映射.尝试了几种办法.开始修改rabbitmq.config,rabbitmq ...

  3. Apache Hive 执行HQL语句报错 ( 10G )

    # 故障描述: hive > , ) as uuid, count(distinct(request_body["uuid"])) as count from log_bft ...

  4. Python 3 学习笔记(1)

    Python 3.6 运算符 + - * / 四则运算 % 求余 **乘方 // 用于整除 字符串 字符串用单引号或双引号括起来. 三引号(单引号或双引号均可)表示多行字符串,行末加反斜杠表示换行不算 ...

  5. (3)shiro自定义realm

    上面一章说到shiro的认证和授权最底层就是调用realm的getAuthorizationInfo(获取用户的角色和资源)和getAuthenticationInfo(校验账号密码是否正确)两个方法 ...

  6. LPSN获取菌python脚本

    本文转载于https://mp.weixin.qq.com/s?__biz=MzIxNzEzODA5NQ==&mid=2649373408&idx=1&sn=232c2cb36 ...

  7. jQuery源码解读二(apply和call)

    一.apply方法和call方法的用法: apply方法: 语法:apply(thisObj,[,argArray]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象. 说明:如果argArr ...

  8. sharepoint 调查问卷权限设置

    参考网址:http://www.cnblogs.com/mybi/archive/2011/04/18/2019935.html 按文章设置后发现访问时提示没有权限. 于是把新权限(问卷回复)的权限组 ...

  9. overflow: scroll

    overflow: scroll在安卓5.0的情况下,不论内容是否填满屏幕,都会强制解析出滚动条,所以最好是使用overflow: auto

  10. 判断Javascript对象是否为空

    判断普通javascript对象是否为空(含有可枚举的属性,自有的.继承的都可以),可使用jQuery 3.2.1版的isEmptyObject()方法: isEmptyObject: functio ...