我制作了一个 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])
or匹配的任何内容的两次重复(.)
。
小心将 Java 字符串中的反斜杠加倍:
Pattern regex = Pattern.compile("([a-z])\\1{2}");
使用捕获
([a-z])\1{2}
这会捕获字母,然后在它之后需要两个捕获字母