【The Java? Tutorials】【Regular Expressions】7. Capturing Groups

編號(hào)

正則表達(dá)式((A)(B(C)))中有4個(gè)capturing group,它們分別是:

  1. ((A)(B(C)))
  2. (A)
  3. (B(C))
  4. (C)

編號(hào)其實(shí)很簡(jiǎn)單,從左向右找左括號(hào)就行。調(diào)用Matcher對(duì)象中的groupCount方法會(huì)返回該正則表達(dá)中capturing group的數(shù)量。

其實(shí)還有一個(gè)特殊的group,group 0,它表示整個(gè)正則表達(dá)式,它不被groupCount計(jì)算在內(nèi)。

知道group的編號(hào)是很重要的,因?yàn)镸atcher中很多方法接收group編號(hào)作為形參,比如:

  • public int start(int group): Returns the start index of the subsequence captured by the given group during the previous match operation.
  • public int end (int group): Returns the index of the last character, plus one, of the subsequence captured by the given group during the previous match operation.
  • public String group (int group): Returns the input subsequence captured by the given group during the previous match operation.

比如我們的正則表示是(面積:)(\d)+,我們想得到面積是多少:


(面積:)(\d)+

但是這個(gè)正則表達(dá)匹配到的是“面積:123”,但是我們只想要“123”這個(gè)數(shù)字,這個(gè)時(shí)候我們就可以通過調(diào)用group(2)來直接得到這個(gè)數(shù)字。

反向引用(backreference)

我們先來看一個(gè)場(chǎng)景,再來解釋什么是反向引用。我們想匹配像1212,2323這樣數(shù)字,即第一位和第三位一樣,第二位和第四位一樣。用我們前面學(xué)的知識(shí)好像沒法解決。這個(gè)時(shí)候反向引用就派上用場(chǎng)了:

The section of the input string matching the capturing group(s) is saved in memory for later recall via backreference. A backreference is specified in the regular expression as a backslash (\) followed by a digit indicating the number of the group to be recalled.

我們來看一下如何用反向應(yīng)用解決我們的問題:


反向引用

其中\(zhòng)1就表示group 1匹配到的內(nèi)容。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,854評(píng)論 0 10
  • 哎呀呀,今天沒時(shí)間簡(jiǎn)書了,毛草草湊一下數(shù)! 題與文無關(guān),只是想表達(dá):早上的煩惱并不能阻擋晚間喜悅的涌現(xiàn)!所以,看開...
    漁姑娘mama_碎生活痕跡閱讀 403評(píng)論 3 13
  • 被雪景刷屏。L小姐跳出來,說羨慕。突然有點(diǎn)氣。 哪有那么浪漫美好。 前兩年的新年假期,大雪紛紛。躺在被窩里遠(yuǎn)遠(yuǎn)看著...
    唐四月閱讀 197評(píng)論 0 1
  • 第一部分 情人節(jié)那天,趙凡汩如期收到19朵玫瑰,卡片上留言:“親愛的,節(jié)日快樂!”和往年一樣,連個(gè)標(biāo)點(diǎn)符號(hào)都沒變。...
    君英閱讀 393評(píng)論 0 0
  • 阿喵從睡夢(mèng)中醒來,身上的衣服已被褪去。他驚恐的看著二人。 “夜神閣出事了!” 邊白打了個(gè)哈欠,倒在臥室的沙發(fā)上,全...
    吃干抹盡閱讀 283評(píng)論 4 0

友情鏈接更多精彩內(nèi)容