正则表达式

来源:互联网 发布:洛克人网络争霸 编辑:程序博客网 时间:2024/05/16 05:57

下面列举了一些常用的正则表达式,仅仅是为了方便记忆和查找:

1.首先是元字符,究竟什么是元字符呢?大家就把它理解成是正则表达式的关键字吧,它代表的不是符号本身。

例如:0/d{2,3}-/d{7,8}表示电话号码,前面以0开头的34位数字,中间是-,后面78位数字.这里面0代表的就是数字0,而/d是元字符代表的是一位数字,-代表的也是本身。

常用的元字符如下表:

字符

说明

.

除了换行外的任意的字符

/b

单词的开始或结束(是一个位置)

/d

一个数字

/w

匹配字母、数字、下划线、汉字

/s

匹配空白符号

^

字符串的开始

$

字符串的结束

2.转义字符/

既然想.本身是不代表.的那么我要是想匹配.怎么办?那就要用到转义字符/

例如/.就匹配.

3.重复

如果说你想匹配连续5个数字怎么办,写五个/d太麻烦了吧,事实上我们肯定不会那么做?我们可以使用/d{5}.

常用的表重复的符号如下表:

字符

说明

*

重复0到多次

+

重复1到多次

重复零次或一次

{n}

重复n

{n,

重复n到多次

{n,m}

重复nm

4.字符类[]

如何表示abcd中的任何一个呢,可以用:[abcd]表示任意一个,不仅可以这样还可以用类似[0-9]表示09直接的任意的数字。

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}?

重复nm次,但尽可能少的重复

{n}?

重复n到多次,但尽可能少的重复

 

原创粉丝点击