欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

正則 捕獲組(capture group)

 更新時(shí)間:2023年05月28日 11:00:44   投稿:mdxy-dxy  
捕獲組就是把正則表達(dá)式中子表達(dá)式匹配的內(nèi)容,保存到內(nèi)存中以數(shù)字編號(hào)或手動(dòng)命名的組里,方便后面引用

捕獲組有兩種形式

一種是普通的捕獲組,不產(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
3date(?<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)文章

最新評(píng)論