正則 捕獲組(capture group)
捕獲組有兩種形式
一種是普通的捕獲組,不產(chǎn)生歧義的情況下,后面簡(jiǎn)稱(chēng)捕獲組,語(yǔ)法規(guī)則:(expression);
另一種是命名捕獲組,語(yǔ)法規(guī)則:(?<name>expression)或者(?'name'expression),這兩種寫(xiě)法是等價(jià)的。
1、編號(hào)規(guī)則
如果沒(méi)有顯式為捕獲組命名,即沒(méi)有使用命名捕獲組,那么需要按數(shù)字順序來(lái)訪(fǎng)問(wèn)所有捕獲組
在只有普通捕獲組的情況下,捕獲組的編號(hào)是按照“(”出現(xiàn)的順序,從左到右編號(hào)的
(\d{4})-(\d{2}-(\d\d))
1 1 2 3 3 2
上面的正則表達(dá)式可以用來(lái)匹配格式為yyyy-MM-dd的日期,為了在下表中得以區(qū)分,采用了\d{2}和\d\d兩種寫(xiě)法
還有一個(gè)默認(rèn)編號(hào)為0的組,表示的是正則表達(dá)式的整體
用以上正則表達(dá)式匹配字符串:2008-12-31
匹配結(jié)果為:
| 編號(hào) | 命名 | 捕獲組 | 匹配內(nèi)容 |
| 0 | (\d{4})-(\d{2}-(\d\d)) | 2008-12-31 | |
| 1 | (\d{4}) | 2008 | |
| 2 | (\d{2}-(\d\d)) | 12-31 | |
| 3 | (\d\d) | 31 |
如果對(duì)組進(jìn)行了顯式命名,即命名捕獲組,那么捕獲的內(nèi)容可以通過(guò)組名稱(chēng)來(lái)引用
但是如果正則表達(dá)式中既使用了普通捕獲組,也使用了命名捕獲組,那么捕獲組的編號(hào)就要特別注意,編號(hào)的規(guī)則是先對(duì)普通捕獲組進(jìn)行編號(hào),再對(duì)命名捕獲組進(jìn)行編號(hào)
(\d{4})-(?<date>\d{2}-(\d\d))
1 1 3 2 23
用以上正則表達(dá)式匹配字符串:2008-12-31
匹配結(jié)果為:
| 編號(hào) | 命名 | 捕獲組 | 匹配內(nèi)容 |
| 0 | (\d{4})-(\d{2}-(\d\d)) | 2008-12-31 | |
| 1 | (\d{4}) | 2008 | |
| 2 | (\d\d) | 31 | |
| 3 | date | (?<date>\d{2}-(\d\d)) | 12-31 |
2、捕獲組的引用
對(duì)捕獲組的引用一般有以下幾種
a) 正則表達(dá)式中,對(duì)前面捕獲組捕獲的內(nèi)容進(jìn)行引用,稱(chēng)為反向引用
b) 正則表達(dá)式中,(?(表達(dá)式)true|false)的條件表達(dá)式
c) 在程序中,對(duì)捕獲組捕獲內(nèi)容的引用
反向引用
對(duì)于普通捕獲組的引用,語(yǔ)法規(guī)則為:\k<num>,通常簡(jiǎn)寫(xiě)為\num,其中num是十進(jìn)制的數(shù)字,即捕獲組的編號(hào)
對(duì)于命名捕獲組的引用,語(yǔ)法規(guī)則為:\k<name>或者\(yùn)k'name'
相關(guān)文章
正則文法與正則表達(dá)式的相互轉(zhuǎn)化問(wèn)題(編譯原理)
這篇文章主要介紹了正則文法與正則表達(dá)式的相互轉(zhuǎn)化問(wèn)題(編譯原理),?除了正則文法外,正則表達(dá)式也可以相應(yīng)的用來(lái)描述單詞,正則文法和正則表達(dá)式的能力相同,且可以互相轉(zhuǎn)化,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08
asp正則表達(dá)式匹配數(shù)字$數(shù)字$數(shù)字$
用asp實(shí)現(xiàn)的匹配:數(shù)字$數(shù)字$數(shù)字$...... 的正則2008-04-04
使用正則表達(dá)式判斷是否為手機(jī)號(hào)碼(簡(jiǎn)單且實(shí)用)
這篇文章主要介紹了使用正則表達(dá)式判斷是否為手機(jī)號(hào)碼(簡(jiǎn)單且實(shí)用)的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧2016-11-11
Java用正則對(duì)字符串進(jìn)行處理并判斷是否能轉(zhuǎn)為數(shù)字
這篇文章主要介紹了Java用正則對(duì)字符串進(jìn)行處理并判斷是否能轉(zhuǎn)為數(shù)字的實(shí)例代碼,代碼很簡(jiǎn)單,需要的朋友可以參考下2018-06-06
分享一組開(kāi)源的匹配中國(guó)大陸手機(jī)號(hào)碼的正則表達(dá)式
這篇文章主要介紹了分享一組開(kāi)源的匹配中國(guó)大陸手機(jī)號(hào)碼的正則表達(dá)式。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
js正則查找match()與替換replace()用法實(shí)例
這篇文章主要介紹了js正則查找match()與替換replace()用法,實(shí)例分析了js中正則的查找match()與替換replace()的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01

