使用正则提取字符串中的数字(包含整数和小数)
1.正则表达式为:
([1-9]\d*\.?\d*)|(0\.\d*[1-9])
2.工具类如下:
public List<Double> getNumberFromString(String text) {
List<Double> numbers=new ArrayList<>();
String pattern="([1-9]\\d*\\.?\\d*)|(0\\.\\d*[1-9])";
// 创建 Pattern 对象
Pattern r = Pattern.compile(pattern);
// 现在创建 matcher 对象
Matcher matcher = r.matcher(text);
Set<String> matchStrs = new HashSet<>();
while (matcher.find()) {
//获取当前匹配的值
matchStrs.add(matcher.group());
}
if(matchStrs.size()==0){
return numbers;
}
for(String s:matchStrs){
try{
double number=Double.parseDouble(s);
numbers.add(number);
}catch(Exception e){
continue;
}
}
return numbers;
}
3.测试
测试用例:sdsad500sd200.35dd
输出结果为: