我正在制作一款应用,我遇到了这个问题 我使用模式识别代码来查找网站上文章的图片网址。
问题在于,以我的方式抓住第一张特别小的照片。
模式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”);
这是我需要你帮助的地方 这是代码
public void 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 :(得分: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.
您只想使用正则表达式
String regex =“[\\ x20 - \\ x7E] * \\。jpg $”;
如果你想用* XL.jpg
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(正则表达式)); //如果大小写匹配,这将打印为真
如果你的URL字符串中有任何空格或特殊字符以及0-9a-zA-Z字符,请使用正则表达式。(这将返回true任何字符串结束于* XL.jpg)
String url =“http://planetaris.gr/media/k2/items%!@ _!$%/ cache.sample_ssXL.jpg”;
String regex =“[\\ x20 - \\ x7E] * XL \\。jpg $”;
答案 1 :(得分:0)
这个正则表达式:/(media|images)/[^\.]*\.jpg
匹配您的所有样品:
HREF = “/媒体/ K2 /项目/高速缓存/ df95c3d9029788dcdb6f520e9151056c_XL.jpg” /media/k2/items/cache/df95c3d9029788dcdb6f520e9151056c_L.jpg” “/images/stories/atnea2.jpg” /images/stories/diarkeias-bc.jpg“