java如何使用正则表达式提取以下字符串的数字

<td>
2747 </td>
<td>50.4%</td>
<td>1384</td>
<td>1363</td>
<td>11-10 23:24</td>

这一段Html格式的字符串怎么用正则表达式提取里面的数字呢?全部数字,如果可以不改变数字格式的就更好了。

String s = "<td>2747</td><td>50.4%</td><td>1384</td><td>1363</td><td>11-10 23:24</td>";
Pattern p = Pattern.compile("(?:<td>)(.*?)(?:</td>)");
Matcher m = p.matcher(s);
while(m.find()) {
System.out.println(m.group(1));
}

追问

大神,你的答案的字符串是经过去空格处理后才能把全部数字提取出来的,如果要在原来的数据那处理要怎么写呢?我测试了你的表达式,发现2747这个数字没提取到

追答

可以将.*换成[\\s\\S]*

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-31
观察后会发现只有3中数据类型,整数,百分数,日期(如果还要保留原有的数字格式的话)

Pattern regex1 = Pattern.compile("^d*\\.?\\d*%?$");//匹配整数 小数 分数
Pattern regex2 = Pattern.compile(“^d{1,2}-d{1,2}\sd{1,2}:d{1,2}$”);//匹配日期
ps:我没测过,大致思路是这样追问

谢谢你的回答,但我刚刚开始学习正则表达式,还不是很会用,最好是能给出直接匹配到的答案可以让我参考下。

本回答被网友采纳
相似回答