VIM 正则表达式详解及与 perl 正则的区别
转载自: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 正则的区别的更多相关文章
- Linux文本处理三剑客之grep及正则表达式详解
Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...
- JavaScript正则表达式详解(一)正则表达式入门
JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- Java 正则表达式详解_正则表达式
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- Django url配置 正则表达式详解 分组命名匹配 命名URL 别名 和URL反向解析 命名空间模式
Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11版本 ...
- Python正则表达式详解——re库
一.简介 1.1.相关链接 官方文档: Python2:https://docs.python.org/2/library/re.html Python3:https://docs.python.or ...
- Django路由配置之正则表达式详解
正则表达式详解 urls.py from django.conf.urls import url from . import views urlpatterns = [ url(r'^articles ...
- (转)linux正则表达式详解
linux正则表达式详解 http://blog.csdn.net/wuliowen/article/details/64131815 1:什么是正则表达式: 简单的说,正则表达式就是处理字符串的方法 ...
- [转帖]xargs命令详解,xargs与管道的区别
xargs命令详解,xargs与管道的区别 https://www.cnblogs.com/wangqiguo/p/6464234.html 之前一直说要学习一下 xargs 到现在为止也没学习.. ...
随机推荐
- 基于OpenGL编写一个简易的2D渲染框架-06 编写一个粒子系统
在这篇文章中,我将详细说明如何编写一个简易的粒子系统. 粒子系统可以模拟许多效果,下图便是这次的粒子系统的显示效果.为了方便演示,就弄成了一个动图. 图中,同时显示了 7 种不同粒子效果,看上去效果挺 ...
- Spring 中的国际化Message的简单例子(ApplicationContext) 不跟框架集成的版本
首先,建立一个描述message的XML文件,名为messages.xml <?xml version="1.0" encoding="UTF-8" ...
- Html解析类的新选择CsQuery
今天在做一个html解析的方法,以前用HtmlAgilityPack或Winista.HTMLParser. 现在发现了一个巨好用的项目叫CsQuery,这货据说不仅能解析html还能提取css. 选 ...
- 显示AVI文件的桢数
procedure TForm1.Button1Click(Sender: TObject);begin MediaPlayer1.TimeFormat := tfFrames; ShowMess ...
- JS中的继承实现方式
第一种:通过prototype来实现 prototype.html <!DOCTYPE html><html lang="en"><head> ...
- TensorFlow RNN MNIST字符识别演示快速了解TF RNN核心框架
TensorFlow RNN MNIST字符识别演示快速了解TF RNN核心框架 http://blog.sina.com.cn/s/blog_4b0020f30102wv4l.html
- cmd 命令相关
计算相关进程数: tasklist|find /i "cmd.exe" 安装git的可以 tasklist|find /i "cmd.exe" | wc -l
- DESeq2包
1)简介: DESeq2-package: for differential analysis of count data(对count data 做差异分析) 2)安装 if("DESeq ...
- 参考 - spring boot 静态变量注入值
参考http://blog.csdn.net/zhayuyao/article/details/78553417 @Component public class A { private static ...
- VB 共享软件防破解设计技术初探(一)
VB 共享软件防破解设计技术初探(一) ×××××××××××××××××××××××××××××××××××××××××××××× 其他文章快速链接: VB 共享软件防破解设计技术初探(二)http ...