Сопоставление одной строки несколько раз с использованием регулярных выражений в Java

У меня есть некоторые проблемы с выполнением следующего регулярного выражения. Я хотел бы следующую строку:

"Please enter your name here"

привести к массиву со следующими элементами:

'please enter', 'enter your', 'your name', 'name here'

В настоящее время я использую следующий шаблон, а затем создаю сопоставление и выполняю итерации следующим образом:

Pattern word = Pattern.compile("[\w]+ [\w]+");
Matcher m = word.matcher("Please enter your name here");

while (m.find()) {
    wordList.add(m.group());
}

Но результат, который я получаю:

'please enter', 'your name'

Что я делаю неправильно? (P.s., я проверил то же регулярное выражение на regexpal.com и имел ту же проблему). Кажется, одно и то же слово не будет совпадать дважды. Что я могу сделать, чтобы достичь желаемого результата?

Благодарю.

---------------------------------

РЕДАКТИРОВАТЬ: Спасибо за все предложения! Я закончил тем, что сделал это (потому что это добавляет гибкости в возможности легко указать количество «n-грамм»):

Integer nGrams = 2;
String patternTpl = "\\b[\\w']+\\b";
String concatString = "what is your age? please enter your name."
for (int i = 0; i < nGrams; i++) {
    // Create pattern.
    String pattern = patternTpl;
    for (int j = 0; j < i; j++) {
        pattern = pattern + " " + patternTpl;
    }
    pattern = "(?=(" + pattern + "))";
    Pattern word = Pattern.compile(pattern);
    Matcher m = word.matcher(concatString);

    // Iterate over all words and populate wordList
    while (m.find()) {
        wordList.add(m.group(1));
    }
}

Это приводит к:

Pattern: 
(?=(\b[\w']+\b)) // In the first iteration
(?=(\b[\w']+\b \b[\w']+\b)) // In the second iteration

Array:
[what, is, your, age, please, enter, your, name, what is, is your, your age, please enter, enter your, your name]

Примечание: получил образец из следующего верхнего ответа:Пропуски совпадений с регулярным выражением Java

Ответы на вопрос(4)

Ваш ответ на вопрос