匹配http://wap.weather.com.cn/wap/weather/101221701.shtml中的<dl style="background:#fff;"><dd>3月27日星期二<br /> <img src="http://www.weather.com.cn/m/i/icon_weather/21x15/n00.gif" /><img src="http://www.weather.com.cn/m/i/icon_weather/21x15/d01.gif" /></dd><dt> 晴转多云8℃/25℃<br /> 南风小于3级转西南风小于3级</dt></dl><dl ><dd>3月28日星期三<br /> <img src="http://www.weather.com.cn/m/i/icon_weather/21x15/n01.gif" /><img src="http://www.weather.com.cn/m/i/icon_weather/21x15/d01.gif" /></dd><dt> 多云10℃/25℃<br /> 南风小于3级转东风3-4级</dt></dl><dl style="background:#fff;"><dd>3月29日星期四<br /> <img src="http://www.weather.com.cn/m/i/icon_weather/21x15/n04.gif" /><img src="http://www.weather.com.cn/m/i/icon_weather/21x15/d04.gif" /></dd><dt> 雷阵雨14℃/18℃<br /> 东风小于3级转南风3-4级</dt></dl>天气 代码如下
Pattern p =Pattern.compile("<dt>(.*)<br /> (.*)</dt>");
Matcher ma=p.matcher(str);
while(ma.find()){
String gro1 = ma.group(1);
//String gro2 = ma.group(2);
// String gro3 = ma.group(3);
String gro = ma.group(2);
p(gro1+"\n\n\n");
p(gro);
} 匹配 不成功为什么?
Pattern p =Pattern.compile("<dt>(.*)<br /> (.*)</dt>");
Matcher ma=p.matcher(str);
while(ma.find()){
String gro1 = ma.group(1);
//String gro2 = ma.group(2);
// String gro3 = ma.group(3);
String gro = ma.group(2);
p(gro1+"\n\n\n");
p(gro);
} 匹配 不成功为什么?
String target = "<dt> 晴转多云8℃/25℃<br /> 南风小于3级转西南风小于3级</dt>\n<dt> 多云10℃/25℃<br /> 南风小于3级转东风3-4级</dt>\n<dt> 雷阵雨14℃/18℃<br /> 东风小于3级转南风3-4级</dt>";
Pattern p = Pattern.compile("<dt>([^<]+?)<br /> ([^<]+?)</dt>");
Matcher ma = p.matcher(target);
while (ma.find()) {
String gro1 = ma.group(1);
String gro2 = ma.group(2);
System.out.println(gro1 + " " + gro2);
}
简单的试了一下, 匹配是成功的,需要注意的是:
1) .* 这个东西如果不是必须要,就尽量少用
2) Matcher返回的结果是对应整个Pattern的
3) 这个正则表达式中只有2对括号,也就是只有2个group还有,只说“匹配不成功”的话,别人很难帮你判断到底哪里出了问题的,尽量多提供点信息给大家分析。
public static void main(String[] args) {
String s = "<dt> 雷阵雨14℃/18℃<br /> 东风小于3级转南风3-4级</dt><dt> 雷阵雨14℃/18℃<br /> 东风小于3级转南风3-4级</dt><dt> 雷阵雨14℃/18℃<br /> 东风小于3级转南风3-4级</dt>";
Pattern p = Pattern.compile("<dt>.*?<br\\s*/>.*?</dt>");
Matcher m = p.matcher(s);
while(m.find()){
System.out.println(m.group());
}
}//打印结果:
<dt> 雷阵雨14℃/18℃<br /> 东风小于3级转南风3-4级</dt>
<dt> 雷阵雨14℃/18℃<br /> 东风小于3级转南风3-4级</dt>
<dt> 雷阵雨14℃/18℃<br /> 东风小于3级转南风3-4级</dt>