67,513
社区成员
发帖
与我相关
我的任务
分享
String html=你的html内容;
String[] s={"很好","较好","一般","较差","很差"};
int start=0;//正则搜索的起始位置
Pattern p=null;
for(int i=0;i<s.length;i++){
p=(i!=s.length-1)?Pattern.compile("(?<=>)\\d+(?=<.*?"+s[i+1]+")"):Pattern.compile("(?<=>)\\d+(?=<.*?)");
Matcher m=p.matcher(html);
if(m.find(start)){
start=m.end();//下一次搜索的起始位置
System.out.println(s[i]+":"+m.group());
}
}
String s=你上面的html串;
Matcher m=Pattern.compile("(?<=>).*?(?=(</a>|</span>))").matcher(s);
while(m.find()){
System.out.println(m.group());
}
public class Test05 {
static String str = "<li class=\"item\"><a onclick=\"\" href=\"/attraction_review-d19-s64844-05p1-huangshanfengjingqu.html\">很好</a><span class=\"rank-bar\"><em style=\"width: 80px\"></em></span><a onclick=\"\" href=\"/attraction_review-d19-s64844-05p1-huangshanfengjingqu.html\">8</a></li><li class=\"item\"><a onclick=\"\" href=\"/attraction_review-d19-s64844-04p1-huangshanfengjingqu.html\">较好</a><span class=\"rank-bar\"><em style=\"width: 10px\"></em></span><a onclick=\"\" href=\"/attraction_review-d19-s64844-04p1-huangshanfengjingqu.html\">1</a></li><li class=\"item\"><span class=\"fake-a\">一般</span><span class=\"rank-bar\"><em style=\"width: 0px\"></em></span><span class=\"fake-a\">0</span></li><li class=\"item\"><a onclick=\"\" href=\"/attraction_review-d19-s64844-02p1-huangshanfengjingqu.html\">较差</a><span class=\"rank-bar\"><em style=\"width: 10px\"></em></span><a onclick=\"\" href=\"/attraction_review-d19-s64844-02p1-huangshanfengjingqu.html\">1</a></li><li class=\"item\"><span class=\"fake-a\">很差</span><span class=\"rank-bar\"><em style=\"width: 0px\"></em></span><span class=\"fake-a\">0</span></li></ul></div></div>";
//[很好 , 较好 , 较差 ] 都用这个方法
static String findA(String key){
String regexp = "<a.*?href=\"(.*?)\".*?>" + key + "</a>.*?<a.*?href=\"(\\1)\".*?>(.*?)</a>";
Matcher m = Pattern.compile(regexp).matcher(str);
if(m.find()){
return m.group(3);
}
return null ;
}
// [一般 、很差 ] 用这个方法 , 因为结构与上面的不同
static String findB(String key){
String regexp = "<span class=\"fake-a\">" + key + "</span>.*?<span class=\"fake-a\">(.*?)</span>";
Matcher m = Pattern.compile(regexp).matcher(str);
if(m.find()){
return m.group(1);
}
return null ;
}
public static void main(String[] args) {
System.out.println(findA("很好"));
System.out.println(findA("较好"));
System.out.println(findA("较差"));
System.out.println(findB("一般"));
System.out.println(findB("很差"));
}
}