php正則講解 及與 js的正則比較


  正則:用於檢索字符串的規則;

  js正則:

  var reg=/規則/

  reg是一個對象,在瀏覽器下;

  所以研究他的屬性和方法

  屬性:

  global是修飾符,代表全局檢索   g

  ignorecase  忽略大小寫的檢索  i

  multiline  代表多行匹配  m

  lastindex  代表檢索的起始位置  注意:這個需要結合全局匹配 g

  source  資源  代表正則表達式中字段的內容;

  方法:

  匹配的方法  test()

  捕獲的方法  exec()

  每次捕獲,就只捕獲第一個,就不捕獲了,這就是正則的懶惰行;

  如何解決正則的懶惰性?

    讓其進行全局捕獲;

  正則的規則寫法;

    [abs]  代表方括號中任意一個字符;

    (red|blue|green)  對一個整體分組

    [^abs]  代表除了方括號中任意一個字符

    [0-9]  0-9之間的任意一個數字;

  元字符:

    .  代表任意一個字符;

    \.  就是普通的.

    \w  單詞字符

    \d  數字字符

    \s  空白字符

    \b  單詞邊界

  量詞:

    n+  至少一個;

    n*  0到多個;

    n?  0到1個;

    n(x)  包含x個;

    n(x,)  至少x個;

    n(x,y)  大於等於x個,小於等於y個;

    n$  包含以n的結尾

    ^n  包含以n的開頭;

    a(?=n)  指定字符串a后面緊跟着n的字符串,返回a

  針對量詞:正則的貪婪性;

    正則的貪婪性:每次捕獲,盡可能多的捕獲;

    解決正則的貪婪性:在量詞的后面加?

  正則中?的作用:

    1.放在普通的元字符后面,代表0到1個;

    2.放在量詞的后面,代表取消正則的貪婪性;

  正則中()的作用;

    1.改變優先級;

    2.分組捕獲

    3.分組引用;

  案例:

    var reg=/(a)(b)/

    分組捕獲:首先正則是一個整體,捕獲ab,捕獲到在將ab分成兩個小的分組,捕獲不到就是 (注意字符串中沒有ab的大正則即為捕獲不到)    null

  如何取消分組捕獲;

    在分組中的前面加上?: 就可以了

 

  php正則:

  1.php中的正則的定界符 //  代表起始和結束;

  2.//里面的內容就是規則;

    定界符的種類有很多,可以使用 ##  !!  ||  {}  //

  php提供的方法

    preg_match_all(參數一,參數二,參數三)  執行一個全局正則表達式的匹配

    參數一:檢索的模式,我們寫的正則;

    參數二:被檢索的字符中;

    參數三:是一個多維數組,就是匹配的結果

  案例:

    $rg="/a/";

    $st="ab";

    var_dump(preg_match_all($rg,$st,$arr))  //返回匹配到的個數

    var_dump($arr);

  preg_match_all()  返回值int  是匹配的個數,

  $arr  是二維數組  存匹配的結果;

  正則中也分普通字符,和元字符;

    普通字符:a  s  12  _

    元字符:在正則中代表特殊意義的字符;

    \d  數字

    [0-9]  0-9中任意一個數字;

    .  任意一個字符;

    \.  就是代表.

    \w  單詞字符

    \d  代表數字

    \s  空白字符

    \b  單詞邊界

  量詞:

    *  0到多個

    +  至少一個;

    ?  0或1個;

    {n}  剛好n個;  與js量詞的寫法有區別

    {n,}  至少n個

    {n,m}  n到m個;

    ^n  以n的開頭

    n$  以n的結尾

    |  代表或的意思 as|ad  as或ad

    [asc]  方括號中任意一個

    [^asc]  除了方括號中的任意一個;

    ()  一個整體,改變優先級,分組引用;

    模式修飾符:

      i:忽略大小寫  m:多行匹配

      s:對特殊字符也能匹配;

      正則中的有些符號,是匹配不了的,如果加 s 這個修飾符,這些符號也可以匹配;

      案例:

        $re="/a.b/s";

        $st="a\nb";

    換行符  window下  \n

         linux下  \r\n

  php正則的貪婪性:

    $rg="/.*/";

    php中正則的貪婪性, 只有.*體現他的貪婪性  解除貪婪性  后面加?

  php中的小括號:

    1.成為一個整體

    2.分組引用;

  php中的分組引用  \\1  \\2  與js的區別 \1  \2;

  php正則提供的方法:

  preg_match_all()  執行一個全局正則,表達式匹配;

  preg_match()  執行一個正則,表達式匹配; 返回值int類型 0和1 匹配上了,就不往下匹配了;

  參數和preg_match_all()中的一致

  preg_replace()  執行一個正則表達式,搜索和替換;

  參數一:正則表達式;

  參數二:用於替換的字符串;

  參數三:用於檢索目標字符串;  

  返回的結果:替換后的字符串;  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM