我怎样才能find重复字符在Java中的正则expression式?

任何人都可以给我一个Java正则expression式来识别string中的重复字符? 我只是在寻找立即重复的字符,他们可以是字母或数字。

例:

abccde < – 寻找这个(立即重复C的)

abcdce < – 不是(c由另一个字符分隔)

试试"(\\w)\\1+"

\\w匹配任何单词字符(字母,数字或下划线),并且\\1+与第一组圆括号内的任何内容匹配一次或多次。 所以,你find匹配一个单词字符的任何事件,然后立即再一个或多个相同的单词字符。

(请注意,我把正则expression式作为一个Javastring,也就是说反斜杠已经加倍了)

 String stringToMatch = "abccdef"; Pattern p = Pattern.compile("(\\w)\\1+"); Matcher m = p.matcher(stringToMatch); if (m.find()) { System.out.println("Duplicate character " + m.group(1)); } 

正则expression式是昂贵的。 只要存储最后一个字符并检查下一个字符是否相同,您可能会更好。 有些东西是:

 String s; char c1, c2; c1 = s.charAt(0); for(int i=1;i<s.length(); i++){ char c2 = s.charAt(i); // Check if they are equal here c1=c2; }