正規表示式的模式修正符
模式修正符是為正規表示式增強和補充的乙個功能,使用在正則之外.
格式:/ 正則/ 模式修正符
常用模式修正符有:
i
正則內容在匹配時候不區分大小寫(預設是區分的)
m
在匹配首內容或者尾內容時候採用多行識別匹配
s 將轉義回車/n取消是為單行匹配如.
x
忽略正則中的空白
a
強制從頭開始匹配
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介面,如果繼承此藉口,那麼在格式化函式中,會...