您的位置:首页 > 其它

正则表达式

2013-10-14 23:07 218 查看
1.元字符

注:在任意的元字符前加上反斜线,将失去其元字符意义,表示匹配它。

点号(.):匹配任意一个字符,换行符(\n)除外。

反斜线(\):作为转义字符。

2.量词

星号(*):用于匹配前一个条目零次或多次。

加号(+):表示匹配前一个条目一次以上。

问号(?):表示匹配前一个条目出现一次或零次。

花括号({}):用于表示重复次数。 

eg:/(read){3,100}/    表示read可以重复3到100次

     /(read){3,}/            表示可以重复3到无穷次

     /(read){3}/             表示重复3次。

3.模式分组

圆括号(()):对字符进行串分组。

反向引用的写法是在反斜线的后面跟上数字。应用反向引用来对前面最近的圆括号中的模式进行匹配。数字表示匹配第几个括号。

eg:模式:/y(....) d\1    “yabba dabba d”  匹配正确。

     模式:/y(.)(.)\2\1/     匹配"abba"。

     模式:/y((.)(.)\2\1)d\1/    匹配“yabba dabba d”。

\g{N}可以将\111变为\g{1}11.其中N可以为负数,表示倒着数括号。

eg:模式:/(.)\g{1}11/  匹配成功"aa11"。

4.择一匹配

竖线(|):表示要么匹配左边的内容,要么匹配右边的内容。

eg:模式:/fread(and|or)barney/  只对freadandbarney和freadorbarney匹配成功。

5.字符集

方括号([]):表示只能对方括号中的字符集的一个字符进行匹配。

连接符(-):可以用来表示范围。

脱字符(^):表示字符集中的字符除外

eg:模式:/[adhjifeg]/  对方括号中的8个字符中的一个匹配。

     模式:/[a-zA-Z]/   对52个大小字母中的一个进行匹配

6.字符集的简写

\d:表示一个数字

\s:表示能匹配任意空白字符

\w:表示有[a-zA-Z0-9]组成的字符

\D:等同于[^\d]

\S:等同于[^\s]

\W:等同于[^\w]

7.定界符

可以选用任何成对的定界符。/read/是m/read/的缩写。也可以运用其他的定界符表示,如:m<read>,m[read],m{read},m,read,。

8.模式匹配修饰符

/i:表示大小写无关。 eg:模式:/fred/i   对Fred,FRed等匹配成功。

/s:表示匹配任意字符,包含换行符。(需要和.号一起使用)   eg:模式/Bary.*fred/s   对“Barydsfsdfds\nsdfds\ndffred”匹配成功。

/x:表示可以在模式中加入空白。  eg:模式:/-?[0-9]+\.?[0-9]*/  等同于 /-? [0-9]+ \.? [0-9]*/x。

组合修饰符:可以将上面的多可修饰符放在一起。

9.锚位

给定锚位,可以让模式从指定位置开始匹配。

\A:匹配字符串的绝对开始。 eg:m{\Ahttps?://}i

\z:匹配字符串的绝对末尾。            eg:m{\.png\z}i

\Z:匹配行尾,后面可以跟着换行符。

\b:单词边界锚位(由\w组成的单词)。    eg:/\bfread\b/   仅对fread匹配成功。

\B:表示非单词锚位 。             eg:/\bsercd\B/   对sercdfsd,sercdfdsd等匹配成功,对resercdfsd,sercd等匹配不成功。

10.绑定操作符=~

默认情况下的操作对象是$_,我们可以通过=~来对模式进行匹配。例如:if($sdfsd=~/sdfds/)....

11.模式的内插

正则表达式内部可以进行双引号的内插。

 

12优先级

1.圆括号(())具有最高优先级,用于分组和捕获。

2.第二级为量词,用于表示重复次数。量词有点号,问号,加号,花括号。

3.第三级为锚位和序列。有:\A,\Z,\z,^,$,\B,\b

4.第四级为竖线(|)。

5.最低级为原子。如:a,[abc],\d,\1,\g{2}.

 

eg:/\Aread|binray\Z/   表示要么匹配以read开始的的字符串,或者以binray结束的字符串。

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: