Cześć, napisałem taki kod do zapisywania określonych fragmentów tekstu do grup:

Pattern pattern = Pattern.compile("(?:([a-z]+)-)+([0-9]{3})\\[([a-z]{5})\\]");
Matcher matcher = pattern.matcher(line);
matcher.find();
for(int i = 1; i<=matcher.groupCount(); i++){
            System.out.println(matcher.group(i));
}

Wyrażenie regularne zapisuje do grup fragmenty tekstu zawarte w zmiennej line składające się z dowolnej ilości znaków od a do z oddzielone -, następnie zapisuje do kolejnej grupy liczbę składającą się z 3 cyfr i na końcu dodaje do grupy fragment składający się z 5 znaków. Przykładowe wartości dla zmiennej line

nzydfxpc-rclop-qwzhpc-qtylyntyr-769[oshgk]
qzlozfhmf-bzmcx-bnzshmf-zbpthrhshnm-339[zmxdi]
xtwtelcj-rclop-upwwjmply-zapcletzyd-743[itbds]
mrxivrexmsrep-fewoix-ywiv-xiwxmrk-308[kzypw]
ibghopzs-qobrm-difqvogwbu-142[lnrzo]

Problem polega na tym, że nie wiem w jaki sposób sprawić, aby wszystkie ciągi znaków oddzielone znakiem -, których ilość jest losowa i które znajdują się przed liczbą, dodać do kolejnych grup. Np. dla pierwszego przykładu, gdy line = "nzydfxpc-rclop-qwzhpc-qtylyntyr-769[oshgk]" otrzymuję 3 grupy -> 1. "qtylyntyr", 2. "769", 3. "oshgk". Zależy mi na tym żeby dodać jeszcze do grup: "nzydfxpc", "rclop", "qwzhpc".

tl;dr
Czy mogę jakoś sprawić aby wyrażenie "(?:([a-z]+)-)+" zapisywało do kolejnych grup każdy napotkany pasujący fragment tekstu?