2013-04-04 44 views
1

我製作了一個java程序,需要檢查一個字符串是否有三個或更多相同字母的子字符串。正則表達式中的重複符號

如果我寫[a-z]{3,}那麼對於三個或更多字母的任何字符串都是如此,即使它們不相同。

例如,我有這些字符串:"abcd""qwer""aaabb"[a-z]{3,}適合所有人,我需要一個只適合"aaabb"的表達式。

所以,請告訴我,我該怎麼寫這樣的正則表達式?」

回答

4

假設你只需要檢查ASCII字母,使用

([a-z])\1{2} 

如果你想檢查任何重複的字符,使用

(.)\1{2} 

在兩種情況下,\1是反向引用到所述第一捕獲組(由(...)構造)的內容,所以\1{2}匹配([a-z])(.)匹配的任意兩個重複。

要小心,在Java字符串加倍您的反斜槓:

Pattern regex = Pattern.compile("([a-z])\\1{2}"); 
+0

謝謝非常! – 2013-04-04 17:33:29

4

使用捕捉

([a-z])\1{2} 

這抓住了一封信,然後後它需要兩個捕獲信