php使用正則表達(dá)式提取字符串中尖括號(hào)、小括號(hào)、中括號(hào)、大括號(hào)中的字符串
一、小括號(hào)()、中括號(hào)[]、大括號(hào)的區(qū)別
1>. 小括號(hào)():匹配小括號(hào)內(nèi)的字符串,可以是一個(gè),也可以是多個(gè),常跟“|”(或)符號(hào)搭配使用,是多選結(jié)構(gòu)的
示例1:string name = "way2014"; regex:(way|zgw) result:結(jié)果是可以匹配出way的,因?yàn)槭嵌噙x結(jié)構(gòu),小括號(hào)是匹配字符串的
示例2:string text = "123456789"; regex:(0-9) result:結(jié)果是什么都匹配不到的,它只匹配字符串"0-9"而不是匹配數(shù)字, [0-9]這個(gè)字符組才是匹配0-9的數(shù)字
2>.中括號(hào)[]:匹配字符組內(nèi)的字符,比如咱們常用的[0-9a-zA-Z.*?!]等,在[]內(nèi)的字符都是字符,不是元字符,比如“0-9”、“a-z”這中間的“-”就是連接符號(hào),表示范圍的元字符,如果寫成[-!?*(]這樣的話,就是普通字符
示例1: string text = "1234567890"; regex:[0-9] result:結(jié)果是可以匹配出字符串text內(nèi)的任意數(shù)字了,像上邊的【或符號(hào)“|”在字符組內(nèi)就是一個(gè)普通字符】
示例2:string text = "a|e|s|v"; regex:[a|e|s] result:結(jié)果就是匹配字符a、e、|三個(gè)字符,這個(gè)跟(a|e|s)有區(qū)別的,區(qū)別就是(a|e|s)匹配的是a、e、s三個(gè)字符的隨意一個(gè),三個(gè)中的任意一個(gè),這是的|是元字符
3>.大括號(hào){}:匹配次數(shù),匹配在它之前表達(dá)式匹配出來的元素出現(xiàn)的次數(shù),{n}出現(xiàn)n次、{n,}匹配最少出現(xiàn)n次、{n,m}匹配最少出現(xiàn)n次,最多出現(xiàn)m次
更多的可以參考這篇文章:http://www.dbjr.com.cn/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: (?:字符) 表示不捕獲這個(gè)字符。貌似PHP不支持將字符換成括號(hào)。
否則的話可以將環(huán)視給嵌套進(jìn)去,就可以循環(huán)匹配了。
PS2:環(huán)視:(?!) (?=) (?<!) (?<=)
有小于號(hào)的在右側(cè)匹配,沒有的在左側(cè)匹配。感嘆號(hào)表示不等,等于號(hào)表示相等。
PS3:都過了驗(yàn)證器的驗(yàn)證,驗(yàn)證器見參考資料。
PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:
JavaScript正則表達(dá)式在線測試工具:
http://tools.jb51.net/regex/javascript
正則表達(dá)式在線生成工具:
http://tools.jb51.net/regex/create_reg
- 正則表達(dá)式匹配括號(hào)外的符號(hào)及數(shù)據(jù)
- java正則表達(dá)式獲取大括號(hào)小括號(hào)內(nèi)容并判斷數(shù)字和小數(shù)親測可用
- 正則表達(dá)式中test、exec、match的區(qū)別介紹及括號(hào)的用法
- Python正則表達(dá)式實(shí)現(xiàn)截取成對(duì)括號(hào)的方法
- 使用JS正則表達(dá)式 替換括號(hào),尖括號(hào)等
- 淺談JS正則表達(dá)式的RegExp對(duì)象和括號(hào)的使用
- python正則表達(dá)式中的括號(hào)匹配問題
- 正則表達(dá)式(括號(hào))、[中括號(hào)]、{大括號(hào)}的區(qū)別小結(jié)
- JS 正則表達(dá)式中小括號(hào)的應(yīng)用
- 正則表達(dá)式去除中括號(hào)(符號(hào))及里面包含的內(nèi)容
相關(guān)文章
PHP各種異常和錯(cuò)誤的攔截方法及發(fā)生致命錯(cuò)誤時(shí)進(jìn)行報(bào)警
在日常開發(fā)中,大多數(shù)人的做法是在開發(fā)環(huán)境時(shí)開啟調(diào)試模式,在產(chǎn)品環(huán)境關(guān)閉調(diào)試模式。在開發(fā)的時(shí)候可以查看各種錯(cuò)誤、異常,但是在線上就把錯(cuò)誤顯示的關(guān)閉2016-01-01laravel實(shí)現(xiàn)分頁樣式替換示例代碼(增加首、尾頁)
這篇文章主要給大家介紹了關(guān)于laravel實(shí)現(xiàn)分頁樣式替換的相關(guān)資料,實(shí)現(xiàn)了增加首、尾頁的功能,文章通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-09-09destoon調(diào)用discuz論壇中帶圖片帖子的實(shí)現(xiàn)方法
這篇文章主要介紹了destoon調(diào)用discuz論壇中帶圖片帖子的實(shí)現(xiàn)方法,是destoon開發(fā)中非常實(shí)用的一個(gè)技巧,需要的朋友可以參考下2014-08-08destoon二次開發(fā)模板及調(diào)用語法匯總
這篇文章主要介紹了destoon二次開發(fā)模板及調(diào)用語法,需要的朋友可以參考下2014-06-06ThinkPHP6通過Ucenter實(shí)現(xiàn)注冊登錄的示例代碼
這篇文章主要介紹了ThinkPHP6通過Ucenter實(shí)現(xiàn)注冊登錄的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01關(guān)于php微信訂閱號(hào)開發(fā)之token驗(yàn)證后自動(dòng)發(fā)送消息給訂閱號(hào)但是沒有消息返回的問題
最近做了個(gè)項(xiàng)目,當(dāng)token驗(yàn)證之后,發(fā)送消息給訂閱號(hào),但是沒有消息返回,下面小編通過本篇文章給大家分享我的解決辦法2015-12-12php解析mht文件轉(zhuǎn)換成html的實(shí)例
下面小編就為大家?guī)硪黄猵hp解析mht文件轉(zhuǎn)換成html的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03