老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

怎么在PHP中利用正則捕獲組與非捕獲組-創新互聯

這篇文章將為大家詳細講解有關怎么在PHP中利用正則捕獲組與非捕獲組,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

成都創新互聯公司從2013年開始,先為德安等服務建站,德安等地企業,進行企業商務咨詢服務。為德安企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

什么是捕獲組


我們先看一下PHP的正則匹配函數

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

前面兩項是我們常用的,$pattern是正則匹配模式,$string是要匹配的字符串。

array &$match,它是一個數組,&表示匹配出來的結果會被寫入$match中。

int $flags 如果傳遞了這個標記, 對于每一個出現的匹配返回時會附加字符串偏移量(相對于目標字符串的)。

int $offset 用于指定從目標字符串的某個未知開始搜索(單位是字節)。

我們主要看一下$match的值里會有什么:

$mode = '/a=(\d+)b=(\d+)c=(\d+)/';

$str='**a=4b=98c=56**';

$res=preg_match($mode,$str,$match);

var_dump($match);

結果如下:

array (size=4)
=> string 'a=4b=98c=56' (length=11)
=> string '4' (length=1)
=> string '98' (length=2)
=> string '56' (length=2)

現在我們知道了什么是捕獲組,捕獲組是正則表達示中以()括起來的部分,每一對()是一個捕獲組。

PHP會為它編號,從1開始。至于為什么會從1開始,那是因為PHP把匹配到的完整字符串編號為0。

如果有多個括號或嵌套括號,按左邊括號出現的順序來進行編號,如圖:

怎么在PHP中利用正則捕獲組與非捕獲組

按圖中的匹配模式匹配時,捕獲組的123號分別是紅綠藍。

捕獲組的忽略與命名

我們還可以阻止PHP為匹配組的編號:在匹配組中模式前加  ?:

$mode = '/a=(\d+)b=(?:\d+)c=(\d+)/';

這樣,匹配結果就會變成:

array (size=3)
=> string 'a=4b=98c=56' (length=11)
=> string '4' (length=1)
=> string '56' (length=2)

當然,我們也可以在括號的內部為它給它獨特的名字。

命名子組可以接受(?), (?'name') 以及(?P)語法. 之前版本僅接受(?P)語法.

例如:$mode = '/a=(\d+)b=(?P\d+)c=(\d+)/';

使用時結果為:

array (size=5)
=> string 'a=4b=98c=56' (length=11)
=> string '4' (length=1)

 'sec' => string '98' (length=2)
=> string '98' (length=2)
=> string '56' (length=2)

在保留索引數組的同時,加上一個關聯項,key值為捕獲組名。

捕獲組的反向引用


我們在用preg_replace()函數進行正則替換時,我們還可以使用 \n或 $n來引用第n個捕獲組.

$mode = '/a=(\d+)b=(\d+)c=(\d+)/';

$str='**a=4b=98c=56**';

$rp='\1/$2/\3/';

echo preg_replace($mode,$rp,$str);//**4/98/56/**

\1表示捕獲組1(4),$2為捕獲組2(98),\3為捕獲組3(56)。

非捕獲組的用法:

為什么稱為非捕獲組呢?那是因為它們有捕獲組的特性,在匹配模式的()中,但是匹配時,PHP不會為它們編組,它們只會影響匹配結果,并不作為結果輸出。


/d(?=xxx)   匹配"后面是xxx的一個數字"。

注意格式:只能放在匹配模式字符串之后

例如:

$pattern='/\d(?=abc)/';

$str="ab36abc8eg";

$res=preg_match($pattern,$str,$match);

var_dump($match);//6

匹配的6,因為只有它作為一個數字,后面還有abc。

(?<=xxx) /d匹配"前面是xxx的一個數字"

注意格式:只能放在匹配模式字符串之前

例如:

$pattern='/(?<=abc)\d/';

$str="ab36abc8eg";

$res=preg_match($pattern,$str,$match);

var_dump($match);//8

匹配的8,因為只有它作為一個數字,后面還有abc。

與(?=xxx)  (?<=xxx)相對的是(?!=xxx)  (?

它表示前面/后面不是xxx的字符串,這里就不再舉例了。

關于怎么在PHP中利用正則捕獲組與非捕獲組就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


文章名稱:怎么在PHP中利用正則捕獲組與非捕獲組-創新互聯
文章鏈接:http://www.xueling.net.cn/article/cdgsgj.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 韩国女主播bj精品久久 | 欧美性猛交久久久乱大交 | 一区二区三区观看 | 中文字幕日韩一区 | 亚洲午夜久久久国产精品 | 亚洲伊人色综合网色欲WWW | 欧美男生射精高潮视频网站 | 亚洲精品久久久打桩机小说 | 亚洲少妇一级片 | 亚洲国产精品VA在线观看香蕉 | 九九色在线 | 一级片免费看 | 奇米影视7777狠狠狠狠视频 | 免费观看黄色 | 日韩国产精品亚洲а∨天堂免 | 午夜激情在线视频 | 国内精品久久久久影院优 | 国内在线一区 | 丰满熟妇乱又伦在线无码视频 | 91色版 | 免费人成激情视频在线观看 | 国产精品VA在线观看无码不卡 | 久久久WWW影院人成 国产精品综合久久久久 | 一级特黄在线观看 | 国产乱码精品一区二区亚洲 | 14表妺好紧没带套在线播放 | 欧美三片| 日韩人妻无码一区二区三区综合部 | 中文字幕2018第一页 | 欧美V日韩V亚洲V最新在线观看 | 亚洲人成网7777777国产 | 一区二三区日韩精品 | 狠狠噜狠狠狠狠丁香五月 | 国内自产少妇自拍区免费 | 韩国三级丰满40少妇高潮 | 久久被窝亚洲精品爽爽爽 | 国产美女视频网站 | 久久精品无码一区二区小草 | 动漫女的被到爽羞羞 | 夜夜爽一区二区三区 | 透逼视频|