• php中的正则表达式





    一、定位字符

    定位字符是正则表达式中又一类非常重要的字符,它的主要作用是用于对字符在匹配对象中的位置进行描述。

    ^:表示匹配的模式出现在匹配对象的开头(和在"[]"里面不同)

    $:表示匹配的模式出现在匹配对象的末尾

    空格:表示匹配的模式出现在开始和结尾的两个边界之一

    "/^he/":可以匹配以"he"字符开头的字符串,比如helloheight等等;

    "/he$/":可以匹配以"he"字符结尾的字符串即she等;

    "/ he/":空格开头,和^的作用一样,匹配以he开头的字符串;

    "/he /":空格结束,和$的作用一样,匹配以he结尾的字符串;

    "/^he$/":表示只和字符串"he"匹配

     

    二、特殊字符

    元字符是正则表达式中一类有特殊意义的字符,用来描述其前导字符(即元字符前面的字符)在被匹配的对象中出现的方式。元字符本身是一个个单一的字符,但是不同或者相同的元字符组合起来可以构成大的元字符。

    元字符:

    {}:大括号用来精确指定匹配元字符出现的次数。

    /a{1,3}/   表示字符a可以出现13

    +"+"字符用来匹配元字符前的字符出现一次或者多次。

    /a+/       表示a可以出现一次或者多次

    *"*"字符用来匹配元字符前的字符出现零次或者多次。

    /a*/       表示字符a可以出现0到多次

    ?"?"字符用来匹配元字符前的字符出现零次或者1次。它还有一个非常重要的作用,即"贪婪模式"

    /a?/       表示字符a可以出现01

    .:用于匹配除换行符之外的所有字符,如果经过修饰符"s"的修饰,"."可以代表任意字符。

    |:表示在多个范围选择

     

    中括号

    正贼表达式中使用[]来表示匹配的范围。

    [a-z]:表示可以出现az26个小写字母

    [a-z]{1,3}:表示出现13个小写字母

     

    PHP正则表达式给出了几种"[]"的默认值:

     [:alpha:]:匹配任何字母

    [:alnum:]:匹配任何字母和数字

    [:digit:]:匹配任何数字

    [:space:]:匹配空格符

    [:upper:]:匹配任何大写字母

    [:lower:]:匹配任何小写字母

    [:punct:]:匹配任何标点符号

    [:xdigit:]:匹配任何16进制数字

     

    转义符号

        下面这些特殊字符在转义符号""转义后代表的含义如下:

    s:匹配单个的空格符

    S:用于匹配除单个空格符之外的所有字符。

    d:用于匹配从09的数字,相当于"/[0-9]/"

    w:用于匹配字母,数字或下划线字符,相当于"/[a-zA-Z0-9_]/"

    W:用于匹配所有与w不匹配的字符,相当于"/[^a-zA-Z0-9_]/"

    D:用于匹配任何非10进制的数字字符。

     

     

    圆括号

      PHP正则表达式允许使用()将表达式组合成一个整体。

      ^([a-z0-9]{3,6}):以3-6个小写字母或数字开头。

     

    三、贪婪模式

    比如我们要匹配以字母"a"开头字母"b"结尾的字符串,但是需要匹配的字符串在"a"后面含有很多个"b",比如"a bbbbbbbbbbbbbbbbb",那正则表达式是会匹配第一个"b"还是最后一个"b"呢?如果你使用了贪婪模式,那么会匹配到最后一个"b",反之只是匹配到第一个"b"

    使用贪婪模式的表达式如下:

    /a.+?b/

    /a.+b/U

    不使用贪婪模式的如下:

    /a.+b/

     

    四、修饰符

    在正则表达式里面的修饰符可以改变正则的很多特性,使得正则表达式更加适合你的需要(注意:修饰符对于大小写是敏感的,这意味着"e"并不等于"E")。正则表达式里面的修饰符如下:

    i :如果在修饰符中加上"i",则正则将会取消大小写敏感性,即"a""A" 是一样的。

    m:默认的正则开始"^"和结束"$"只是对于正则字符串如果在修饰符中加上"m",那么开始和结束将会指字符串的每一行:每一行的开头就是"^",结尾就是"$"

    s:如果在修饰符中加入"s",那么默认的"."代表除了换行符以外的任何字符将会变成任意字符,也就是包括换行符!

    x:如果加上该修饰符,表达式中的空白字符将会被忽略,除非它已经被转义。

    e:本修饰符仅仅对于replacement有用,代表在replacement中作为PHP代码。

    A:如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分。比如说"/a/A"匹配"abcd"

    E:与"m"相反,如果使用这个修饰符,那么"$"将匹配绝对字符串的结尾,而不是换行符前面,默认就打开了这个模式。

    U:和问号的作用差不多,用于设置"贪婪模式"

     

     

    五、正则表达式函数

    PHPPerl兼容正则表达式提供的多个函数,分为模式匹配,替换和匹配数目等等:

    1preg_match

    函数格式:int preg_match(string pattern, string subject, array [matches]);

    这个函数会在string中使用pattern表达式来匹配,如果给定了[regs],就会将string记录到[regs][0]中,[regs][1]代表使用括号"()"记录下来的第一个字符串,[regs][2]代表记录下来的第二个字符串,以此类推。preg如果在string中找到了匹配的pattern,就会返回"true",否则返回"false"

     

    2preg_replace

    函数格式:mixed preg_replace(mixed pattern, mixed replacement, mixed subject);

    这个函数会使用将string中符合表达式pattern的字符串全部替换为表达式replacement。如果replacement中需要包含pattern的部分字符,则可以使用"()"来记录,在replacement中只是需要用"/1"来读取。

     

    3preg_split

    函数格式:array preg_split(string pattern, string subject, int [limit]);

    这个函数和函数split一样,区别仅在与split可以使用简单正则表达式来分割匹配的字符串,而preg_split使用完全的Perl兼容正则表达式。第三个参数limit代表允许返回多少个符合条件的值。

     

    4preg_grep

    函数格式:array preg_grep(string patern , array input);

    这个函数和preg_match功能基本上,不过preg_grep可以将给定的数组input中的所有元素匹配,返回一个新的数组。

     

     

     

     

  • 相关阅读:
    set, unordered_set模板类
    C/C++ Bug记录
    win10远程连接
    C/C++缓冲区刷新问题
    hihocoder1711 评论框排版[并查集+set]
    makefile
    Virtual Table
    粤语
    xilinx SDK开发 GPIO使用API总结
    基于zynq 7020的串口UART中断实验
  • 原文地址:https://www.cnblogs.com/doseoer/p/4007710.html
Copyright © 2020-2023  润新知