下面是script 里面的 内容 我想得到
"key":1,"title":"\u7ec5\u58eb\u7684\u54c1\u683c01","url":"http:\/\/www.letv.com\/ptv\/pplay\/77505\/1.html", 这条内容,里面的 1 和 url 后面的 http <script type="text/javascript"> var LISTCACHE =[ {
"key":1,"title":"\u7ec5\u58eb\u7684\u54c1\u683c01","url":"http:\/\/www.letv.com\/ptv\/pplay\/77505\/1.html", "pic":"http:\/\/img1.c2.letv.com\/mms\/thumb\/2012\/05\/27\/4a9e475184bc2babf492961bbf2ba8bc\/4a9e475184bc2babf492961bbf2ba8bc_2.jpg"
}, {
"key":2,"title":"\u7ec5\u58eb\u7684\u54c1\u683c02","url":"http:\/\/www.letv.com\/ptv\/pplay\/77505\/2.html", "pic":"http:\/\/img1.c2.letv.com\/mms\/thumb\/2012\/05\/28\/25faf71025166f8ebe1e4d6acbfe72e8\/25faf71025166f8ebe1e4d6acbfe72e8_2.jpg"
},</script >
"key":1,"title":"\u7ec5\u58eb\u7684\u54c1\u683c01","url":"http:\/\/www.letv.com\/ptv\/pplay\/77505\/1.html", 这条内容,里面的 1 和 url 后面的 http <script type="text/javascript"> var LISTCACHE =[ {
"key":1,"title":"\u7ec5\u58eb\u7684\u54c1\u683c01","url":"http:\/\/www.letv.com\/ptv\/pplay\/77505\/1.html", "pic":"http:\/\/img1.c2.letv.com\/mms\/thumb\/2012\/05\/27\/4a9e475184bc2babf492961bbf2ba8bc\/4a9e475184bc2babf492961bbf2ba8bc_2.jpg"
}, {
"key":2,"title":"\u7ec5\u58eb\u7684\u54c1\u683c02","url":"http:\/\/www.letv.com\/ptv\/pplay\/77505\/2.html", "pic":"http:\/\/img1.c2.letv.com\/mms\/thumb\/2012\/05\/28\/25faf71025166f8ebe1e4d6acbfe72e8\/25faf71025166f8ebe1e4d6acbfe72e8_2.jpg"
},</script >
String letv = li.toString();//这里面是得到的script 里面的全部内容
String p = ""; //不知道 这里面则么写正则
Pattern pattern = Pattern.compile(p, Pattern.MULTILINE);
Matcher m = pattern.matcher(letv); while(m.find()) {
String letvjson = m.group();
System.out.println(letvjson);
}
直接用LISTCACHE[0]['key'],LISTCACHE[0]['url']就可以得到了。
String p="key\":(\\d+)[^\\n]+url\":\"([^\"]+)\""; //把 \ 和 " 转义下
直接用LISTCACHE[0]['key'],LISTCACHE[0]['url']就可以得到了。
他用的java 又不是 js ,不把LISTCACHE转为json,也就使用正则呗
Elements li=doct.select("script[type]").select("var LISTCACHE");
String letv = li.toString();//这里面是得到的script 里面的全部内容
String regex = "key\":(\\d+)[^\\n]+url\":\"([^\"]+)\"";
Matcher m = Pattern.compile(regex, Pattern.MULTILINE).matcher(letv);
while(m.find()){
System.out.println(m.group(1));
System.out.println(m.group(2));
}最后改成这样就行了
所以给你一个思路
拿到LISTCACHE将其转换为JSONArray,或者将LISTCACHE切分成若干个JSONObject,然后用java的JSON解析来获得里面的key和url值
//显示key的内容,也就是你要的1
alert(LISTCACHE[i].key);
//显示url的内容,也就是你要的http
alert(LISTCACHE[i].url);
}
看楼主需求呗,感觉正则比解析成json对象效率高些
String str = "\"key\":1,\"title\":\"\\u7ec5\\u58eb\\u7684\\u54c1\\u683c01\",\"url\":\"http://www.letv.com/ptv/pplay/77505/1.html\",";
Matcher m = Pattern.compile("\"key\":(.+?),.+?\"url\":\"(.+?)\",.*?").matcher(str);
while(m.find()){
System.out.println(m.group(1));
System.out.println(m.group(2));
}
}