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
輸出結果為: