【发布时间】:2016-04-06 12:54:54
【问题描述】:
我目前正在尝试在 Java 中创建一个正则表达式,如果输入字符串中存在任何重复字符,则返回 true,否则返回 false,正则表达式尽可能短(用于代码高尔夫挑战)。我不太擅长正则表达式,但我认为这样可以解决问题:
(.)\\1
其中(.) 是任意字符,\\1 是对在正则表达式第一部分中找到的匹配项的引用。
但是,如果我尝试输入“1223”,它不起作用:
public static void main(String[] a){
System.out.println(java.util.regex.Pattern.matches("(.)\\1", "1223"));
}
这返回 false,而我期待 true 因为 22。
有谁知道如何使用java.util.regex.Pattern.matches 或更短的方式修复正则表达式,因为它是代码高尔夫? ;)
【问题讨论】:
-
.matches需要完整的字符串匹配,请使用".*(.)\\1.*"。或者使用你的Matcher.find()。 -
@WiktorStribiżew 啊,那是我的问题!谢谢。如果您愿意,可以将其添加为答案。我知道这与我对
.matches..的误解有关。 -
System.out.println(java.util.regex.Pattern.compile("(.)\\1").matcher("1223").find()); -
@WiktorStribiżew 感谢您的回答。
-
@Hackerdarshi 你的评论有什么意义?这是正则表达式的一个具体问题,在这里非常好。