PHP学习笔记——正则表达式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ZLANBL085321/article/details/86494317

一、语法规则
1、行定位符(用于描述字符串的边界)
“^”表示行的开始;“mrmr”表示行的结尾。如^mr匹配以mr开始的字符,mr匹配以mr结尾的字符。如果要匹配的字符串可以出现在字符串的任意部分,可直接写成mr。

2、字符类([ ])
正则表达式是区分大小写的,如果想忽略大小写,可以通过方括号表达式“[ ]”来完成。只要匹配的字符出现在方括号内,即表示匹配成功。但是一个方括号只能匹配一个字符,如mr不区分大小写,其表达式的格式为:[Mm][Rr]。POSIX预定义字符如下:
在这里插入图片描述
3、选择字符(|)
要忽略字符串的大小写,还可以通过选择字符“|”来完成。如(M|m)(R|r)意思是以字母M或m开头,后接一个字母R或r。
使用[]和使用|的区别在于[]只能匹配单个字符,而|可以匹配任意长度的字符串。

4、连接符(-)
连字符表示字符的范围,如[A-Z]。

5、排除字符([^])
放到方括号中,表示排除的意思。如[a-zA-Z_]表示匹配不以字母和下划线开头的字符串。

6、限定符(?*+{n,m})
对于重复出现的字母或字符串,可以使用限定符来实现匹配。限定符主要有以下几种:
在这里插入图片描述
7、点字符(.)和转义字符(\)
点字符“."可以匹配除换行符外的任意一个字符。
转义字符”\“将特殊字符转义为普通字符。除了做转义字符外,反斜线还有其他一些功能。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
8、括号字符(())
改变限定符的作用范围,如(six|seven)意思是匹配单词sixth或seventh。另一个作用是分组,也就是子表达式。

9、反向引用
依靠子表达式的”记忆“功能来匹配连续出现飞字符串。如匹配连续两个if,首先将if作为分组,然后在后面加上”\1“,即(if)\1
如果要匹配的字符串不固定,那么就将括号中的字串写成一个正则表达式。如果使用了多个分组,可以用”\1“、”\2“来表示每个分组(顺序是从左到右)。除了用数字表示分组外,还可以指定分组名称,格式为(?P…);如果想要反向引用该分组,格式为(?P=subname1)

二、POSIX扩展正则表达式常用函数
1、bool ereg/eregi(string pattern, string str[,array regs])
在字符串str中匹配表达式pattern,如果匹配成功则返回true,否则返回false。如果有第3个参数regs,则将成功匹配的字串按子串(子表达式)划分,并存储到regs数组中。ereg()函数区分大小写,而eregi()函数则不区分大小写。

2、string ereg_replace/eregi_replace(string pattern, string replacement, string str)
在字符串str中匹配表达式pattern,如果匹配成功,则使用replacement来替换匹配字串,并返回替换后的str。eregi_replace()函数不区分大小写。

3、array split/spliti(string pattern, string str[,int limit])
使用表达式pattern来分隔字符串str。如果有参数limit,那么数组最多有limit个元素,剩余部分都写到最后一个数值元素中。如果函数错误,则返回false。split()函数区分大小写,而spliti()函数不区分大小写。

三、PCRE兼容正则表达式常用函数
1、int preg_match/preg_match_all(string pattern,string subject[,array matches])
在字符串subject中匹配表达式pattern。函数返回匹配的次数。如果有数组matches,则每次匹配的结构将被存储到数组matches中。函数preg_match()的返回值是0或1,该函数在匹配成功后就停止继续查找了。而preg_match_all()函数则会一直匹配到最后才停止。参数matches对于preg_match_all()函数是必须的,而对preg_match()函数则可以省略。

2、mixed preg_replace(mixed pattern, mixed replacement, mixed subject[,int limit])
在字符串subject中匹配表达式pattern,并将匹配项替换成字符串repalcement。如果有参数limit,则替换limit次。

没有更多推荐了,返回首页