Let's say I have a string:

```
String sentence = "My nieces are Cara:8 Sarah:9 Tara:10";

```

And I would like to find all their respective names and ages with the following pattern matcher:

```
String regex = "My\\s+nieces\\s+are((\\s+(\\S+):(\\d+))*)";
Pattern pattern = Pattern.compile;
Matcher matcher = pattern.matcher(sentence);

```

I understand something like

```
matcher.find(0); // resets "pointer"
String niece = matcher.group(2);
String nieceName = matcher.group(3);
String nieceAge = matcher.group(4);

```

would give me my last niece (`" Tara:10"`, `"Tara"`, `"10"`,).

How would I collect all of my nieces instead of only the last, using only one regex/pattern?

I would like to avoid using split string.