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

标签 java

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/

相关文章:

java - 窗口未完成其窗口长度

java - 如何检查内部类中的值?

java - 从毫秒转换为 MYSQL 日期

java - 找不到符号 - ArrayList;找不到符号 - 整数

java - 使用 Java 配置在 Spring 中重定向 404 错误

java - 如何以编程方式关闭android中的设置 Activity ,类似的应用程序锁定

java - 将 vector 拆分为子 vector - Java

java - 使用 JDK8 Stream 如何迭代嵌套对象

java - 如何在 java 中创建圆形 JButton ..?

java - 为什么 TreeSet 声明为 TreeSet<E> 而不是 TreeSet<E extends Comparable<E>>