return result list_a = ['104066666', '', '00', '0000', '', '', ''] print(filter_non_zero_items(list_a)) import re num_unit_str_list = [ '104066666.00 PC', '30099999.00 SH', '2155555.00 SH', '3434.00 SH', '21999995.00 SH', '1.066650 SH', '4 X 2500.000 KG', '20 X 5000.000 KG', '10 X 2500 吨', '1500888999 L', '99666', '2 X 1.11 kg' for s1 in num_unit_str_list: pattern = r'[1-9]\d*\0.\d|\d*|0.\d*[1-9]\d*' re_res = re.findall(pattern, s1) obj = [i for i in re_res if i] obj = filter_non_zero_items(obj) res = 0 uom = '' if s1.split(' ') and not re.findall(r'\d+', s1.split(' ')[-1]): uom = s1.split(' ')[-1] else: uom = '无单位' if len(obj) == 1: res = float(obj[0]) elif len(obj) == 2: res = float(f"{obj[0]}") * float(f"{obj[1]}") elif len(obj) == 3: res = float(f"{obj[0]}") * float(f"{obj[1]}.{obj[2]}") print(s1, res, uom, len(obj)) public static String number(String name){ name = name.replaceAll("[^(0-9)]", ""); return name; public static void main(String[] args) { String name1=""; String name2=""; String a = "浙江YD1 常用 正则表达式 返回导航页正则语法 正则表达式 匹配 字符串 中的 数字 正则表达式 ,提取 单位 ( 数字 后面的部分)正则原理Java用法matcher的两个方法的区别 返回导航页 返回导航页 正则表达式 匹配 字符串 中的 数字 String regex = "[+-]?[0-9.]+"; 正则表达式 ,提取 单位 ( 数字 后面的部分) String regex = "^.*\\d(.*)$"; Java用法 // 正则表达式 匹配 字符串 中的 数字 String regex = "[+-]? 这里只讲关于各种 数字 的正则 匹配 规则,下面提供了大量的实现希望对你有所帮助啊。 正则表达式 ^([0-9]*|d*.d{1}?d*)$ 匹配 .568 | 8578 | 1234567.1234567 不 匹配 568. | 56.89.36 | 5.3.6.9.6 正则表达式 ^$(d{1,3}(,d{3})*|(d+))(.d{2})?$ 匹配 $0.84 | $123458 | function numberWithCommas(n) { // 正则解释: 匹配 到 \B(非单词边界)后, 后面要 匹配 到 (\d{3})+(?!\d) // (\d{3})+ 至少 匹配 到一次或多次三个 数字 // (?!\d) 同时后面不是 数字 的话, 就 匹配 . // 注意, 后面的(?=)那一段代码只是判断的规则, 匹配 到后只替换掉\B // 而\B 元字符 匹配 的是非单词边界 let num =... 来源于知乎专栏:https://zhuanlan.zhihu.com/p/29619457 这个是我在知乎上看到前辈的专题,里面的专栏帮助了我很多,推荐大家去看看。 文章底部有很熟悉的一张正则表附图 1. 校验 数字 的表达式 1 数字 :^[0-9]*$ 2 n位的 数字 :^\d{n}$ 3 至少n位的 数字 :^\d{n,}$ 4 m-n位的 数字 :^\d{m,n}$ 5 零和非零开头... "^\d+(\.\d+)?$"  //非负浮点数(正浮点数 + 0) "^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*) 4 m-n位的 数字 :^\d{m,n}$ 5 零和非零开头的 数字 :^(0|[1-9][0-9]*)$ 6 非零开头的最多 两位小数的 数字 :^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 8 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$ 9 有两位小数的正实数:^[0-9]+(.[0