В настоящее время я создаю Java-программу для автоматизации еженедельных повторяющихся бронирований спортивных классов, а не для их ручного бронирования.
Для этого я загружаю список классов на определенную дату через http get ихотите проанализировать нужный идентификатор класса (foo / bar / class-id ) из ответа.
Сокращенный ответ выглядит так:
<div>
<div class="row">
Olympic Weightlifting <br>
<a data-url="foo/bar/2099159">
Book
</a>
</div>
<div class="row">
Fitness <br>
<a data-url="foo/bar/2098939">
Book
</a>
</div>
</div>
Пока чтодва регулярных выражения в фрагменте ниже - самые близкие, которые я мог бы получить, но они оба будут соответствовать последнему / второму идентификатору класса вместо первого после слова «Тяжелая атлетика».
String str = "<div>\n" +
"\t<div class=\"row\">\n" +
"\t\t\tOlympic Weightlifting <br>\n" +
"\n" +
"\t\t\t<a data-url=\"foo/bar/2099159\">\n" +
"\t\t\t\tBook\n" +
"\t\t\t</a>\n" +
"\t</div>\n" +
"\t<div class=\"row\">\n" +
"\t\t\tFitness <br>\n" +
"\n" +
"\t\t\t<a data-url=\"foo/bar/2098939\">\n" +
"\t\t\t\tBook\n" +
"\t\t\t</a>\n" +
"\t</div>\n" +
"</div>";
// regex 1: pattern multiline
Pattern p = Pattern.compile("Weightlifting.*foo/bar/(.*?)\"", Pattern.DOTALL);
// regex 2: inline multiline
// Pattern p = Pattern.compile("Weightlifting[\\s\\S]*foo/bar/(.*?)\"");
Matcher m = p.matcher(str);
if (m.find()) {
System.out.println(m.group(1).trim());
}