В Java, при использовании регулярных выражений для поиска шаблонов, как получить вложенный результат?
Дело в том, что я хочу найти строку, которая удовлетворяет "c+d" в строке "cccd". Мой код выглядит следующим образом,
String str="cccd";
String regex="c+d";
Pattern pattern = Pattern.compile(regex);
Matcher matcher =pattern.matcher(str);
While(matcher.find()){
System.out.println(matcher.group())
}
Результат только "cccd". Но я хочу получить все возможные результаты, включая вложенные, такие как cd, ccd и cccd. Как мне это исправить, заранее спасибо.
1 ответ
Решение
Просто используйте взгляд, чтобы захватить перекрывающихся символов,
(?=(c+d))
И, наконец, выведите индекс группы 1.
Ваш код будет,
String str="cccd";
String regex="(?=(c+d))";
Pattern pattern = Pattern.compile(regex);
Matcher matcher =pattern.matcher(str);
while(matcher.find()){
System.out.println(matcher.group(1));
}
Выход:
cccd
ccd
cd