0

softwareVersion以下のhtmlコードから取得しようとしています。

<div class="title">Current Version</div> <div class="content" itemprop="softwareVersion"> 1.1.3  </div> </div> <div class="meta-info"> <div class="title">Requires Android</div> <div class="content" itemprop="operatingSystems">     2.2 and up   </div> </div>

そのために以下のコードを使用しました

String Html = GetHtml("https://play.google.com/store/apps/details?id="+ AppID)
Pattern pattern = Pattern.compile("softwareVersion\">[^<]*</dd");
Matcher matcher = pattern.matcher(Html);
matcher.find();

String GetHtml(String url1) 
    {
        String str = "";
        try 
        {
            URL url = new URL(url1);
            URLConnection spoof = url.openConnection();
            spoof.setRequestProperty("User-Agent",
                    "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; H010818)");
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    spoof.getInputStream()));
            String strLine = "";
            // Loop through every line in the source
            while ((strLine = in.readLine()) != null) 
            {
                str = str + strLine;
            }
        } 
        catch (Exception e) 
        {
        }
        return str;
    }

ただし、マッチャーは常に false を返します。私はパターンに問題があると思います 誰か助けてください ありがとう

4

1 に答える 1

0

他の誰かがコメントしたように、私は通常、html から何かを抽出するために html パーサーを使用します。ただし、文字列から1ビットの情報を引き出すだけの場合、正規表現を使用する理由がわかります。

あなたがする必要があるのはこのようなものです - あなたの正規表現の問題は余分でしたd. また、関心のあるビットを括弧で囲むと、 を使用して取得できます.group

import java.util.regex.*;

public class R {

  public static void main(String[] args){
     String Html = "<div class=\"title\">Current Version</div> <div class=\"content\" itemprop=\"softwareVersion\"> 1.1.3  </div> </div> <div class=\"meta-info\"> <div class=\"title\">Requires Android</div> <div class=\"content\" itemprop=\"operatingSystems\">     2.2 and up   </div> </div>";

     Pattern pattern = Pattern.compile("softwareVersion\">([^<]*)</d");
     Matcher matcher = pattern.matcher(Html);
     System.out.println(matcher.find());
     System.out.println(matcher.group(1));
  }
}
于 2013-07-17T06:48:31.903 に答える