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

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

Пример:

abccde <- ищет это (немедленно повторяя c) </p>

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

Ответы [ 3 ]

36 голосов
/ 20 марта 2009

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

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

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

12 голосов
/ 20 марта 2009
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));
}
0 голосов
/ 20 марта 2009

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

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;
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...