Поиск числа в строке по ключевому слову

222
18 января 2018, 20:25

Есть строка:

"12 random text key 123 random text 987"

Нужно вытащить оттуда только те цифры которые идут после ключевого слова key.

Я пытаюсь сделать это так:

String fragment = text.split("key")[1];
String num = fragment.replaceAll("\\D+", "");

Но цифры в конце все равно остаются и вместо 123 я получаю 123987. Мне нужно отрезыть все буквы после 123. Или возможно есть более изящьный вариант. Может это можно одним регулярным выражением решить?

Буду признателен за помощь.

Answer 1

Пожалуйста.

//Основной метод приложения
public static void main(String[] args) throws IOException {
    String text = "12 random text key 123 random text 987";
    Pattern pattern = Pattern.compile("(?<=key\\s)(\\d+)");
    Matcher matcher = pattern.matcher(text);
    matcher.find();
    String result = matcher.group(1); //result = "123"
}

UPD

Дополнительный пример по просьбе автора с возможностью менять key:

//Основной метод приложения
public static void main(String[] args) throws IOException {
    String key = "ABCDkeyA";
    String text = "12 random text ABCDkeyA 123 random text 987";
    Pattern pattern = Pattern.compile("(?<=" + key + "\\s)(\\d+)");
    Matcher matcher = pattern.matcher(text);
    matcher.find();
    String result = matcher.group(1); //result = "123"
}
READ ALSO
Копирование файла из ресурсов jar

Копирование файла из ресурсов jar

Можно ли скопировать файл src/main/resources/hibernatecfg

246
How to add physics to Java3d [требует правки]

How to add physics to Java3d [требует правки]

I'm develop a basic Java3d applicationHow to add physics to Java3d application and does it even exit for Java3d ? Please help me or give me advice

281
Кодировка БД MySql

Кодировка БД MySql

Есть сервер яваИспользую mysql

222
Разница между singleton в Java и в Spring

Разница между singleton в Java и в Spring

Наткнулась на такие строки про область видимости Singleton в Spring:

299