我的要求是只使用 Java 正则表达式来检查给定字符串是否包含在字符串中连续重复3次以上的相同字符。
例如:
"hello" -> false
"ohhhhh" -> true
"whatsuppp" -> true
答案 0 :(得分:7)
您可以使用以下正则表达式来解决您的问题:
^.*(.)\1\1.*$
<强>解释强>
^
字符串的起点.*
任何字符0到N次(.)
捕获组中将由反向引用\1
对捕获的角色的反向引用(我们称它为两次强制你的3次重复约束).*
任何字符0到N次$
输入字符串的结尾我已经测试过了:
hello -> false
ohhhhh -> true
whatsuppp -> true
aaa -> true
aaahhhahj -> true
abcdef -> false
abceeedef -> true
最后但并非最不重要的一点是,您必须在正则表达式中的每个反斜杠\
之前添加反斜杠\
,然后才能在Java代码中使用它。
这将为您提供以下原型Java代码:
ArrayList <String> strVector = new ArrayList<String>();
strVector.add("hello");
strVector.add("ohhhhh");
strVector.add("whatsuppp");
strVector.add("aaa");
strVector.add("aaahhhahj");
strVector.add("abcdef");
strVector.add("abceeedef");
Pattern pattern = Pattern.compile("^.*(.)\\1\\1.*$");
Matcher matcher;
for(String elem:strVector)
{
System.out.println(elem);
matcher = pattern.matcher(elem);
if (matcher.find())System.out.println("Found you!");
else System.out.println("Not Found!");
}
执行以下输出:
hello
Not Found!
ohhhhh
Found you!
whatsuppp
Found you!
aaa
Found you!
aaahhhahj
Found you!
abcdef
Not Found!
abceeedef
Found you!