如何使用indexOf打印出indexOf范围?

时间:2013-05-20 19:14:25

标签: java

1)在我的java程序中,它连接到一个网页并抓取html页面源 2)然后继续将整个页面源转换为字符串(htmlString) 3)我想在html源代码中获取一个值并将其放入一个字符串(myString)中 4)我正在尝试使用indexOf并具有以下正则表达式,它能够在我尝试获取的值的开始之前找到位置:

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

返回4861

5)我想打印出值并将它们存储到indexOf位置范围4862 - 4893的字符串中。 我似乎无法弄清楚如何做到这一点。

此外,每次刷新页面时,此indexOf范围4862-4893的值都会更改。否则我会直接搜索该特定值。

我正在尝试做的基本示例:

HTML来源:

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

使用正则表达式和indexOf我搜索了:

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

发现它位于4861位置,现在我需要从4862-4893抓取所有内容,此值: nnhMTGbb2z5eryuksFGns9tt0EEjqBX8 并将其放入一个字符串中。

我必须错过一些简单的感觉。我该怎么办?

2 个答案:

答案 0 :(得分:2)

正则表达式解析HTML非常糟糕。如果我是你,我会使用一个用于解析html的库,就像这个问题中的那些:What are the pros and cons of the leading Java HTML parsers?例如,考虑type可以更改为在标签的末尾而不是在开始。 HTML仍然有效,但你的正则表达式/ indexof现在将无用。这些可能是您不想考虑的问题。

但如果你坚持,你可以使用StringUtils.lastIndexOf

答案 1 :(得分:1)

考虑使用JSoup来解析html