php使用正則表達(dá)式提取字符串中尖括號、小括號、中括號、大括號中的字符串
一、小括號()、中括號[]、大括號的區(qū)別
1>. 小括號():匹配小括號內(nèi)的字符串,可以是一個,也可以是多個,常跟“|”(或)符號搭配使用,是多選結(jié)構(gòu)的
示例1:string name = "way2014"; regex:(way|zgw) result:結(jié)果是可以匹配出way的,因為是多選結(jié)構(gòu),小括號是匹配字符串的
示例2:string text = "123456789"; regex:(0-9) result:結(jié)果是什么都匹配不到的,它只匹配字符串"0-9"而不是匹配數(shù)字, [0-9]這個字符組才是匹配0-9的數(shù)字
2>.中括號[]:匹配字符組內(nèi)的字符,比如咱們常用的[0-9a-zA-Z.*?!]等,在[]內(nèi)的字符都是字符,不是元字符,比如“0-9”、“a-z”這中間的“-”就是連接符號,表示范圍的元字符,如果寫成[-!?*(]這樣的話,就是普通字符
示例1: string text = "1234567890"; regex:[0-9] result:結(jié)果是可以匹配出字符串text內(nèi)的任意數(shù)字了,像上邊的【或符號“|”在字符組內(nèi)就是一個普通字符】
示例2:string text = "a|e|s|v"; regex:[a|e|s] result:結(jié)果就是匹配字符a、e、|三個字符,這個跟(a|e|s)有區(qū)別的,區(qū)別就是(a|e|s)匹配的是a、e、s三個字符的隨意一個,三個中的任意一個,這是的|是元字符
3>.大括號{}:匹配次數(shù),匹配在它之前表達(dá)式匹配出來的元素出現(xiàn)的次數(shù),{n}出現(xiàn)n次、{n,}匹配最少出現(xiàn)n次、{n,m}匹配最少出現(xiàn)n次,最多出現(xiàn)m次
更多的可以參考這篇文章:http://m.fzitv.net/article/141294.htm
測試代碼
$str="你好<我>(愛)[北京]{天安門}";
echo f1($str); //返回你好
echo f2($str); //返回我
echo f3($str); //返回愛
echo f4($str); //返回北京
echo f5($str); //返回天安門
function f1($str)
{
$result = array();
preg_match_all("/^(.*)(?:<)/i",$str, $result);
return $result[1][0];
}
function f2($str)
{
$result = array();
preg_match_all("/(?:<)(.*)(?:>)/i",$str, $result);
return $result[1][0];
}
function f3($str)
{
$result = array();
preg_match_all("/(?:\()(.*)(?:\))/i",$str, $result);
return $result[1][0];
}
function f4($str)
{
$result = array();
preg_match_all("/(?:\[)(.*)(?:\])/i",$str, $result);
return $result[1][0];
}
function f5($str)
{
$result = array();
preg_match_all("/(?:\{)(.*)(?:\})/i",$str, $result);
return $result[1][0];
}
PS: (?:字符) 表示不捕獲這個字符。貌似PHP不支持將字符換成括號。
否則的話可以將環(huán)視給嵌套進(jìn)去,就可以循環(huán)匹配了。
PS2:環(huán)視:(?!) (?=) (?<!) (?<=)
有小于號的在右側(cè)匹配,沒有的在左側(cè)匹配。感嘆號表示不等,等于號表示相等。
PS3:都過了驗證器的驗證,驗證器見參考資料。
PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:
JavaScript正則表達(dá)式在線測試工具:
http://tools.jb51.net/regex/javascript
正則表達(dá)式在線生成工具:
http://tools.jb51.net/regex/create_reg
- 正則表達(dá)式匹配括號外的符號及數(shù)據(jù)
- java正則表達(dá)式獲取大括號小括號內(nèi)容并判斷數(shù)字和小數(shù)親測可用
- 正則表達(dá)式中test、exec、match的區(qū)別介紹及括號的用法
- Python正則表達(dá)式實現(xiàn)截取成對括號的方法
- 使用JS正則表達(dá)式 替換括號,尖括號等
- 淺談JS正則表達(dá)式的RegExp對象和括號的使用
- python正則表達(dá)式中的括號匹配問題
- 正則表達(dá)式(括號)、[中括號]、{大括號}的區(qū)別小結(jié)
- JS 正則表達(dá)式中小括號的應(yīng)用
- 正則表達(dá)式去除中括號(符號)及里面包含的內(nèi)容
相關(guān)文章
100多行PHP代碼實現(xiàn)socks5代理服務(wù)器[2]
這篇文章主要介紹了100多行PHP代碼實現(xiàn)socks5代理服務(wù)器,需要的朋友可以參考下2016-05-05
在win7中搭建Linux+PHP 開發(fā)環(huán)境
這篇文章會以一個概覽的形式介紹我的 PHP 開發(fā)環(huán)境,列出我使用的工具,但配置過程不會太詳細(xì)。有需要的朋友可以參考下。2014-10-10
php實現(xiàn)的太平洋時間和北京時間互轉(zhuǎn)的自定義函數(shù)分享
這篇文章主要介紹了php實現(xiàn)的太平洋時間和北京時間互轉(zhuǎn)的自定義函數(shù)分享,主要靠date_default_timezone_set函數(shù)來實現(xiàn),需要的朋友可以參考下2014-08-08

