Regex para capturar um número desconhecido de grupos repetidos

Estou tentando escrever uma expressão regular para usar em um programa Java que reconhecerá um padrão que pode aparecer na entrada um número desconhecido de vezes. Meu pequeno exemplo bobo é:

String patString = "(?:.*(h.t).*)*";

Então tento acessar as correspondências a partir de uma linha como "a cabana está quente", percorrendo o matcher.group (i). Ele lembra apenas da última correspondência (neste caso, "quente") porque existe apenas um grupo de captura - acho que o conteúdo do matcher.group (1) é substituído quando o grupo de captura é reutilizado. O que eu quero, no entanto, é algum tipo de matriz que contenhaambo "cabana" e "quente"

Existe uma maneira melhor de fazer isso? FWIW, o que estou realmente tentando fazer é pegar todos os nomes próprios (possivelmente com várias palavras) depois de uma palavra de sinalização, onde pode haver outras palavras e pontuação no meio. Portanto, se "serra" é o sinal e temos "Eu vi Bob com John Smith e sua esposa Margaret", eu quero {"Bob", "John Smith", "Margaret"}.

questionAnswers(1)

yourAnswerToTheQuestion