2012-01-26 73 views
2

我想查找單個字符的重複次數,其中字符重複3次或更多次。 "444","sss""------"應該被識別,而"dd"不應被識別。使用正則表達式識別字符的重複

我碰到這給瞭解決方案,以前的StackOverflow問題:

regexp = re.compile(r"(.)\1") 

然而,這種標識2次或多次重複相同的性質。 我試過(r"(.)\{3,}")哪個不行,而(r"(.)\3")給出了一個錯誤。 有人可以請給我正確的正則表達式嗎?

回答

5

你想要(r"(.)\1\1")(或甚至(r"(.)\1\1+"))。

的正則表達式是「匹配任何字符(.),然後再(\1)匹配相同的字符,然後是第三個時間(第一方案我已經在這裏了)匹配相同的字符或匹配相同的字符一個或更多的額外時間(對於上面的第二個變體)

+0

我試着用st =「111」的正則表達式按以下方式're.findall(r「(。)\ 1 \ 1」,st)'但我的輸出是'['1']'而不是'['111']'。爲什麼會這樣? – RanRag

+1

@RanRag:那是因爲括號只在第一個字符的周圍。 「)'如果你需要捕獲整個東西 – Borealid

+0

是的,想通了。謝謝 – RanRag