我目前正试图在Java中创建一个正则表达式,如果输入字符串中存在任何重复的字符,则返回true,否则返回false,正则表达式尽可能短(对于代码高尔夫挑战)。我不是很擅长正则表达式,但我认为这样做可以解决问题:
(.)\\1
(.)
是任何字符,\\1
是对正则表达式第一部分中匹配项的引用。
但是,如果我尝试输入" 1223
",它就无法运作:
public static void main(String[] a){
System.out.println(java.util.regex.Pattern.matches("(.)\\1", "1223"));
}
由于22
而我期待真实,因此返回false。
有没有人知道如何使用java.util.regex.Pattern.matches
修正正则表达式,或更短的内容,因为它代码高尔夫? ;)
答案 0 :(得分:3)
Pattern.matches(regex, sequence)
返回整个字符串是否与regex
对应,而不是存在匹配的子字符串。
对于您要做的事情,您可以做以下两件事之一:
".*(.)\\1.*"
代替使用Matcher
类:
Matcher m = Pattern.compile(regex).matcher(sequence).find();
int start = m.start();
int end = m.end();
答案 1 :(得分:3)