一个完整的正则表达式由两部分构成,元字符和文本字符
元字符就是具有特殊含义的字符,例如: * ?
文本字符就是普通的文本
行定位符就是用来描述字串的边界。“^”表示行的开始;“$”表示行的结尾
单词定界符 :\b和\B。\b表示查找一个完整的单词;\B表示查找的子串不能是一个完整的单词
字符类:[ ]。表示忽略大小写的作用;[Zz][Jj]就可以匹配字串zj的所有写法;一个方括号只能匹配一个字符
选择字符:| 。可以理解为“或”;Z|zJ|j 意思是以字母Z或z开头,后面接M或m;可以匹配任意长度的字串
连字符: - 。可以标志字符的范围;a-z表示a到z之间的所有字符
排除字符: [^]。匹配不符合规则的字串;[^a-z_A-z]匹配的是不以字母和下划线开头的变量
限定符:
1、? 匹配前面的字符零次或一次
2、+ 匹配前面的字符一次或多次
3、* 匹配前面的字符零次或多次
4、{n} 匹配前面的字符n次
5、{n,} 匹配前面的字符最少n次
6、{n,m} 匹配前面的字符最少n次,最多m次
点号字符: . 。可以匹配出除换行字符外的任意一个字符。
转义字符:\ 。可以将特殊字符变成普通的字符
反斜线:(图片是转载的)
括号字符:() 。可以改变限定符的作用范围;分组
反向引用:依靠子表达式的“记忆”功能来匹配连续出现的字串货字母
模式修饰符:
1、i 忽略大小写模式
2、m 多文本模式,即字串内部有多个换行符时,影响“^”和“$”的匹配
3、s 单文本模式,在此模式下,元字符点号可以匹配换行符
4、x 忽略空白字符
POSIX扩展正则表达式函数:
1、ereg()函数和eregi()函数,匹配字符串,ereg()区分大小写。bool ereg/eregi(string pattern,string string ,array regs),匹配成功返回true,regs为成功匹配的字串
2、ereg_replace()和eregi_replace(),替换匹配的字符串。string ereg_replace/eregi_replcace(string pattern,string replacement,string string)
3、split()和spliti()函数,分割字符串。array split/spliti(string pattern,string string int limit)
PCRE兼容正则表达式函数:
1、preg_grep()函数。array preg_grep(string pattern,array input),使用数组input中的元素一一匹配pattern,最后返回由所有相匹配的元素所组成的数组
2、preg_match()和preg_match_all()。int preg_match/preg_match_all(string pattern,string subject,array matches),在字符串subject中匹配表达式pattern。返回匹配的次 数,若存在数组matches,那每次匹配的结果都存储到数组中。preg_match_all()会一直匹配到最后,对于它数组matches是必须有的
3、preg_quote()函数,string preg_quote(string str,string delimiter),将字符串str的所有特殊字符进行自动转义,如果存在delimiter,那么该参数的字串也被转义
4、preg_replace()函数, mixed preg_replace(mixed pattern,mixed replacement,mixed subject,int limit),在字符串subject中匹配表达式pattern,并将匹配项替换成字串 repalcement,如果有参数limit。则替换limit次。
5、preg_replace_callback()函数, 与preg_replace()函数功能相同,不同的是这个函数使用一个回调函数替代replacement
6、preg_split()函数,array preg_split(string pattern,string subject ,int limit),使用表达式pattern来分割字符串subject,如果有limit,那么数组最多有limit个元素