二 字串和正規表示式 正規表示式的模式修正符

2021-05-24 00:40:20 字數 4158 閱讀 8989

正規表示式的模式修正符

模式修正符是為正規表示式增強和補充的乙個功能,使用在正則之外.

格式:/ 正則/ 模式修正符

常用模式修正符有:

正則內容在匹配時候不區分大小寫(預設是區分的) 

在匹配首內容或者尾內容時候採用多行識別匹配 

s 將轉義回車/n取消是為單行匹配如. 

忽略正則中的空白 

強制從頭開始匹配 

d 強制$匹配尾部無任何內容

包括/n

u 禁止貪婪匹配 只跟蹤到最近的乙個匹配符並結束,常用在採集程式上的正規表示式

/正則/i例項如下

<?php

$mode = "/aaa/";

$string = "aaa";

if(preg_match($mode,$string,$arr))

echo "匹配成功:"."$arr[0]";

else

echo "匹配失敗!";

?>

執行結果:匹配失敗!

加上模式修正符i後

<?php

$mode = "/aaa/i";

$string = "aaa";

if(preg_match($mode,$string,$arr))

echo "匹配成功:"."$arr[0]";

else

echo "匹配失敗!";

?>

執行結果:匹配成功:aaa

/正則/m例項如下

<?php

$mode = "/^aaa/";

$string = "aaa/naaabbb";

if(preg_match($mode,$string,$arr))

echo "匹配成功:"."$arr[0]";

else

echo "匹配失敗!";

?>

執行結果:匹配失敗!

加上模式修正符m後

<?php

$mode = "/^aaa/m";

$string = "aaa/naaabbb";

if(preg_match($mode,$string,$arr))

echo "匹配成功:"."$arr[0]";

else

echo "匹配失敗!";

?>

執行結果:匹配成功:aaa

/正則/s例項如下

<?php

$mode = "/444(.*)222/";

$string = "444erw/n234222";

if(preg_match($mode,$string,$arr))

echo "匹配成功:"."$arr[0]";

else

echo "匹配失敗!";

?>

執行結果:匹配失敗!        //由於.是不括/n換行符的任何字元,所以匹配失敗了

加上模式修正符s後

<?php

$mode = "/444(.*)222/s";

$string = "444erw/n234222";

if(preg_match($mode,$string,$arr))

echo "匹配成功:"."$arr[0]";

else

echo "匹配失敗!";

?>

執行結果:匹配成功:444erw 234222    

//由於模式修正符su將/n換行符忽略掉換成了空格,所以匹配成功

/正則/x例項如下

<?php

$mode = "/(/d)//1 3/";

$string = "44222443";

if(preg_match($mode,$string,$arr))

echo "匹配成功:"."$arr[0]";

else

echo "匹配失敗!";

?>

執行結果:匹配失敗!

加上模式修正符x後

<?php

$mode = "/(/d)//1 3/x";         //模式修正符將1與3之間的空格去除並且先算//1再看數字3

$string = "44222443";

if(preg_match($mode,$string,$arr))

echo "匹配成功:"."$arr[0]";

else

echo "匹配失敗!";

?>

執行結果:匹配成功:443

/正則/a例項如下

<?php

$mode = "/^aaa/m";

$string = "aaa/naaabbb";

if(preg_match($mode,$string,$arr))

echo "匹配成功:"."$arr[0]";

else

echo "匹配失敗!";

?>

執行結果:匹配成功:aaa

加上模式修正符a後

<?php

$mode = "/^aaa/ma";             //模式修正符a強制從頭開始匹配,這使行模式修正符m多行匹配失去作用

$string = "aaa/naaabbb";

if(preg_match($mode,$string,$arr))

echo "匹配成功:"."$arr[0]";

else

echo "匹配失敗!";

?>

執行結果:匹配失敗!

/正則/d例項如下

<?php

$mode = "/321$/";

$string = "aaa/naaabbb321/n";

if(preg_match($mode,$string,$arr))

echo "匹配成功:"."$arr[0]";

else

echo "匹配失敗!";

?>

執行結果:匹配成功:321

加上模式修正符d後

<?php

$mode = "/321$/d";         //d 強制$匹配尾部無任何內容包括不能有/n

$string = "aaa/naaabbb321/n";

if(preg_match($mode,$string,$arr))

echo "匹配成功:"."$arr[0]";

else

echo "匹配失敗!";

?>

執行結果:匹配失敗!";

/正則/u例項如下

<?php

$mode = "/<(.+)>/";

$string = "sfew<3432>sdds<42423>ffdsf";

if(preg_match($mode,$string,$arr))

echo $arr[0];

else

echo "匹配失敗!";

?>

執行結果:<3432>sdds<42423>          //這時因為正規表示式在匹配時預設情況下是貪婪匹配

加上模式修正符u後

<?php

$mode = "/<(.+)>/u";

$string = "sfew<3432>sdds<42423>ffdsf";

if(preg_match($mode,$string,$arr))

echo $arr[0];

else

echo "匹配失敗!";

?>

執行結果:<3432>                     //加上模式修正符u後禁止貪婪匹配

二 字串和正規表示式 正規表示式函式

正規表示式函式 1.preg match 函式,實現字串的比對 int preg match string pattern,string subject,array matches 返回值 整數 陣列 本函式以 pattern 的規則來解析比對字串 subject。比對結果返回的值放在陣列引數 ma...

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

九 字串和正規表示式

在c 中string關鍵字實際對映為system string類,它實際上是乙個不可變的資料型別.system text stringbuilder類為可變資料型別,提高了追加字串的效率.可設定容量及最大容量,超出最大容量丟擲異常.iformattable介面,如果繼承此藉口,那麼在格式化函式中,會...