zoukankan      html  css  js  c++  java
  • php中preg正则函数使用

    1.preg_match和preg_match_all的区别
    preg_match和 preg_match_all区别是preg_match只匹配一次。而preg_match_all全部匹配,直到字符串结束。例:
    <?php
    //注:正则 /a.+?e/ 是非贪婪模式(因为量词‘+’后面加上了‘?’),如果使用 /a.+?e/U 则变回了贪婪模式
    preg_match("/a.+?e/","abcdefgabcdefgabcdefg",$out1);
    preg_match_all("/a.+?e/","abcdefgabcdefgabcdefg",$out2);
    var_dump($out1);
    var_dump($out2);
    /*
    输出:
    array (size=1)
      0 => string 'abcde' (length=5)
    
    array (size=1)
      0 =>
        array (size=3)
          0 => string 'abcde' (length=5)
          1 => string 'abcde' (length=5)
          2 => string 'abcde' (length=5)
     */
    ?>
    2.贪婪模式和非贪婪模式的区别
    如:String str="abcaxc";
      Patter p="ab*c";
    贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。
    非贪婪匹配:就是匹配到结果就好,较少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。
    例:
    <?php
    $str = "http://www.baidu/.com?url=www.sina.com/";
    preg_match("/http:(.*)com/", $str, $matches1); //贪婪匹配
    var_dump($matches1);
    
    preg_match("/http:(.*?)com/", $str, $matches2); //非贪婪匹配(量词'*'后面跟上了'?')
    var_dump($matches2);
    
    /*
    array (size=2)
      0 => string 'http://www.baidu/.com?url=www.sina.com' (length=38)
      1 => string '//www.baidu/.com?url=www.sina.' (length=30)
    
    array (size=2)
      0 => string 'http://www.baidu/.com' (length=21)
      1 => string '//www.baidu/.' (length=13)
     */
    ?>
    3.preg_match_all参数PREG_PATTERN_ORDER(默认)和PREG_SET_ORDER的区别
    <?php
    echo('PREG_PATTERN_ORDER');
    preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
        "<b>start: </b><b>this is a test</b><b>end</b>",
        $out1);
    var_dump($out1);
    
    echo('PREG_SET_ORDER');
    preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
        "<b>start: </b><b>this is a test</b><b>end</b>",
        $out2, PREG_SET_ORDER);
    var_dump($out2);
    
    /*
    PREG_PATTERN_ORDER
    array (size=2)
      0 =>
        array (size=3)
          0 => string '<b>start: </b>' (length=14)
          1 => string '<b>this is a test</b>' (length=21)
          2 => string '<b>end</b>' (length=10)
      1 =>
        array (size=3)
          0 => string 'start: ' (length=7)
          1 => string 'this is a test' (length=14)
          2 => string 'end' (length=3)
    
    PREG_SET_ORDER
    array (size=3)
      0 =>
        array (size=2)
          0 => string '<b>start: </b>' (length=14)
          1 => string 'start: ' (length=7)
      1 =>
        array (size=2)
          0 => string '<b>this is a test</b>' (length=21)
          1 => string 'this is a test' (length=14)
      2 =>
        array (size=2)
          0 => string '<b>end</b>' (length=10)
          1 => string 'end' (length=3)
     */
    ?>

    延伸阅读:preg_match_all使用实例

  • 相关阅读:
    不完全恢复用例
    全自动 TSPITR基于RMANSCN
    restore和recover的区别
    DG不同机器自己总结
    将10g RAC库用rman 的方式备份并恢复到异机 刚试验通过与大家分享
    Linux RH5平台下使用Oracle ASM创建数据库
    crs_stat状态失败后unregister掉相关进程
    ocr is not shared across all the nodes in the clus
    RMAN 备份与恢复 实例
    基于LINUX的Oracle+10G+RAC管理维护
  • 原文地址:https://www.cnblogs.com/moqiang02/p/4061110.html
Copyright © 2011-2022 走看看