zoukankan      html  css  js  c++  java
  • 【正则使用】php

    http://www.cnblogs.com/baochuan/archive/2012/03/12/2391135.html#fanxiangyinyong

     元字符

      正则具有特殊意义的专用字符

      w 匹配 字母数字下划线汉字

      s 空白符 

      d 数字 

      - 表示范围

      [] 匹配括号中任意个字符

      

     ^:

              > 放在字符域(如:[^w])中表示否定(不包括的意思)——“反向选择”

              >  放在表达式之前,表示以当前这个字符开始。(/^n/i,表示以n开头)。

     分组:

    零宽度断言:

    (?=exp) 匹配exp前面的位置  (?<=exp) 匹配后面的位置

    (?<=c)d(?=e) 匹配字符 d 前面是c后面是e  (?=e)与d匹配

    正向预查:(?=) 相对应的 (?!)表示否定意思
    反向预查:(?<=) 相对应的 (?<!)表示否定意思
    捕获数据
     
    没有指明类型而进行的分组,将会被获取,供以后使用。
    > 指明类型指的是通配符。所以只有圆括号起始位置没有问号的才能被捕捉。

    > 在同一个表达式内的引用叫做反向引用。
    > 调用格式: 编号(如1)。
    $regex = '/^(Chuanshanjia)[ws!]+1$/';   
    $str = 'Chuanshanjia thank Chuanshanjia';
    $matches = array();
     
    if(preg_match($regex, $str, $matches)){
        var_dump($matches);
    }
     
    echo " ";
    > 避免捕获数据
       格式:(?:pattern)
       优点:将使有效反向引用数量保持在最小,代码更加、清楚。
     
    >命名捕获组
       格式:(?P<组名>) 调用方式 (?P=组名)
    $regex = '/(?P<author>chuanshanjia)[s]Is[s](?P=author)/i';
    $str = 'author:chuanshanjia Is chuanshanjia';
    $matches = array();
     
    if(preg_match($regex, $str, $matches)){
        var_dump($matches);
    }
     
    echo " ";

    运行结果

    贪婪、懒惰匹配模式
     
     

      格式:限定符?

         原理:"?":如果前面有限定符,会使用最小的数据。如“*”会取0个,而“+”会取1个,如过是{3,5}会取3个

      *?  +? ?? ... 尽可能少的匹配

      

    $str="[url]sf.jg[/url][url]sf.jg[/url][url]sf.jg[/url][url]sf.jg[/url]";
    $pattern='/[url](.*?)[/url]/';//// 0 => string '[url]sf.jg[/url]' (length=16) 1 => string 'sf.jg' (length=5)
    $pattern='/[url]([^[]*)[/url]/';//

    preg_match($pattern,$str,$matches);
    var_dump($matches);

    // 0 => string '[url]sf.jg[/url][url]sf.jg[/url][url]sf.jg[/url][url]sf.jg[/url]' (length=64)
    // 1 => string 'sf.jg[/url][url]sf.jg[/url][url]sf.jg[/url][url]sf.jg' (length=53)

    //贪婪模式
    //$pattern='/[url](.*?)[/url]/';//// 0 => string '[url]sf.jg[/url]' (length=16) 1 => string 'sf.jg' (length=5)
    //反义
    $pattern='/[url]([^[]*)[/url]/';//

     采用贪婪或反义得到想要匹配的结果

    正则常用的模式

    i 匹配大小写

    u支持utf-8转义

    $str="阿桑地方";
    $pattern='/[url](.*?)[/url]/';
    $pattern='/^[x{4e00}-x{9fa5}]+$/u';//
    //array (size=1)
    // 0 => string '阿桑地方' (length=12)
    困难是老天给我们提高的机会,坚定不移勇敢地去攻克,不要退缩,加油!
  • 相关阅读:
    3. 无重复字符的最长子串
    24. 两两交换链表中的节点
    2. 两数相加
    23. 合并K个排序链表
    synergy配置 Ubuntu作Server, Win 7作client
    ros与下位机通信常用的c++ boost串口应用
    tar
    发布里程计传感器信息
    ROS TF——learning tf
    在linux终端下打开pdf文件
  • 原文地址:https://www.cnblogs.com/merlini/p/3169498.html
Copyright © 2011-2022 走看看