我製作了一個java程序,需要檢查一個字符串是否有三個或更多相同字母的子字符串。正則表達式中的重複符號
如果我寫[a-z]{3,}
那麼對於三個或更多字母的任何字符串都是如此,即使它們不相同。
例如,我有這些字符串:"abcd"
,"qwer"
和"aaabb"
。 [a-z]{3,}
適合所有人,我需要一個只適合"aaabb"
的表達式。
所以,請告訴我,我該怎麼寫這樣的正則表達式?」
我製作了一個java程序,需要檢查一個字符串是否有三個或更多相同字母的子字符串。正則表達式中的重複符號
如果我寫[a-z]{3,}
那麼對於三個或更多字母的任何字符串都是如此,即使它們不相同。
例如,我有這些字符串:"abcd"
,"qwer"
和"aaabb"
。 [a-z]{3,}
適合所有人,我需要一個只適合"aaabb"
的表達式。
所以,請告訴我,我該怎麼寫這樣的正則表達式?」
假設你只需要檢查ASCII字母,使用
([a-z])\1{2}
如果你想檢查任何重複的字符,使用
(.)\1{2}
在兩種情況下,\1
是反向引用到所述第一捕獲組(由(...)
構造)的內容,所以\1{2}
匹配([a-z])
或(.)
匹配的任意兩個重複。
要小心,在Java字符串加倍您的反斜槓:
Pattern regex = Pattern.compile("([a-z])\\1{2}");
使用捕捉
([a-z])\1{2}
這抓住了一封信,然後後它需要兩個捕獲信
謝謝非常! – 2013-04-04 17:33:29