1. 程式人生 > >php 的正則表示式 (1)

php 的正則表示式 (1)

<?PHP 
   /*正則表示式
    *正則表示式描述了一類字串的特徵
*通過這個特徵與特定的函式配合
*對其他字串進行匹配,查詢,替換和分割操作
   */ 


    /*
//普通字元和特殊字元組成的一個字串
   //定界符
   //普通字元:數字,字元
   $partter = '!test!'; //除了字母,數字,反斜線以外的字元都可以用作定界符,不過我們習慣使用‘//’作為定界符
   $arr = 'testasdfsda';
   var_dump(preg_match_all($partter,$arr,$data));
   echo("\n");
   var_dump($data);
   */


   /*元字元


         *\d  匹配任意一個十進位制數字
$p = '/te\dst/';
$s = 'te1st';
$s1 = 'tesst';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
var_dump($da);
var_dump($arr);
var_dump($da1);
var_dump($arr);


      *\D  除了(0~9)數字以外的任何字元
$p = '/te\Dst/';
$s = 'te1st';
$s1 = 'tesst';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
var_dump($da);
var_dump($arr);
echo("\n");
var_dump($da1);
var_dump($arr);


     *\s匹配任意一個空白字元
$p = '/te\sst/';
$s = 'te1st';
$s1 = 'tesst';
$s2 = 'te st;';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
$da2 = preg_match_all($p,$s2,$arr);
var_dump($da);
var_dump($arr);
echo("\n");
var_dump($da1);
var_dump($arr);
echo("\n");
var_dump($da2);
var_dump($arr);


     *\S  匹配出空白字元以外的任何一個字元
$p = '/te\Sst/';
$s = 'te1st';
$s1 = 'tesst';
$s2 = 'te st;';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
$da2 = preg_match_all($p,$s2,$arr);
var_dump($da);
var_dump($arr);
echo("\n");
var_dump($da1);
var_dump($arr);
echo("\n");
var_dump($da2);
var_dump($arr);


     *\w  匹配任意一個數字或字母或下劃線
$p = '/te\wst/';
$s = 'te1st';
$s1 = 'tesst';
$s2 = 'te_st;';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
$da2 = preg_match_all($p,$s2,$arr);
var_dump($da);
var_dump($arr);
echo("\n");
var_dump($da1);
var_dump($arr);
echo("\n");
var_dump($da2);
var_dump($arr);


     *\W匹配出數字,字母,下劃線以外的任意一個字元
$p = '/te\Wst/';
$s = 'te1st';
$s1 = 'tesst';
$s2 = 'te_st;';
$s3 = 'te!st;';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
$da2 = preg_match_all($p,$s2,$arr);
$da3 = preg_match_all($p,$s3,$arr);
var_dump($da);
var_dump($arr);
echo("\n");
var_dump($da1);
var_dump($arr);
echo("\n");
var_dump($da2);
var_dump($arr);
echo("\n");
var_dump($da3);
var_dump($arr);


        *  \.   匹配除換行符以外的任意一個字元
$p = '/te\.st/';
$s = 'te.st';
$da = preg_match_all($p,$s,$arr);
var_dump($da3);
var_dump($arr);


     *    元字元:*  匹配0次,1次,或多次其前面的字元
$p = '/te*st/';
$s = 'abc';
$s1 = 'abctest';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
var_dump($da);
var_dump($arr);
echo("\n");
var_dump($da1);
var_dump($arr);


     *  +   匹配1次或者多次前面的字元
$p = '/te+st/';
$s = 'tesssssst';
$s1 = 'teeeeeeeeeeest';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
var_dump($da);
var_dump($arr);
echo("\n");
var_dump($da1);
var_dump($arr);


     *  ? 匹配0次或者1次前面的字元
$p = '/te?st/';
$s = 'teeest';
$s1 = 'tst';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
var_dump($da);
var_dump($arr);
echo("\n");
var_dump($da1);
var_dump($arr);


     *   {n}  n是使用者自主定義的,表示其前面的字元恰好出現n次,放在{n}前面的那個字元應恰好出現n次
$p = '/te{3}st/';
$s = 'teeest';
$s1 = 'test';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
var_dump($da);
var_dump($arr);
echo("\n");
var_dump($da1);
var_dump($arr);


     *  {n,} n是自主定義的,表示前面字元出現的次數不少於n次
$p = '/te{3,}st/';
$s = 'teeeeeeeeeeeeest';
$s1 = 'teeest';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
var_dump($da);
var_dump($arr);
echo("\n");
var_dump($da1);
var_dump($arr);


     * {n,m}  n,m是自主定義的,表示其前面出現的字元至少出現n次,最多出現m次
$p = '/te{3,5}st/';
$s = 'teeeeeeeeeeeeest';
$s1 = 'teeeest';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
var_dump($da);
var_dump($arr);
echo("\n");
var_dump($da1);
var_dump($arr);


     *   .與{n}配合使用
$p = '/te.{3}st/';
$s = 'temmmst';
$s1 = 'teeeest';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
var_dump($da);
var_dump($arr);
echo("\n");
var_dump($da1);
var_dump($arr);


          .與* 共同使用
$p = '/te.*st/';
$s = 'te123abcst';
$s1 = 'abctst';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
var_dump($da);
var_dump($arr);
echo("\n");
var_dump($da1);
var_dump($arr);


         . 與 * 與 ? 
$p = '/te.*?st/';
$s = 'teeee123abcsssttestteeeeeeeeeestteeeeeest';
$s1 = 'abctest';
$da = preg_match_all($p,$s,$arr);
$da1 = preg_match_all($p,$s1,$arr);
var_dump($da);
var_dump($arr);
echo("\n");
var_dump($da1);
var_dump($arr);


   */