正则表达式
来源:互联网 发布:洛克人网络争霸 编辑:程序博客网 时间:2024/05/16 05:57
下面列举了一些常用的正则表达式,仅仅是为了方便记忆和查找:
1.首先是元字符,究竟什么是元字符呢?大家就把它理解成是正则表达式的关键字吧,它代表的不是符号本身。
例如:0/d{2,3}-/d{7,8}表示电话号码,前面以0开头的3到4位数字,中间是-,后面7到8位数字.这里面0代表的就是数字0,而/d是元字符代表的是一位数字,-代表的也是本身。
常用的元字符如下表:
字符
说明
.
除了换行外的任意的字符
/b
单词的开始或结束(是一个位置)
/d
一个数字
/w
匹配字母、数字、下划线、汉字
/s
匹配空白符号
^
字符串的开始
$
字符串的结束
2.转义字符/
既然想.本身是不代表.的那么我要是想匹配.怎么办?那就要用到转义字符/
例如/.就匹配.
3.重复
如果说你想匹配连续5个数字怎么办,写五个/d太麻烦了吧,事实上我们肯定不会那么做?我们可以使用/d{5}.
常用的表重复的符号如下表:
字符
说明
*
重复0到多次
+
重复1到多次
?
重复零次或一次
{n}
重复n次
{n,
重复n到多次
{n,m}
重复n到m次
4.字符类[]
如何表示abcd中的任何一个呢,可以用:[abcd]表示任意一个,不仅可以这样还可以用类似[0-9]表示0到9直接的任意的数字。
5.分支条件|
如果你要表示固定电话或者手机号码,因为固定电话是0/d{3,4}-/d{7,8}而手机号码是/d{13}。怎么办,这是可以用分支0/d{3,4}-/d{7,8}|/d{13}。用|分开,表示要么匹配前面类型要么匹配后面类型。
6.分组()
上面说过重复一个字符0次、一次或多次,那么如何重复多个字符呢,就是我们要说的分组,例如要匹配一段IP地址(简单的IP匹配):(/d{1,3}/.){3}/d{1,3}.其中()括起来的部分重复3次。
7.反义
上面说过匹配数字/d,那么如果想要匹配除了数字意外的字符呢?你可以使用/D.这就是要说的反义。
常用的反义:
字符
说明
/B
匹配不是单词的开始或结束位置
/D
不是数字的字符
/W
除字母、数字、汉字、下划线意外的字符
/S
不是空白字符的字符
[^x]
除了x以外的字符
[^abcd]
除了abcd以外的字符
8.断言
如果我们匹配一个以ch结尾的单词的前半部分怎么办?可以:/b/w+(?=ch/b).这个断言是出现在自身的后面叫零宽度正预测先行断言。要是匹配以wr开头单词的后半部分就可以是:(?=/bwr)/w+/b,这个叫零宽度正回顾后发断言。如果仅仅就是确保没有出现而不用去匹配,例如/d{5}(?!/d)就是匹配5个数字而且其后面不能再是数字,这种叫零宽度负预测先行断言;同样还有零宽度负回顾后发断言,例如(?<![a-z])/d前面不是小写字母的一个数字。
9.懒惰限定符?
如果有a.*b正则表达式,有字符accccbccb去匹配,达到的是accccbccb还是accccb呢?答案是前者,会找最长的。但是有时我们不希望这样,就可以使用懒惰限定符。比如上面的正则表达式可以这样a.*?b就可以解决问题了。
常用的有
字符
说明
*?
重复0到多次,但尽可能少的重复
+?
重复1到多次,但尽可能少的重复
??
重复0到一次,但尽可能少的重复
{n,m}?
重复n到m次,但尽可能少的重复
{n}?
重复n到多次,但尽可能少的重复
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 惠通面试题
- 无奈的尴尬
- S2DAO特性以及中文资料
- Fedora升级/安装Chromium(Chrome)总结
- 十二大著名法则 一、马太效应
- 正则表达式
- Assembly加载错误时,注意检查Assembly是否被GAC了?
- Unicode简介
- Papervision3D Essentials 第九章翻译 的下载地址
- 项目成败原则失败真的是成功之母
- 优化查询数量(.size()方法)
- GIS核心期刊资料等(精心收集资料)
- 面试题:男女映射问题
- How to read Qt documentation, basic concepts