我們什么時(shí)候使用正則表達(dá)式呢?不是所有的字符操作都用正則就好了,php在某些方面用正則反而影響效率。當(dāng)我們遇到復(fù)雜文本數(shù)據(jù)的解析時(shí)候,用正則是比較好的選擇。
優(yōu)點(diǎn)
正則表達(dá)式在處理復(fù)雜字符操作的時(shí)候,可以提高工作效率,也在一定程度節(jié)省你的代碼量。
缺點(diǎn)
我們?cè)谑褂谜齽t表達(dá)式的時(shí)候,復(fù)雜的正則表達(dá)式會(huì)加大代碼的 復(fù)雜度,讓人很 難理解。所以我們有的時(shí)候需要在正則表達(dá)式內(nèi)部添加注釋。
通用模式(推薦學(xué)習(xí):PHP編程從入門(mén)到精通)
定界符,通常使用 "/"做為定界符開(kāi)始和結(jié)束,也可以使用"#"。
什么時(shí)候使用"#"呢?一般是在你的字符串中有 很多"/"字符的時(shí)候,因?yàn)檎齽t的時(shí)候這種字符需要轉(zhuǎn)義,比如uri。
使用"/"定界符的代碼如下.
$regex = '/^http://([w.]+)/([w]+)/([w]+).html$/i'; $str = 'http://www.youku.com/show_page/id_ABCDEFG.html'; $matches = array(); if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "n";
preg_match中的$matches[0]將包含與整個(gè)模式匹配的字符串。
使用"#"定界符的代碼如下.這個(gè)時(shí)候?qū)?quot;/"就不轉(zhuǎn)義!
$regex = '#^http://([w.]+)/([w]+)/([w]+).html$#i'; $str = 'http://www.youku.com/show_page/id_ABCDEFG.html'; $matches = array(); if(preg_match($regex, $str, $matches)){ var_dump($matches); } echo "n";
正則表達(dá)式的定義可以這樣簡(jiǎn)單概括:“正則表達(dá)式描述了一種字符串匹配的模式,通過(guò)這個(gè)模式在特定的函數(shù)中對(duì)字符串進(jìn)行匹配、查找、替換及分割等操作。作為一個(gè)匹配模板,是由原子、特有功能字符及模式修正符三部分組成的文字模式。”