• PHP面试 PHP基础知识 六(正则表达式)


    正则表达式

      正则表达式的作用

        分割、查找、匹配、替换字符串

             分隔符正斜线(/)、hash符号(#)、以及取反符号(~)

        通用原子d(代表十进制的0-9)、D (取反除了0-9)、w(数字、字母、下划线)

                               W(除了数字字母下划线)、s(空白符)、S(除了空白符)

             元字符:  .    *   ?   ^   $   +  {n}   {n,m}   []   ()   [^]    |   [-]

        . 点代表的意思是除了换行符的任意字符

             *   代表匹配前面的内容出现0次或者多次

             ? 代表匹配前面的内容出现0次或者1次

             ^   代表匹配输入字符串的开始位置

       $   代表匹配输入字符串的结尾位置

       +   代表匹配前面的内容出现1次或者多次

       {n} n是一个非负整数,匹配确定的n次

       {n,m}  n和m均为非负整数,最少匹配n次最多匹配m次

       [ ]  定义匹配字符范围

       ()   标记一个子表达式的开始和结束位置

       [^]  取反   除了中括号里面的其他都匹配

       |     或者的意思

       [-]   代表的是一个范围  比如[ 0 - 9 ]

       

         模式修正符i   m   e   s   U   x   A   D   u

          i       不区分大小写

         m     将字符串视为多行,不管是那行都能匹配

         e      配合函数preg_replace()使用    //PHP7.0已经取消

         s      修正点和换行

         U     只匹配最近的一个字符串,不重复匹配     取消贪婪模式

         x      将模式中的空白符忽略

         A      强制从目标字符串开头匹配

         D     使用$限制结尾字符,则不允许结尾有换行

         u      中文匹配

      

      后向引用:

    $str = "<p>abc</p>";
    
    $pattern = '/<p>(.*)</p>';
    
    //将str字符串替换成不带p标签的
    preg_replace( $pattern, '\1',$str );   
    
     //反斜线1代表的意思就是第一个括号里面匹配到的内容

      贪婪模式

    $str ="<p>abc</p><p>bcd</p>";
    
    $pattern = '/<p>.*?</p>/';   // ?可以取消贪婪
    
    preg_replace_all($pattern, '\1',$str);
    
    $pattern = '/<p>.*</p>/U';  //U也可以取消贪婪

      正则表达式PCRE函数preg_match()  preg_match_all()   preg_replace()  preg_split()

      中文匹配UTF-8汉字编码范围是0x4e00-0x9fa5   ANSI(gb2312)环境下 0xb0-0xf7 ,  0xa1-0xfe

      UTF-8要使用u模式修正符使模式字符串被当成UTF-8   ANSI(gb2312)环境下要使用chr将Ascii码转换为字符

      

    $str = "中国你好";
    
    $pattern = '/[x{4e00}-x{9fa5}]+/u';  //utf-8
    
    $pattern = '/['.chr(0xb0).'-'.chr(0xf7)']['.chr(0xa1).'-'.chr(0xfe)']/';
    
    preg_match($pattern ,$str ,$match);
    
    var_dump($match);
  • 相关阅读:
    【TopCoder 11469】—Nim(Fwt)
    【BZOJ4228】—Tibbar的后花园(生成函数+NTT)
    【BZOJ4228】—Tibbar的后花园(生成函数+NTT)
    多测师讲解接口测试 _postman(下)_高级讲师肖sir
    多测师讲解接口测试 _fiddler无法打开浏览器_高级讲师肖sir
    多测师讲解接口测试 _postman(上)_高级讲师肖sir
    多测师讲解接口测试 _HTTP常见的状态码归纳_高级讲师肖sir
    多测师讲解接口测试_F12中network里headers各项属性的含义——高级讲师肖sir
    SVN服务的模式和多种访问方式 多种访问原理图解与优缺点
    svn 目录
  • 原文地址:https://www.cnblogs.com/dcrq/p/11047159.html
Copyright © 2020-2023  润新知