1) 在我的 java 程序中,它连接到网页并获取 html 页面源。
2) 然后继续将整个页面源代码转换为字符串 (htmlString)。
3) 我想获取 html 源中的一个值并将其放入字符串 (myString) 中。
4)我正在尝试使用indexOf并具有以下正则表达式,该正则表达式能够找到我试图获取的值开始之前的位置:
System.out.println(htmlString.indexOf("<input name=\"k\" value=\"", 1));
这将返回 4861
5) 我想打印出这些值并将它们存储到索引位置范围 4862 - 4893 的字符串中。 我似乎不知道该怎么做。
此外,每次刷新页面时,indexOf 范围 4862-4893 的值都会发生变化。否则我会直接搜索该特定值。
我正在尝试做的事情的基本示例:
HTML 源代码:
<input type='hidden' name='k' value='nnhMTGbb2z5eryuksFGns9tt0EEjqBX8'>
使用我搜索的正则表达式和indexOf:
<input type='hidden' name='k' value=
发现它位于位置 4861,现在我需要获取 4862-4893 之间的所有内容,该值: nnhMTGbb2z5eryuksFGns9tt0EEjqBX8 并将其放入字符串中。
我一定错过了一些我觉得简单的东西。我该怎么办?
最佳答案
众所周知,正则表达式不适合解析 HTML。如果我是你,我会使用一个用于解析 html 的库,就像这个问题中的那样:What are the pros and cons of the leading Java HTML parsers?例如,考虑一下 type
可以更改为位于标记的末尾而不是开头。 HTML 仍然有效,但您的 regex/indexof 现在将毫无用处。这些可能是您不想考虑的问题。
但如果您坚持的话,您可以使用 StringUtils.lastIndexOf
关于java - 如何使用indexOf打印出indexOf范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16656696/