Использование регулярных выражений для получения информации внутри тега HTML - PullRequest
1 голос
/ 11 августа 2011

Мне интересно, как я могу извлечь '4151' из следующего кода:

</th><td><a class="external exitstitial" rel="nofollow" href="http://services.runescape.com/m=itemdb_rs/viewitem.ws?obj=4151">Look up price</a>

Я хотел бы использовать регулярные выражения, но если есть лучший способ, я открыт для этого!

Ответы [ 3 ]

4 голосов
/ 11 августа 2011

Следующее работает для меня, предполагая, что значение атрибута href уже извлечено:

String href = "http://services.runescape.com/m=itemdb_rs/viewitem.ws?obj=4151";
Pattern p = Pattern.compile("\\?obj=(\\d+)");
Matcher m = p.matcher(href);
if (m.find()) {
    System.out.println(m.group(1));
}

Вывод "4151"

3 голосов
/ 11 августа 2011

Вот несколько библиотек синтаксического анализатора: htmlparser , jsoup и jtidy .

В вашем случае регулярное выражение может подойти,но вот классический пост о том, почему следует избегать регулярных выражений для разбора html .

0 голосов
/ 11 августа 2011

Это регулярное выражение даст вам номер -

Pattern regex = Pattern.compile("\\d+");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group();
} 

Этот код не проверен и предполагает, что ваша HTML-строка назначена переменной 'subjectString'.

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