Захват данных между больше, чем меньше - PullRequest
0 голосов
/ 24 января 2019

Я в основном программист на SQL с небольшим опытом работы с Java.

Я не собираюсь утомлять вас всем написанным мною кодом, который работает до этого момента.Но в этот момент я пытаюсь извлечь данные с сайта фондового рынка и поместить их в файл, который я создаю CSV.

Я получаю строку за строкой HTML-код, который использует td и / td для открытия и закрытия столбцов.Я хочу перехватить данные между «Больше, чем знак» и «Меньше, чем знак», а затем перейти к следующему.Просто изо всех сил пытаюсь понять это, не делая это слишком сложным.

Опишите ожидаемые и фактические результаты:

Так что, если у меня есть

<td class="blah" class="blah">STOCK</td><td class="blah" class="blah">STOCK COMPANY NAME</td>

, я хочу захватить STOCK встрока, а затем НАИМЕНОВАНИЕ КОМПАНИИ.

Все, что я хочу помочь, это код между> ***** <... не более того, потому что я наслаждаюсь процессом обучения ... просто застрял длянесколько часов. </p>

1 Ответ

0 голосов
/ 24 января 2019

Вы можете использовать регулярные выражения с упреждением и упреждением - (?<=>).*?(?=<).
(?<=>) означает, что перед символом больше, чем
.*? соответствует любому количеству символов, не жадный
(?=<), за которым следует символ меньше *

String input = "<td class=\"blah\" class=\"blah\">STOCK</td><td class=\"blah\" class=\"blah\">STOCK COMPANY NAME</td>";
Matcher matcher = Pattern.compile("(?<=>).*?(?=<)").matcher(input);
List<String> res = new ArrayList<>();
while (matcher.find()) res.add(matcher.group());
res = res.stream().filter(s -> !s.isEmpty()).collect(Collectors.toList()); //remove empty strings
System.out.println(res);

Вывод

[STOCK, STOCK COMPANY NAME]

Примечание : лучше использовать вместо этого анализатор HTMLвроде jsoup .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...