-1

私は大学のウェブサイトから新しい発表を取得できる Android アプリケーションを作成しています。

これは、Web サイトの HTML コードです。

sample_html_code http://img690.imageshack.us/img690/1079/88210050.png

テキスト版:

<table border="1" width="90%" class="duyuru">
<tbody>
<tr>
<td>
<h3 class="duyuru">Additional Quotas for the Technical Electives</h3>
"19/09/2012"
<h4 class="duyuru">"Additional Quotas for Technical Electives offered in...</h4>
<span class="duyuru"></span>
<br>
<a href="news_image/96.doc">Download</a>
</td>
</tr>
</tbody>
</table>

以下のコードを使用して、1 行目と 3 行目の "Additional Quotas for Technical Electives" と "Additional Quotas for ..." を取得できます。しかし、h3 行と h4 行の間にある日付情報 (2012 年 9 月 19 日) を取得できません。

String patternStr ="\\<h3 class=\"duyuru\".*?\\>(.*?)\\</h3\\>";
patternStr+="(.*?)";     // This line is problematic
patternStr+=".*?\\<h4 class=\"duyuru\".*?\\>(.*?)\\</h4\\>";

Pattern pattern = Pattern.compile(patternStr, Pattern.DOTALL);
Matcher matcher = pattern.matcher(content);

String name = "";
String date = "";
String details = "";

while (matcher.find()){

    name    = matcher.group(1);
    date = matcher.group(2);
    details = matcher.group(3);

    Announcement announcement = new Announcement();

    announcement.setName(name);
    announcement.setDate(date);
    announcement.setDetails(details);

    announcements.add(announcement);
}

使ってみた

.*?\"(.*?)\"

しかし、うまくいきませんでした。これを行うと、日付情報の代わりにh4タグで始まる行から文字列「duyuru」を取得します。

日付情報を取得する方法を知っている人はいますか?

前もって感謝します。

4

1 に答える 1

1

正規表現では、入力に改行と空白がありません。

私が思いつくことができる最も単純な一致は次のとおりです。

"\\<h3 class=\"duyuru\".*?\\>\\n?\\s*(.*?)\\n?\\s*\\</h3\\>"

ただし、このような正規表現は HTML に非常に固有のものであることに注意してください。

私のアドバイスは、TagSoup などの Java 用の実際の HTML パーサーを調べることです。それらのいずれかを使い始めると、このタイプの HTML ドキュメントの解析は簡単になります。

于 2012-12-08T13:52:36.760 に答える