как получить всю подстроку для данного регулярного выражения?

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

String str = "abaca";
Matcher matcher = Pattern.compile("a.a").matcher(str);
while (matcher.find()) {
   System.out.println(str.substring(matcher.start(),matcher.end()));
}

Результат - aba , а не aba, aca , как я хочу ...
есть идеи?
РЕДАКТИРОВАТЬ: другой пример: для string = abaa, regex = a. * a я ожидаю получить aba, abaa, aa
ps, если этого нельзя добиться с помощью регулярных выражений, это тоже ответ, я просто хочу знать, что я не изобретаю заново колесо для чего-то, что язык уже предоставляет мне ...

16
задан amit 18 April 2011 в 15:40
поделиться