Регулярное выражение +
соответствует одному или нескольким предыдущим символам / регулярным выражениям.Так что это будет соответствовать любой последовательности D
и U
.
Если вы хотите вернуть самое длинное совпадение, которое вы можете сделать:
static String match(String s) {
ArrayList<String> matches = new ArrayList<>();
Matcher matcher = Pattern.compile("D+U").matcher(s);
int i = 0;
while (matcher.find(i)) {
matches.add(matcher.group());
i = matcher.end();
}
return Collections.max(matches, Comparator.comparing(c -> c.length()));
}
Который (с контрольным примером UDDDUDUU
) возвращает DDDU
.Также обратите внимание, что я удалил параметр n
, поскольку вы никогда не использовали его