Entendendo o useDelimiter no Scanner: por que recebo token em branco?

Estou usando o scanner com delimitador e me deparei com um comportamento estranho que gostaria de entender.

Estou usando este programa:

    Scanner sc = new Scanner("Aller à : Navigation, rechercher");
    sc.useDelimiter("\\s+|\\s*\\p{Punct}+\\s*");
    String word="";
    while(sc.hasNext()){
        word = sc.next();
        System.out.println(word);
    }

A saída é:

Aller
à

Navigation
rechercher

Então, primeiro eu não entendo por que estou recebendo um token em branco, odocumentação diz:

Dependendo do tipo de padrão de delimitação, tokens vazios podem ser retornados. Por exemplo, o padrão "\ s +" não retornará tokens vazios, já que combina várias instâncias do delimitador. O padrão de delimitação "\ s" pode retornar tokens vazios, pois ele passa apenas um espaço por vez.

estou a usar\\s+ então por que ele retorna um token em branco?

Depois, há outra coisa que gostaria de entender sobre o regex. Se eu alterar o delimitador usando o regex "reverso":

    sc.useDelimiter("\\s*\\p{Punct}+\\s*|\\s+");

A saída está correta e recebo:

Aller
à
Navigation
rechercher

Por que isso funciona no caminho?

EDITAR:

Com este caso:

    Scanner sc = new Scanner("(23 ou 24 minutes pour les épisodes avec introduction) (approx.)1");
    sc.useDelimiter("\\s*\\p{Punct}+\\s*|\\s+"); //second regex

Eu ainda tenho um token em branco entreintroduction eapprox. É possível evitá-lo?

questionAnswers(2)

yourAnswerToTheQuestion