import java.util.regex.*; public class CurrencyParser { /** * Парсит курс USD с актуальной страницы ЦБ * РФ[](https://cbr.ru/currency_base/daily/) * Структура: таблица с строкой * * 840 * USD... * 76,0535 * */ public static double parseUSD(String html) { // Более точный и надёжный regex под текущую верстку сайта Pattern pattern = Pattern.compile( "USD\\s*" + "1\\s*" + "Доллар США\\s*" + "([0-9,]+)", Pattern.DOTALL | Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(html); if (matcher.find()) { String rateStr = matcher.group(1).replace(',', '.'); // заменяем запятую на точку try { return Double.parseDouble(rateStr); } catch (NumberFormatException e) { System.err.println("Ошибка парсинга числа: " + matcher.group(1)); } } return -1; // не удалось найти } }