PHP学习笔记-----正则表达式
admin
2023-06-28 01:02:42
0

正则表达式的语法规则

正则表达式描述了一种字符串匹配的模式,通过这个模式在特定的函数中对字符串进行匹配、查找、替换及分割等操作。

三个组成部分:

         原子

         元字符

         模式修正符

以及         定界符

1 定界符

不仅局限”/“。除了字母、数字和反斜线”\“以外的任何字符都可以作为定界符号。

2 原子

         1       普通字符作为原子

                   a~z  A~Z 0~9

         2  一些特殊字符和元字符作为原子

                   有特殊意义的符号,需使用转义字符”\“

         3   一些非打印字符作为原子

                   \cx   \f  \n   \r   \t  \w

         4   使用通用字符类型作为原子

                  \d 匹配任意一个十进制数字,等价于[0-9]

                   \D匹配任意一个除十进制字以外的字符,等价于[^0-9]

                   \s匹配任意一个空白字符,等价于[\f\n\r\t\v]

                   \S匹配除空白字符以外任意一个字符,等价于[^\f\n\r\t\v]

                   \w匹配任意一个数字、字母或下划线,等价于[0-9a-ZA-Z]

                   \W匹配除数字、字母或下划线以外的任意一个字符,等价于[^0-9a-zA-Z]

         5     自定义原子表([])作为原子

3 元字符

         限定符

                  *   匹配0次、1次或多次其前的原子

                  +   匹配1次或多次其前的原子

                  ?   匹配0次或1此前的原子

{n}    表示其前面的原子恰好出现n

                   {n,}   表示其前面的原子出现不少于n

                   {n,m}表示其前面的原子至少出现n次,最多出现m

 

句号

                  .       匹配除了换行符外的任意一个字符

 

模式选择符

                  |    匹配两个或多个分支选择

                 

边界限制

                  ^\A匹配输入字符串的开始位置

                  $\Z匹配输入字符串的结束位置

                  \b     匹配单词的边界

                  \B     匹配除单词边界以外的部分

                  []       匹配方括号中指定的任意一个原子

                  [^]    匹配除方括号中原子以外的任意一个字符

 

         模式单元

                  ( )      匹配其整体为一个原子,即模式单元。

        

         后向引用

                   模式加元字符括号后,结果被存储到缓冲区中,可以使用“\n”n为第n个括号)引用

   

模式修正符

         在正则表达式定界符之外使用。

         i        在和模式进行匹配时不区分大小写

         m      将字符串视为多行(默认情况,不匹配换行符)

         s       模式中的圆点元字符匹配所有字符,包括换行符。将字符串视为单行,换行符作为普通字符看待。(可以匹配换行符)

         x       模式中的空白忽略不计,除非它已经被转义

         e       只用在preg_replace()函数中,在替换字符串中对逆向引用做正常的替换,将其作为PHP代码求值,并用其结果来替换所搜索的字符串

         U      反转了匹配数量的值使其不是默认的重复,而变成在后面跟上“?”才变得重复。(非贪婪模式,同.*?

         D      模式中的美元元字符仅匹配目标字符串的结尾。(没有此选项,如果最后一个字符是换行符,美元符号会匹配此字符之前)

 



Perl兼容的正则表达式函数

一匹配与查找

1          preg_match()

通常用于表单验证。可以按指定的正则表达式模式,对字符串进行搜索和匹配一次。

         @pattern提供用户按正则表达式语法编写的模式

         @subject 字符串

         @matches保存与第一个参数中的子模式的各个部分的匹配结果。Matches[0]保存了与正则表达式pattern匹配的整体内容。Matches其他元素是正则表达式小括号内按顺序依次的内容。

         @return返回01,匹配结果数

Intpreg_match(string pattern,string subject[,array match])

 

2          preg_match_all()

一直搜索到指定字符串的结尾,可以获得所有匹配到的结果。

@pattern

@subjet

@matches所有匹配结果

@flags 

         PREG_PATTERN_ORDER: 对结果排序,$matches[0]为全部模式匹配的数组,$matches[1]为第一个括号中的子模式所匹配的字符串组成的数组。

         PERG_SET_ORDER:对结果排序,使$matches[0]为第一组匹配项的数组,$matches[1]位第二组的匹配项数组。

@return 返回整个模式匹配的次数,如果出错则返回FALSE

intpreg_match_all(string pattern,string subject,array matches[, int flags])

 

3          preg_grep()

@pattern 正则表达式

@input 数组

@return 返回一个数组,包括了第二个参数input数组中与给定的第一个参数pattern模式相匹配的单元。(对input中的每个元素,只进行一次匹配)

arraypreg_grep(string pattern,array input)

 

4          strstr()  strops() strrpos()  substr()

 

二、字符串的替换

         1       preg_replace()

         @pattern                模式匹配项

         @replacement         替换内容

         @subject                   原字符串

         @limit                         替换个数(值为-1,则所有都会匹配)

         mixedpreg_replace( mixed pattern,mixed replacement ,mixe subject [,int limit])

注:与模式修正符e的搭配使用

         2       str_replace()

三、字符串的分割和拼接

         1       preg_split()

         用途:返回一个字符串数组,数组中元素包含通过第二个参数subject中的字符串,经第一个参数的正则表达式pattern,作为匹配的边界所分割的子串。

         @pattern                模式匹配项

         @subject                 字符串

         @limit                         替换个数

         @flags                       

                   PREG_SPLIT_NO_EMPTY:如果设定了本标记,则preg_split()只返回非空部分

                   PREG_SPLIT_DELIM_CAPTURE:如果设定了本标记,定界符模式中的括号表达式也会被捕获并返回。

                   PREG_SPLIT_OFFSET_CAPTURE:如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。

         arraypreg_split( string pattern,string subject[,int limit [,flags]])

         2       explode()

         3       implode()




相关内容

热门资讯

超载客车追尾致13死,司机身亡... 围绕G40沪陕高速河南南阳桐柏毛集段发生的重大道路交通事故,调查处置工作仍在进行中。据央视新闻报道,...
“老师,我晚点到,救个人!” 近日,江苏沭阳县潼阳中学高二(4)班班主任陈凌燕接到了学生冯思逸的请假电话原来,在返校路上冯思逸目睹...
模仿黄仁勋走红后,“我现在很害... 5月,英伟达CEO黄仁勋在华访问期间,身着他标志性的皮衣,一头扎入北京的“烟火气”之中。他在街头大口...
原创 北... 5月29日,北方华创宣布,其首台600mm×600mm面板级封装去胶设备(Descum)成功出厂,标...
燃气灶开关丢了怎么修复 燃气灶的开关是长期使用后容易出现丢失或损坏的情况。如果你的燃气灶开关丢了,该如何修复呢?下面提供几种...
成都阳光明珠家具怎么样 最佳回答 成都阳光明珠家具属于国内的二线家具品牌。在产品的质量以及销售量上是没有办法跟全友家私,宜家...
修理洗手盆脱落多少钱 修理洗手盆脱落的费用可能会因多种因素而有所不同,以下是一些可能影响价格的因素:1. 损坏程度:洗手盆...
湖北一地回应“农机手抢收夏粮收... 澎湃新闻记者 钟煜豪5月30日,湖北天门市汪场镇人民政府就网络反映的“广西农机手抢收夏粮收割机爬梯被...
洗衣机黑屏修理多少钱 洗衣机黑屏是一种常见的故障。造成这种问题的原因可能有很多,例如故障的电源线,中断的电源等等。 如果...
兴国上门维修燃气灶价格 现今社会,人们对家居生活的需求越来越高,因此家电维修服务行业也得到了蓬勃发展,尤其是燃气灶维修方面更...