2011-07-18 39 views
3

我想測試一個字符串(在java中)9個相鄰的相同數字...我可以測試相鄰的相同數字 - 但只有下一個相鄰數字....正則表達式 - 測試9個相鄰的相同數字

boolean result = string.matches("/([0-9])\1/g"); 

我想匹配9個字符 - 任何人能幫助我嗎?

感謝

編輯:一些例子

"1111111111" should match 

"222222222" should match 

"3311111111133" should match 

"1234567890" should not match 

回答

6

試試這個正則表達式:([0-9])\1{8}

+0

完美 - 感謝 – ManseUK

+0

@ManseUK,歡迎你! –

+0

注意:只會在「3311111111133」中找到「find」,但不會按要求「匹配」 - 在表達式的開始和結尾處缺少「。*」。 –

3

Java的貪婪量詞:

X{n} machtches:X,恰好n次

X將是任何數字= [0-9]和n是9

([0-9]{9}) 

編輯:

這將匹配9個相同的數字:

([0-9]\1{8}) 

[0-9] machtes任何數量

\1是第一個匹配,其中執行

\1{8}匹配的第一個比賽

+0

這是要爲以下字符串工作1111111111 ...其中字符串是10個字符? – ManseUK

+0

數字必須相同。 –

+0

感謝您的解釋... – ManseUK

0

我發現基里爾舒克回答罰款和良好的8倍。然而,在少數情況下,如果你要打印的由空格隔開(如在一個文本文件)9個相鄰的字符,則可以執行以下操作:

輸入:

1111111111 4444444444 4455555555558899 567833333333339 

的正則表達式可以被修改爲如下:

'([0-9]) ?\1{8}'如果你只有一列之間的空間。 或

'([0-9]) *\1{1}'如果你有奇數列之間的空間。

如果你想使用grep使用,你可以這樣來做:

grep -E '([0-9]) ?\1{8}' 

grep -E '([0-9]) *\1{8}' 

希望這有助於。

相關問題