Есть строка:
"12 random text key 123 random text 987"
Нужно вытащить оттуда только те цифры которые идут после ключевого слова key.
Я пытаюсь сделать это так:
String fragment = text.split("key")[1];
String num = fragment.replaceAll("\\D+", "");
Но цифры в конце все равно остаются и вместо 123 я получаю 123987. Мне нужно отрезыть все буквы после 123. Или возможно есть более изящьный вариант. Может это можно одним регулярным выражением решить?
Буду признателен за помощь.
Пожалуйста.
//Основной метод приложения
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"
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники