2013-11-21 40 views
2

我想使用Java正則表達式檢查輸入字符串中第n次出現的特定模式。你能建議如何做到這一點?檢查Java中正則表達式中第n次出現的模式

+0

使用模式和匹配器。計數比賽並放棄所有比賽直到達到目標號碼。 – MightyPork

+0

他正在尋找重複的模式,而不是重複的人物。 –

+0

你試過了什麼代碼?如果你自己沒有做任何工作,我們不會幫助你。 –

回答

2

這應該工作:

MatchResult findNthOccurance(int n, Pattern p, CharSequence src){ 
    Matcher m = p.matcher(src); 
    for(int i = 0; i<n; i++) m.find(); 
    return m; 
} 

基本上,它只是調用find反覆從Pattern獲得Matcher。方便地,Matcher也是MatchResult,所以我可以直接返回它。

2

嗯,你可以做到以下幾點:

(?:[abc].*+){4}([abc]) 

這將匹配4個OCCURENCES的任何一個,b或c,然後什麼(非急切地匹配,使得任何一個,b或c不會與此相匹配的任何東西),其次是被捕獲組中的ab或c($ 1)。

只需將[abc]替換爲您正在查找的模式即可。用n替換在大括號的數量 - 1

相關問題