Хорошо, вот решение, которое работает для вашего единственного тестового примера, хотя я не нашел способа сгруппировать его в одну хорошую группу:
Matcher m = Pattern.compile("((?<=(^.*))(/[^/]*))").matcher("/abc/def/ghi");
while (m.find()) {
System.out.println(m.group(2) + m.group(3));
}
По сути, он находит каждую подстроку / xxx по мере их появления, но затем также объединяет все перед этим соответствием. Это работает для вашего тестового примера, но может иметь ограничения для более сложных случаев.