转载自: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. kafka offset 设置

    from kafka import KafkaConsumer from kafka import TopicPartition from kafka.structs import OffsetAnd ...

  2. homewor

    <jsp;include>动作和指令的区别: 一:执行时间上: <%@ include file=”relativeURI”%>                   是在翻译阶 ...

  3. Gson转换时,Double转式化

    package com.mall.core; import java.lang.reflect.Type; import java.text.DecimalFormat; import com.goo ...

  4. 使用VisualSVN Server搭建SVN服务器[xyytit]

    使用 VisualSVN Server来实现主要的 SVN功能则要比使用原始的 SVN和 Apache相配合来实现源代码的 SVN管理简单的多,上手也没有那么复杂. 下面就看看详细的说明 Visual ...

  5. 操作符重载operator

    发现一篇好文: 转载: http://www.cnblogs.com/xiehongfeng100/p/4040858.html #include <iostream>#include & ...

  6. 数字组合 · Combination Sum

    不能重复: [抄题]: 给出一个候选数字的set(C)和目标数字(T),找到C中所有的组合,使找出的数字和为T.C中的数字可以无限制重复被选取. 例如,给出候选数组[2,3,6,7]和目标数字7,所求 ...

  7. queue,stack的相互实现

    Implement Queue using Stacks [抄题]: [思维问题]: [一句话思路]: 取头部.取出来的时候,用一个output来倒序 [输入量]:空: 正常情况:特大:特小:程序里处 ...

  8. runloop - 面试题

    2.

  9. [leetcode]174. Dungeon Game地牢游戏

    The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. ...

  10. Linux-——grep

    概念介绍 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...