正则表达式 PHP
正則表達式的常用函數:
先寫一個函數show,用來輸出數組,使代碼看起來方便,且把經常重復用到的量放在前面
function show($var=null) {if(empty($var))//檢測變量是否為空{echo 'null';}elseif (is_array($var)||is_object($var))//檢測變量是否為數組或對象{echo '<pre>';print_r($var);echo '<pre>';}else{echo $var;}$pattern='/[0-9]/'; $subject="gyg87yuhg765t6rtfygvhfct7"; $replacement="¥";1.
preg_match($pattern,$subject,[array&matches])和preg_match_all($pattern,$subject,[array&matches])
作用:
進行匹配,返回匹配的個數
變量:
$pattern 正則表達式,$subject目標字符串,[array&matches] 把匹配到的字符串放到一個數組中,可選
區別:
preg_match($pattern,$subject,[array&matches])*****只進行一次匹配,返回值為匹配個數,只有0和1preg_match_all($pattern,$subject,[array&matches])***匹配完全部目標數據,返回匹配個數
例:
//preg_match($pattern,$subject,[array&matches])*****只進行一次匹配,返回值為匹配個數,只有0和1 //,preg_match_all($pattern,$subject,[array&matches])***匹配完全部目標數據,返回匹配個數 $m1=$m2=array();$t1=preg_match($pattern,$subject,$m1); $t2=preg_match_all($pattern,$subject,$m2);show($m1); echo "<hr />"; show($m2); echo "<hr />"; show($t1.'||'.$t2); echo "<hr />";2:
preg_replace($pattern,$replacement,$subject)preg_filter($pattern,$replacement,$subject)功能:
實現查找并替換
參數:
$replacement替換成的字符
返回值:
替換后的字符串
區別:
當subject對應數組單元中沒有滿足正則表達式的值時,preg_replace會保留原來的數組單元,preg_filter會刪除不符合表達式的數組單元,僅保留有滿足表達式的單元
普通字符串二者作用差不多
$re=preg_replace($pattern,$replacement,$subject); $fil=preg_filter($pattern,$replacement,$subject);show($re); echo "<br />"; show($fil);對象為數組時:
$pattern_rf=array('/[0123]/','/[456]/','/[789]/'); $replacement_rf=array('啊','西','吧'); $subject_rf=array('yty65','vh1jh','hghg','8uhhj','gggy'); $re_rf=preg_replace($pattern_rf,$replacement_rf,$subject_rf); $fil_rf=preg_filter($pattern_rf,$replacement_rf,$subject_rf);echo "<hr />"; show($re_rf); echo "<br />"; show($fil_rf);3:
preg_grep($pattern,$subject_rf)作用:
在目標數組中匹配并且只保留匹配到的數組的單元,相當于preg_filter取消替換功能
$gr=preg_grep($pattern,$subject_rf); echo "<hr />"; show($gr);4:
preg_split($pattern,$subject); preg_quote($str)作用:
preg_split通過pattern 匹配字符串,并以匹配到的字符串作為分割點分割字符串,將分割得到的若干字符串保存到一個數組中,作為函數返回值返回 preg_quote轉義
$spl=preg_split($pattern,$subject); echo "<hr />"; show($spl); echo "<hr />"; $str='{hhhhhhhhh[]}'; show($str); echo "<br />"; $str=preg_quote($str); show($str); echo "<hr />";
正則表達式的語法
1,界定符:
作用:
標志正則表達式開始和結束
類型:
//,##,{}推薦在線工具:regexpal
2.原子
分為可見原子和不可見原子,可見原子即可以看見的字符串,不可見原子即看不見的字符串,例如空格,制表,回車等
3.元字符:
元字符作用
1.表示原子的篩選方式:
|,[],[^]
[]表示匹配內部元素,如;[0-9]表示匹配0-9的數字,二[^]表示匹配除[]內的元素,注意:^必須更在[后面
2.表示原子的集合
各自的作用:
4.量詞
表示某個原子出現的次數
{n} ;表示某個原子恰好出現n次
{n,} :表示某個原子至少出現n次
{n,m}:表示某個原子至少出現n次,至多m次
*:表示某個原子至少出現0次
+:表示某個原子至少出現1次
?:表示某個原子至少出現0次,至多1次
5.邊界控制
^: 匹配字符串開始的位置
$: 匹配字符串結束的位置
匹配成功必須要以^之后的原子開始,以$之前的原子結束
6.模式單元
(pattern):模式單元中的正則表達式可以當作一個原子看待
7.修正符
1.貪婪匹配與懶惰匹配
貪婪匹配取其長,懶惰匹配(修正符:U)取其短
如上,使用貪婪匹配,匹配到第一個zjb后會繼續匹配,直到匹配完整個字符串,若使用懶惰匹配,則匹配到第一個zjb后就直接返回
常用修正符:
U:懶惰匹配
i:忽略大小寫
x:忽略空白
s:使.包含換行符,匹配所有
根據慕課網視頻所寫,原視頻鏈接
源代碼鏈接
總結
- 上一篇: 2799元即可畅享12GB+256GB超
- 下一篇: frame越过另一个frame_拥抱sw