zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    The Quad
    将OrCAD Capture CIS的设计文件(.dsn)导入到PADS Logic VX.2.3
    OrCAD Capture CIS 16.6 将版本16.6的设计文件另存为版本16.2的设计文件
    Eclipse IDE 添加jar包到Java工程中
    PADS Logic VX.2.3 修改软件界面语言
    切换Allegro PCB Editor
    Allegro PCB Design GXL (legacy) 将brd文件另存为低版本文件
    Allegro PCB Design GXL (legacy) 设置自动保存brd文件
    Could not create an acl object: Role '16'
    windows 下apache开启FastCGI
  • 原文地址:https://www.cnblogs.com/dcrq/p/11047159.html
Copyright © 2011-2022 走看看