Группировка в Java регулярных выражений немного странно. Группа 0 дает вам полное соответствие вашего регулярного выражения - это то же самое во всех реализациях регулярных выражений, которые я знаю. Но группа n (для n > = 1) даст вам последнее совпадение объявленной группы n , а не n найдено совпадение.
Ваше второе совпадение дает вам «ласки» с пробелом в начале, потому что ваш шаблон содержит этот пробел. Вы объявили свою вторую группу (( \\S+)+)
, и эта группа дает вам второй матч.
Если вы примените свой шаблон к строке a b c d
, ваша группа 0 будет a b c d
, группа 1 будет a
, группа 2 будет b c d
, а группа 3 будет d
, потому что это последний матч вашей 3-й объявленной (внутренней) группы ( \\S+)
.