我创建一个java程序,需要检查字符串是否有三个或更多相同字母的子字符串。
如果我写[a-z]{3,}
,那么对于任何三个或更多字母的字符串都是如此,即使它们不相同。
例如,我有以下字符串:"abcd"
,"qwer"
和"aaabb"
。 [a-z]{3,}
适合所有人,我需要一个仅适合"aaabb"
的表达式。
那么请告诉我如何编写这样的正则表达式?“
答案 0 :(得分:5)
假设您只想检查ASCII字母,请使用
([a-z])\1{2}
如果要查看任何重复的字符,请使用
(.)\1{2}
在这两种情况下,\1
都是对第一个捕获组内容的反向引用(由(...)
构造),因此\1{2}
匹配{{1}匹配的两个重复内容}或([a-z])
。
小心将Java字符串中的反斜杠加倍:
(.)
答案 1 :(得分:4)
使用捕获
([a-z])\1{2}
这会捕获该字母,然后需要两个捕获字母