2013-02-13 111 views
1

我正在製作應用程序,並且遇到此問題 我使用模式識別代碼來查找網站中文章的圖片網址。Android正則表達式從網站抓取圖片網址

問題是,在我的方式,它抓住了特別小的第一張照片。

Pattern p = Pattern.compile(「http://planetaris.gr/media/k2/items/cache。* \。jpg」); 有一個XL圖像,我想抓住它的目的地。

我想使用在鏈路的末端它是這樣

圖案P = Pattern.compile(圖案 「(http://planetaris.gr/media/k2/items/cache.)+(。* \ [_ XL] +(。JPG))」 );

或 模式p = Pattern.compile( 「http://planetaris.gr/media/k2/items/cache * \ _ XL.jpg。」);

這是我需要你的幫助 下面是代碼

公共無效的run( ){

 //Pattern p = Pattern.compile("http://planetaris.gr/media/k2/items/cache.*\\.jpg"); 
     //Pattern p = Pattern.compile("http://planetaris.gr/media/k2/items/cache.*\\._XL.jpg"); 
     Pattern p = Pattern.compile("(http://planetaris.gr/media/k2/items/cache.)+(.*\\[_XL]+(.jpg))"); 

     try { 
        URL url = new URL(selectedRssItem.getLink()); 

        URLConnection urlc = url.openConnection(); 
        Log.d("MIMIS_LINK", url.toString()); 
        BufferedInputStream buffer = new BufferedInputStream(urlc.getInputStream()); 

        builder = new StringBuilder(); 
        int byteRead; 
        while ((byteRead = buffer.read()) != -1) 
         builder.append((char) byteRead); 

        buffer.close(); 

       } catch (MalformedURLException ex) { 
        ex.printStackTrace(); 
       } catch (IOException ex) { 
        ex.printStackTrace(); 
       } 

       Matcher m = p.matcher(builder.toString()); 


       if (m.find()) { 

       try { 
        bitmap = BitmapFactory.decodeStream((InputStream)new URL(m.group(0)).getContent()); 
       } catch (MalformedURLException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

        Log.d("MIMIS_MATCHER", selectedRssItem.getDescription().toString()); 
       }; 

     handler.sendEmptyMessage(0); 

    } 
    }.start(); 
    } 

private Handler handler = new Handler() { 

    //@SuppressWarnings("null") 
    @Override 
    public void handleMessage(Message msg) { 

     mSpinner.clearAnimation(); 
     mSpinner.setVisibility(View.GONE); 
      //progressDialog.dismiss(); 
     myimageview.setImageBitmap(bitmap); 

     if (bitmap==null){ 

      myimageview.setImageResource(R.drawable.aris_no_image); 

     }; 
     }  
     }; 

,因爲在現場也有具有這種XL

這些都是在給定頁面中的所有.JPG JPG格式。

HREF = 「/媒體/ K2 /項目/緩存/ df95c3d9029788dcdb6f520e9151056c_XL.jpg」

/media/k2/items/cache/df95c3d9029788dcdb6f520e9151056c_L.jpg 「

」/圖片/故事/atnea2.jpg 「

/images/stories/diarkeias-bc.jpg」

回答

0
String url = "http://planetaris.gr/media/k2/items/cache.sample_XL.jpg"; 
String regex = "[0-9a-zA-Z\\-\\._/:]*[XL]\\.jpg$"; 
System.out.println(url.matches(regex)); //this will be print true if case matches files ends with *XL.jpg and *X.jpg and *L.jpg. 


你只需要檢查的字符串名爲.jpg使用正則表達式


字符串的正則表達式=結束 「[\\ X20 - \\ x7E] * \\ JPG $」;


如果妳希望找到文件的精確匹配* XL.jpg


字符串URL = 「http://planetaris.gr/media/k2/items/cache.sample_XL.jpg」 結束;
String regex =「[0-9a-zA-Z \\ - \\ ._ /:] * XL \\。jpg $」;
System.out.println(url.matches(regex)); //這個會,如果情況符合


如果與0-9A-ZA-Z字沿着任何空格或特殊字符在您的URL字符串,請使用正則表達式來進行打印正確的。(這將返回true任何字符串以* XL.jpg結尾)
String url =「http://planetaris.gr/media/k2/items %[email protected]#$%/cache.sample_ssXL.jpg」;
String regex =「[\\ x20 - \\ x7E] * XL \\」。JPG $ 「;

0

這個表達式:

HREF =:/(media|images)/[^\.]*\.jpg

所有樣品相符」/媒體/ K2 /項目/緩存/ df95c3d9029788dcdb6f520e9151056c_XL.jpg」 /媒體/ K2 /項目/cache/df95c3d9029788dcdb6f520e9151056c_L.jpg 「 」/images/stories/atnea2.jpg「 /images/stories/diarkeias-bc.jpg」

+0

確定我解決它。我使用該圖案p = Pattern.compile(「/ media/k2/items/cache。* \\ XL.jpg「);並且因爲樣本沒有啓動使用http:// .....我使用一個字符串局部變量,它使用標準的http://planetaris.gr/並將匹配器字符串................ .String imglink =「http://planetaris.gr」+ partiallink; – DroidAjax 2013-02-13 17:50:17