如果字符串具有相同的连续字符,我想识别它。所以,我想要一个返回以下内容的方法:
到目前为止,我已经想出了这个:
public static boolean hasConsecutiveDuplicateCharacter(String str) {
return (str.matches("(.)\\1"));
}
但它不起作用。
答案 0 :(得分:2)
您不希望模式与整个字符串匹配。相反,您希望找到匹配的子字符串。
为此,请使用Matcher#find
public static boolean hasConsecutiveDuplicateCharacter(String str) {
Pattern p = Pattern.compile("(.)\\1");
Matcher m = p.matcher(str);
return m.find();
}
答案 1 :(得分:1)
涉及反向引用的正则表达式逻辑在逻辑上是正确的。但是,String#matches()
将匹配模式的整个字符串。因此,如果您使用覆盖整个字符串的模式,则您的帮助方法应该起作用:
.*(.)\\1.*
<强>代码:强>
public static boolean hasConsecutiveDuplicateCharacter(String str) {
return (str.matches(".*(.)\\1.*"));
}
您是否决定使用matches()
或使用正式模式匹配器取决于您的需求等,但无论如何我相信matches
无论如何都会使用匹配器。
答案 2 :(得分:0)