PCRE模式是PHP的正則匹配規則。
須要由分隔符閉合包裹(分隔符能夠是任意非字母數字,非反斜線,非空白字符)這意味着例如preg_macth("[\w{2,3}]",$subject)這種類型的正則匹配也是能夠的。固然常見的仍是/\w{2,3}/這種,當裏面須要轉義的反斜線太多的時候,能夠考慮用其餘類型的分隔符進行閉合包裹。
例如:/http:\/\// 能夠寫成@http ://@ 這種 也能夠匹配到http://開頭的。分隔符結束後,能夠增長模式修飾符(模式修飾符實際上是匹配功能的加強好比設置了i就會對大小寫不敏感 m是進行多行匹配 s點號不匹配換行符號)
基礎正則使用小結:(最經常使用看到的匹配)
\ 反斜線轉義的時候使用,匹配反斜線須要\\
[abc] {2,5} 匹配abc中任何一個字母組成的2-5長度的字符串
{^123$}m 匹配123開頭結尾的行
三個字符串的等價使用:
* = {0,}
+ ={1,}
? ={0,1}
下面是preg_replace($pattern,$replace,$subject)的匹配進行例子講解(實際中的正則匹配比語法複雜的多)
1.正則匹配的分組調用
php
<?php $string = 'April 15, 2003'; //對正則進行三重匹配 \w+的匹配\d+的匹配,\d+的匹配 $pattern = '/(\w+) (\d+), (\d+)/i'; //對匹配到的三個參數進行提取運用其中$1 $2 $3 分別表明對應三個變量 $replacement = '${1}10,$3'; //提取第一個和第三個匹配結果放到字符串裏面 進行替換 echo preg_replace($pattern, $replacement, $string); ?>
2.移除多餘的空格正則匹配 \s表明匹配一個空格字符\s+表明匹配一個空格字符串+
$str = preg_replace('/\s\s+/', ' ', $str);
3.匹配的分組使用(能夠把各類可能匹配到的正則填入正則數組,用後一個進行替換選擇)
preg_replace(array('/\d/', '/\s/'), '*', $str);
4.?: 不匹配某個符號的用法 匹配到某個字符串結束
preg_replace("/(?:<)(.*)(?:>)/i",$str, $result);
匹配<>內的內容 同時用$str替換掉
aaa<bbb>cdc 匹配到的是bbb
數組