1

我制作了一个 java 程序,需要检查一个字符串是否包含三个或更多相同字母的子字符串。

如果我写[a-z]{3,},那么对于任何三个或更多字母的字符串都是如此,即使它们不一样。

例如,我有这些字符串"abcd""qwer""aaabb". [a-z]{3,}适合所有这些,我需要一个只适合的表达式"aaabb"

那么请告诉我如何编写这样的正则表达式?”

4

2 回答 2

5

假设您只想检查 ASCII 字母,请使用

([a-z])\1{2}

如果要检查任何重复的字符,请使用

(.)\1{2}

在这两种情况下,\1都是对第一个捕获组的内容的反向引用(由 构造(...)),因此\1{2}匹配由([a-z])or匹配的任何内容的两次重复(.)

小心将 Java 字符串中的反斜杠加倍:

Pattern regex = Pattern.compile("([a-z])\\1{2}");
于 2013-04-04T17:28:16.583 回答
4

使用捕获

([a-z])\1{2}

这会捕获字母,然后在它之后需要两个捕获字母

于 2013-04-04T17:28:17.257 回答