1

現在再生中のアーティストと曲のタイトルを見つけたい次の HTML があります。私の正規表現はhttp://gskinner.com/RegExr/で動作し、Java で正しくコンパイルされますが、何にも一致しません。

HTML スニペット

<div class="audio_playing_title">Currently Playing.
  <div class="audio_home_box">
     <div class="audio_playing_stats">
        <div class="audio_playing">
           <div class="audio_dj_title">PRESENTER:
                AutoDJ - The Slogan
           </div>
          <div class="audio_track_title">SONG TITLE:
               The Artist Name - Song Name
          </div>
        </div>
     </div>
</div>

Java コード

String data = getWebsiteData(url);
data = data.replace("\\t", "");

Pattern pat = Pattern.compile("<div class=\"audio_track_title\">SONG TITLE:\r(.+)\r</div>");

Matcher matcher = pat.matcher(data);

if (matcher.matches())
{
    data = matcher.group(1);
}
else
{
    System.out.println("No match");
}
return data;
4

1 に答える 1

5

あなたの問題は、Matcher#matches()シーケンス全体が正規表現と一致する場合にのみ true を返すことです。

Matcher#find()一致するサブシーケンスを探す が必要です。

また、改行の基準はシステムによって異なるため、自分で改行を一致 Pattern#DOTALLさせるのではなく、フラグを使用して改行を一致させる方がよいと思います。.

Pattern pat = Pattern.compile("<div class=\"audio_track_title\">SONG TITLE:\r(.+)\r</div>", Pattern.DOTALL);
于 2013-05-28T19:23:07.533 に答える