php 的正則表示式 (1)
阿新 • • 發佈:2019-01-02
<?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);
*/
/*正則表示式
*正則表示式描述了一類字串的特徵
*通過這個特徵與特定的函式配合
*對其他字串進行匹配,查詢,替換和分割操作
*/
/*
//普通字元和特殊字元組成的一個字串
//定界符
//普通字元:數字,字元
$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);
$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);
$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);
$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);
*/