Регулярное выражение для соответствия более чем одному вхождению символа - PullRequest
3 голосов
/ 29 августа 2010

Мне нужна помощь в подборе регулярного выражения, если строка содержит более одного вхождения символа. Я уже проверил длину двух строк, и они всегда будут равны. Вот что я имею в виду, например. Строка "aab" и "abb". Эти два должны соответствовать регулярному выражению, потому что они имеют повторяющиеся символы: «aa» в первой строке и «bb» во второй.

Ответы [ 3 ]

10 голосов
/ 29 августа 2010

Поскольку вы говорите, что повторение в стиле "aba" не считается, обратные ссылки должны сделать это просто:

(.)\1+

Найдет последовательности символовПопробуйте:

java.util.regex.Pattern.compile("(.)\\1+").matcher("b").find(); // false
java.util.regex.Pattern.compile("(.)\\1+").matcher("bbb").find(); // true
2 голосов
/ 29 августа 2010

Если вы проверяете анаграммы, возможно, лучше использовать другой алгоритм.

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

0 голосов
/ 15 мая 2016
static final String REGEX_MORE_THAN_ONE_OCCURANCE_OF_B = "([b])\\1{1,}";
static final String REGEX_MORE_THAN_ONE_OCCURANCE_OF_B_AS_PREFIX_TO_A = "(b)\\1+([a])";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...