2016-08-01 11 views

答えて

-1
final String VALUE = "value=\""; 
int start = out.indexOf(VALUE) + VALUE.length(); 
int end = out.indexOf("\"", start); 
System.out.println(out.substring(start, end)); 
-1

このようなものを行うための最善の方法は、正規表現を使用することです。

正確にあなたの問題に一致する単純な例:

String out= "<input type=\"hidden\" name=\"javax.faces.ViewState\" id=\"javax.faces.ViewState\" value=\"H4sIAAA\" autocomplete=\"off\" />"; 
Pattern pattern = Pattern.compile(".*(value=\"(\\w*)\").*", Pattern.CASE_INSENSITIVE); 
Matcher matcher = pattern.matcher(out); 

if (matcher.matches()) { 
    System.out.println(matcher.group(2)); 
} 

これが唯一の「=値」の1 accouranceで1つのライン入力のために働いています。

どうしますか?

  1. それが使用してマッチャーを作成し、「値」属性と属性「値」の値を持つ第二のグループを持つグループ、

  2. を文字列全体にマッチする正規表現マッチャーを準備マッチャが一致した場合、パターンと

  3. 「アウト」あなたの指定した文字列が、それは、属性が値であるグループのコンテンツ2をプリントアウト

正規表現を使用する利点は、それが何であるかにかかわらず、不要なすべてのコンテンツを無視して、必要な抽出物に集中させることができることです。 この例は、1つの値属性を持つ1行の入力に対してのみ有効です。ホールHTMLページを解析したいときは、必要に応じてそれを拡張する必要があります。

正規表現のドキュメント:正規表現をテストするhttps://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html 良い場所:http://regexr.com/

は、お楽しみに!

関連する問題