Как найти повторяющиеся символы с регулярным выражением в Java?

Может ли кто-нибудь дать мне регулярное выражение Java для идентификации повторяющихся символов в строке? Я ищу только символы, которые повторяются немедленно, и они могут быть буквами или цифрами.

Пример:

abccde < - ищет это (сразу повторяя c)

abcdce < - не это (c разделено другим символом)

Ответ 1

Попробуйте "(\\w)\\1+"

\\w соответствует любому символу слова (буква, цифра или подчеркивание), а \\1+ соответствует любому, что было в первом наборе круглых скобок, один или несколько раз. Таким образом, вы завершаете соответствие любому появлению символа слова, за которым следует сразу один или несколько символов того же слова.

(Обратите внимание, что я дал регулярное выражение как строку Java, т.е. с обратной косой чертой, которая уже удвоена для вас)

Ответ 2

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));
}

Ответ 3

Регулярные выражения дороги. Вероятно, вам лучше было бы сохранить последний символ и проверить, не совпадает ли следующий. Что-то вроде:

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;
}