1

我正在制作一个应用程序,但我遇到了这个问题,我使用模式识别代码在网站上查找文章的图像 url。

问题是它以我的方式抓取了第一张超小的照片。

模式 p = Pattern.compile(" http://planetaris.gr/media/k2/items/cache .*\.jpg"); 有一张 XL 图像,我想抓取它的目的地。

我想使用一个在链接末尾的模式是这样的

模式 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");

这是我需要你帮助的地方 这是代码

公共无效运行(){

        //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);

        };
        }       
        };  

因为在网站上还有一个 jpg 有这个 XL

这些都是给定页面的 .jpg 文件。

href="/media/k2/items/cache/df95c3d9029788dcdb6f520e9151056c_XL.jpg"

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

“/图像/故事/atnea2.jpg”

/图像/故事/diarkeias-bc.jpg"

4

2 回答 2

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 ";
字符串正则表达式 = "[0-9a-zA-Z\\-\\._/:]*XL\\.jpg$";
System.out.println(url.matches(regex)); //如果大小写匹配,这将打印为true


如果您的 URL 字符串中有任何空格或特殊字符以及 0-9a-zA-Z 字符,请使用正则表达式。(这将返回 true 任何以 *XL.jpg 结尾的字符串)
String url = " http://planetaris .gr/media/k2/items %!@#$%/cache.sample_ssXL.jpg";
字符串正则表达式 = "[\\x20-\\x7E]*XL\\.jpg$";

于 2013-02-13T11:35:27.850 回答
0

这个正则表达式:/(media|images)/[^\.]*\.jpg

匹配您的所有样本:

href="/media/k2/items/cache/df95c3d9029788dcdb6f520e9151056c_XL.jpg" /media/k2/items/cache/df95c3d9029788dcdb6f520e9151056c_L.jpg" "/images/stories/atnea2.jpg" /images/stories/diarkeias-bc.jpg"

于 2013-02-13T11:39:08.453 回答