2013-05-20 2 views
0

1) В моей программе java он подключается к веб-странице и захватывает источник страницы html.
2) Затем он переходит к превращению всего источника страницы в строку (htmlString).
3) Я хотел бы получить значение внутри источника html и поместить его в строку (myString).
4) Я пытаюсь использовать IndexOf и имеют следующее регулярное выражение, которое в состоянии найти позицию непосредственно перед началом значения я пытаюсь получить:Как использовать indexOf для печати диапазона indexOf?

System.out.println(htmlString.indexOf("<input name=\"k\" value=\"", 1)); 

Это возвращает 4861

5) Я хотел бы распечатать значения и сохранить их в строке для диапазона positionOf 4862 - 4893. И я не могу понять, как это сделать.

Кроме того, значение для этого диапазона indexOf 4862-4893 изменяется каждый раз, когда страница обновляется. В противном случае я бы просто искал эту конкретную ценность.

Базовый пример того, что я пытаюсь сделать: источник

HTML:

<input type='hidden' name='k' value='nnhMTGbb2z5eryuksFGns9tt0EEjqBX8'> 

с использованием регулярных выражений и IndexOf я искал:

<input type='hidden' name='k' value= 

нашел его в положении 4861, и теперь мне нужно взять все с 4862-4893, это значение: nnhMTGbb2z5eryuksFGns9tt0EEjqBX8 и поместить его в строку.

Должно быть, мне не хватает чего-то простого. Что мне делать?

+0

Используйте HTML-парсер ... – jlordo

+0

если вы уже знаете значения, почему не только называют [подстроку (int beginIndex, int endIndex)] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring (int,% 20int))? – Raystorm

ответ

2

Regex's, как известно, плохо для разбора HTML. Если бы я был вами, я бы использовал библиотеку, предназначенную для разбора html, как в этом вопросе SO: What are the pros and cons of the leading Java HTML parsers? Рассмотрим, например, что type можно изменить, чтобы быть в конце тега, а не в начале. HTML все равно будет действительным, но ваше регулярное выражение/indexof теперь будет бесполезным. Вероятно, это те проблемы, о которых вы не хотите думать.

Но если вы настаиваете, то вы могли бы использовать StringUtils.lastIndexOf

Смежные вопросы