建站代码网

热门标签

PHP学习八--正则表达式

什么是正则表达式:正则表达式是对字符串进行操作的一种逻辑公式,就是用一些特定的字符组合成一个规则字符串,称之为正则匹配模式。

使用正则表达式的目的是为了实现比字符串处理函数更加灵活的处理方式,因此跟字符串处理函数一样,其主要用来判断子字符串是否存在、字符串替换、分割字符串、获取模式子串等。

正则表达式中具有特殊含义的字符称之为元字符,常用的元字符有:

一般用于转义字符
^ 断言目标的开始位置(或在多行模式下是行首)
$ 断言目标的结束位置(或在多行模式下是行尾)
. 匹配除换行符外的任何字符(默认)
[ 开始字符类定义
] 结束字符类定义
| 开始一个可选分支
( 子组的开始标记
) 子组的结束标记
? 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词)
* 量词,0 次或多次匹配
+ 量词,1 次或多次匹配
{ 自定义量词开始标记
} 自定义量词结束标记

 

 

正则表达式中每个元字符匹配一个字符,当使用+之后将会变的贪婪,它将匹配尽可能多的字符,但使用问号?字符时,它将尽可能少的匹配字符,既是懒惰模式。

贪婪模式:在可匹配与可不匹配的时候,优先匹配

//下面的d表示匹配数字 $p = '/d+-d+/'; $str = "我的电话是010-12345678"; preg_match($p, $str, $match); echo $match[0]; //结果为:010-12345678

懒惰模式:在可匹配与可不匹配的时候,优先不匹配

$p = '/d?-d?/'; $str = "我的电话是010-12345678"; preg_match($p, $str, $match); echo $match[0]; //结果为:0-1

当我们确切的知道所匹配的字符长度的时候,可以使用{}指定匹配字符数

$p = '/d{3}-d{8}/'; $str = "我的电话是010-12345678"; preg_match($p, $str, $match); echo $match[0]; //结果为:010-12345678

 

 

1.行定位符

^表示行的开始,$表示行的结尾。

^tm表达式表示要匹配tm开头的字符串。

tm$则匹配tm结尾的字符串。

使用tm可以匹配在字符串中出现的任意位置。类似html、utmost都可以找出来。

2.单词界定符

如果需要匹配单词tm,而不是单词的一部分,那么就不用使用tm了。这时可以使用单词界定符/b,表示要查找的字符串为一个完整的单词。

btmb

如果是一个大写的B,如B,那么他的意思和b相反。他匹配的字符串不能是一个完整的单词,而是其他单词的一部分。如BtmB。

3.字符类[]

正则表达式是区分大小写的,如果要忽略大小写可以使用方括号表达式[],只要匹配的字符串出现在方括号内,即表示匹配成功。但是一个方括号只能匹配一个字符。比如字符串tm要匹配的字符串不区分大小写,那么表达式应该写成:[Tt][mM]

4.选择字符串|

选择字符串可以理解为或T|tM|m,该表达式的意思是以字母T或t开头,后面接一个字字母M或m。

5.连字符-

连字符可以表示字符的范围。如[a-zA-Z]表示[a,b,c,d.....A,B,C.....Z];

6.排除字符[^]

将^放到[]内就表示排除的意思,如[^a-zA-Z]表示不以字母和下划线开头的变量名。

7.限定符(?*+{n,m})

限定符主要是在重复出现的字母或字符串中来表示的。限定符主要有6种类型

X
本站部分文章来源于网络,其版权归文章作者所有,若有侵权或建议意见请来信:contact9581#foxmail.com(注:把#改@)
建站代码网   关键字:PHP学习八--正则表达式,网站开发,PHP开发,php入门

限定符 

说明 举例
匹配前面的字符零次或一次 colou?r,该表达式可以匹配color和colour
+ 匹配前面的字符一次或多次 go+gle,该表达式可以匹配的范围从gogle到gooooo....gle
* 匹配前面的字符零次或多次 go*gle,该表达式可以匹配的范围从ggle到goo....gle
{n} 匹配前面的字符n次

go{2}gle,该表达式只匹配google                        

{n,} 匹配前面的字符最少n次 go{n,}gle,该表达式可以匹配的范围从google到goo...gle
{n,m} 匹配前面的字符最少n次,最多m次。