0

1) 私の Java プログラムでは、Web ページに接続し、HTML ページのソースを取得します。
2) 次に、そのページ ソース全体を文字列 (htmlString) に変換します。
3) HTML ソース内の値を取得し、文字列 (myString) に配置したいと考えています。
4) indexOf を使用しようとしていますが、取得しようとしている値の開始直前の位置を見つけることができる次の正規表現があります。

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

これは 4861 を返します

5) 値を出力して、4862 ~ 4893 の indexOf 位置範囲の文字列に格納したいと思います。その方法がわかりません。

また、この indexOf 範囲 4862 ~ 4893 の値は、ページが更新されるたびに変更されます。それ以外の場合は、その特定の値を直接検索します。

私がやろうとしていることの基本的な例:

HTML ソース:

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

正規表現とindexOfを使用して検索しました:

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

4861 の位置にあることがわかったので、4862 から 4893 までのすべてを取得する必要があります。この値: nnhMTGbb2z5eryuksFGns9tt0EEjqBX8 を文字列に配置します。

私が感じている単純なものが欠けているに違いありません。私は何をすべきか?

4

2 に答える 2

2

正規表現は、HTML の解析に悪いことで有名です。私があなただったら、この SO の質問のような html を解析するためのライブラリを使用します:主要な Java HTML パーサーの長所と短所は何ですか? たとえば、 をtypeタグの先頭ではなく末尾に変更できるとします。HTML は引き続き有効ですが、regex/indexof は役に立たなくなります。これらはおそらく、考えたくない種類の問題です。

ただし、主張する場合は、StringUtils.lastIndexOfを使用できます

于 2013-05-20T19:17:49.870 に答える