正則 捕獲組(capture group)
捕獲組有兩種形式
一種是普通的捕獲組,不產(chǎn)生歧義的情況下,后面簡(jiǎn)稱捕獲組,語(yǔ)法規(guī)則:(expression);
另一種是命名捕獲組,語(yǔ)法規(guī)則:(?<name>expression)或者(?'name'expression),這兩種寫法是等價(jià)的。
1、編號(hào)規(guī)則
如果沒有顯式為捕獲組命名,即沒有使用命名捕獲組,那么需要按數(shù)字順序來(lái)訪問所有捕獲組
在只有普通捕獲組的情況下,捕獲組的編號(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兩種寫法
還有一個(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)容可以通過組名稱來(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)行引用,稱為反向引用
b) 正則表達(dá)式中,(?(表達(dá)式)true|false)的條件表達(dá)式
c) 在程序中,對(duì)捕獲組捕獲內(nèi)容的引用
反向引用
對(duì)于普通捕獲組的引用,語(yǔ)法規(guī)則為:\k<num>,通常簡(jiǎn)寫為\num,其中num是十進(jìn)制的數(shù)字,即捕獲組的編號(hào)
對(duì)于命名捕獲組的引用,語(yǔ)法規(guī)則為:\k<name>或者\(yùn)k'name'
相關(guān)文章
正則表達(dá)式匹配括號(hào)外的符號(hào)及數(shù)據(jù)
這篇文章主要介紹了正則表達(dá)式匹配括號(hào)外的符號(hào)及數(shù)據(jù),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06一文搞懂正則表達(dá)式基礎(chǔ)語(yǔ)法以及如何應(yīng)用
正則表達(dá)式是一種描述字符串結(jié)構(gòu)的語(yǔ)法規(guī)則,是用于匹配字符串中字符組合的模式,同時(shí)正則表達(dá)式也是對(duì)象,下面這篇文章主要給大家介紹了關(guān)于如何通過一文搞懂正則表達(dá)式基礎(chǔ)語(yǔ)法以及如何應(yīng)用的相關(guān)資料,需要的朋友可以參考下2022-09-09JS正則表達(dá)式驗(yàn)證數(shù)字(非常全)
正則表達(dá)式,又稱規(guī)則表達(dá)式,在項(xiàng)目中經(jīng)常會(huì)用到正則表達(dá)式,今天小編抽空給大家分享js正則表達(dá)式驗(yàn)證數(shù)字的方法,感興趣的朋友參考下吧2016-12-12