从html字符串中提取所有图像

时间:2015-07-26 16:26:35

标签: java android

我的网络服务返回一个html字符串,如下所示:

 {"content":"[caption id=\"attachment_7691\" align=\"aligncenter\" width=\"300\"]<img class=\"wp-image-7691 size-medium\" src=\"http:\/\/smsbaz.org\/wp-content\/uploads\/2015\/07\/funny-sms-exams-300x217.jpg\" alt=\"funny sms exams\" width=\"300\" height=\"217\" \/> funny sms exams[\/caption]\r\n<p style=\"text-align: center\">\u062f\u0631\u0633 \u062e\u0648\u0627\u0646\u062f\u0646 \u0686\u06cc\u0633\u062a\u061f\r\n.\r\n.\r\n.\r\n\u0628\u0647\u062a\u0631\u06cc\u0646 \u0642\u0631\u0635 \u062e\u0648...

我想提取所有图像:

sms http://smsbaz.org/wp-content/uploads/2015/07/funny-sms-exams-300x217.jpg

我正在使用此函数,但数组的大小始终为0:

public ArrayList<String> getImagesOfFromHtmlString(String str){

    ArrayList<String> arr_images = new ArrayList<>();
    Pattern pattern = Pattern.compile("(https?://\\s*\\S+\\.(?:jpg|JPEG|png|gif))");
    Matcher m = pattern.matcher(str);


    while(m.find()){
        arr_images.add(m.group());
    }


    return arr_images ;

}

我哪里错了?

1 个答案:

答案 0 :(得分:1)

这有点危险,你也可能有相对的URL。无论如何,你的角色类似乎有问题,例如\s代表空格。另外,我注意到您在不需要捕获的情况下使用group(),它与代码中的group(1)相同。这里有一个解决方案,不完美,但足以提取:

"src=[\"'](https?://[^\"']+?\\.(?:jpg|JPEG|png|gif))['\"]"