2

Jsoup HTML パーサーを使用して Web サイトからサムネイル URL を取得しようとしています。60x60.jpg(または png) で終わるすべての URL を抽出する必要があります (すべてのサムネイル URL はこの URL で終わります)。

問題は、通常のJavaプロジェクトで動作するようになることですが、Androidでは動作しません。(正規表現の問題)

このコードは Java プロジェクトで機能します。

List<String> urls = new ArrayList<String>();
Document doc = Jsoup.connect("http://example.com").get();
Elements pngs = doc.select("img[src~=(60x60).(png|jpg)]"); 
for (Element img : pngs) {
        String url = img.absUrl("src");
        {
            if (!urls.contains(url)) {
                urls.add(url);
            }
        }
    }

そしてurls配列を印刷します..Androidプロジェクトではなく、Javaで動作します。

Android で機能する唯一の正規表現はこれだけです

Elements pngs = doc.select("img[src$=.jpg]");

Androidでは問題なく動作します...jpgで終わるすべてのリンクは必要ありませんが

使ってみた

Elements pngs = doc.select("img[src~=(60x60)\\.(png|jpg)]");

.(png|jpg) の前に 1 つのスラッシュがあっても、まだ良くありません。

正規表現の問題ですか?それはAndroidまたは何とは異なりますか?通常のJavaプロジェクトで動作するため、パーサーの問題ではありません..

4

2 に答える 2

1

JSoup や Android の正規表現の実装はわかりませんが、orで始まりorimg=で終わる文字列を見つける正規表現は60x60.jpg60x60.png

\bimg=.*?60x60\.(jpg|png)\b

おそらく、解析しようとしているテキストの抜粋を投稿できます。おそらく、正規表現は問題の解決策ではありません。

于 2011-04-27T08:59:25.547 に答える
0

Java 正規表現エンジンと Android の Darvik エンジンには違いがあるようです。

複数のセレクターに適用されるcomma セレクター構文を使用して簡略化します。or

例えば

Document doc = Jsoup.parse("<img src='foo-60x60.png'> <img src='bar-60x60.jpg'>");
Elements images = doc.select("img[src$=60x60.png], img[src$=60x60.jpg]");
System.out.println(images);

与えます:

<img src="foo-60x60.png" />
<img src="bar-60x60.jpg" />
于 2011-04-29T04:50:28.343 に答える