PHP 正则表达式

  PHP 中有两套正则库;PCRE和POSIX;PHP5.3以后不在提倡用POSIX 然而POSIX字眼却也是经常看见的,比如在一些Linux工具书中;

      正则的组成:一般而言包括,分隔符,表达式,修饰符;

      元字符:表达式中具有特殊记忆的字符;就像我们Java中的class这样的字眼;

      .      匹配出换行符外任意字符

      \w    匹配字母或者数字或者下划线或者汉字

      \s     匹配任意空白字符

      \d     匹配数字

      \b     匹配单词的开始或者结束

      ^      匹配字符串的开始  

      $      匹配字符串的结束

      -      表示范围 比如 [a-z]  

      []     表示括号中任意一个字符 分组符

      *  +   ? 量词   * 表示重复0次或者更多次 +表示重复一次或者更多次 ?表示重复0次或者1次 另外{}  {7}表示重复7次 {7,}重复7次以上 {7,10}表示重复6次以上11次以下

      一些表达式帮助理解

      \bc\w*\b       表示开头的字符 不如canada candu c_ds_ds   

       \d+              表示可以正负无穷的数子

       \b\w{8}\b     表示长度为8的单词

        0\d\d - \d\d\d\d\d\d\d   表示类似 030 - 0392393 这样 等价于 0\d{2} - \d{7}

    转义:去掉齐被赋予的含义,看成普通字符;用\ 比如* \* 另外\Q \E 之间的任意元字符都会当成普通字符看待

                另外字符组中所有表示非单个的元字符都会看成普通字符,因为字符组匹配单个;

        反义:取反;

        \w  反义为\W \d \D \s \S \b \B [^x] 处x 意外任意字符 

        分支:()分支就是在分组的单个层面上扩展为了多个;例如(a|vn|cnm)at 匹配aat vmat cnmat

        反向引用:重复搜索匹配,某个分组匹配的文本;如果未给分组命名的情况下,按照从左至右的顺序依次编号为1 2 3 4..... 也可以命名例如\b(?<same>\w+)\b\s + \k<same>\b 这样可以匹配go go pity pity 这样的

        环视:四种模式 顺序肯定环视(?=exp);逆序肯定环视(?<=exp);顺序否定环视(?!exp),逆序否定环视(?<!exp);

                abcdefg \b .*(? <=\babc)  将匹配defg

                逆序是查看自身位置的前面 顺序是自身位置后面 后面表现在位置左边 前面表现为位置右边

        贪婪/懒惰匹配模式:一个是尽可能多的匹配一个是尽可能少的匹配 比如、a .* b 如果匹配abcbcb 会整个匹配abcbcb 这就是贪婪 如果a.*? b 就是懒惰模式了

        

        

        

         

        

         

posted @ 2015-08-05 22:30  鱼尾纹  阅读(222)  评论(0编辑  收藏  举报