给楼主一段获取匹配字符的代码,楼主可以依次缩小字符条件范围获取
/*
 * 根据开头的字符结尾的字符以及之间的字符返回匹配的字符串
 * str 待匹配的字符串,begin开始匹配的字符串,key匹配的中间字符,end匹配的结束字符
 */
public static String[] match(String str, String begin,String key,String end)
{
    String [] strMc = new String[9]; 
    int beginIndex = str.indexOf(begin);
    int endLength = end.length();
    int endIndex = str.indexOf(end,beginIndex+begin.length())+endLength;
    int i = 0;
    while(-1!=beginIndex&&-1!=endIndex)
    {
        String sub = str.substring(beginIndex, endIndex);
         if(-1!=sub.indexOf(key))
            {
             strMc[i] = new String(str.substring(beginIndex, endIndex+endLength));
             i++;
            }
         beginIndex = str.indexOf(begin, endIndex);
            endIndex = str.indexOf(end, beginIndex);
    }
    
    return strMc;
}

解决方案 »

  1.   

    用正则取 </span> 到 <br> 间的数据。
      

  2.   

    jsoup是可以使用像jquery一样的选择器的,如果楼主对jquery熟悉的话,可以使用jquery的选择器取到此li里的p元素的html内容再用正则取</span>到<img之间的数据再用br标签分割就可以了Document doc=Jsoup.parse(你的html);
    Element element=doc.select("li.book_list_info p").first();
    String html=element.html();
    Matcher m=Pattern.compile("(?s)(?<=</span>).*?(?=<img)").matcher(html);
    if(m.find()){
      System.out.println(Arrays.asList(m.group().split("<br(\\s*/)?>")));  
    }