Вытащить из строки числовые слова

Нужно выбрать из строки только числовые слова. Есть строка "45ggkjk 345 4g g7 43". И из неё нужно перенести в массив только 345 и 43. Первое, что пришло в голову, сделать с помощью regex, что-то вроде такого "\s\d+". Но логично, что это не работает как нужно.


Ответы (1 шт):

Автор решения: Alex Rudenko

Для выбора слов следует использовать границу слова \b:

String s = "45ggkjk 345 4g g7 43";
Pattern.compile("\\b\\d+\\b").matcher(s)
    .results() // Stream<MatchResult>
    .map(MatchResult::group) // Stream<String> подходящие числовые слова
    .forEach(System.out::println);

Результат:

345
43

Вместо Stream::forEach можно собрать результаты в список

.collect(Collectors.toList());

или преобразовать в массив:

.toArray(String[]::new);
→ Ссылка