我怎样才能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; }