Таким образом, вы хотите, чтобы number
(+ целое число) следовало что-нибудь до следующего number
(или конца строки), верно?
Тогда вам нужно сообщить это движку регулярных выражений:
Pattern pattern = Pattern.compile("number\\d+(?:(?!number).)*");
В вашем регулярном выражении .*
соответствует как можно большему - все до конца строки.Также вы сделали вторую часть (number\\d+)?
частью самого матча.
Объяснение моего решения:
number # Match "number"
\d+ # Match one of more digits
(?: # Match...
(?! # (as long as we're not right at the start of the text
number # "number"
) # )
. # any character
)* # Repeat as needed.