正则表达式匹配浮点数
s="23.002 0788 789 788 055 0 +0 -0 +234 -345 89.26 -8889 -0.36 +78.36 7888.3699"compile = pile(r'(?:[-+]?[1-9]\d*|[-+]?0)\.\d*')x=compile.findall(s)print(x) #['23.0002', '89.26', '-0.36', '+78.36', '78888.363699']
解析
+78.36 1,-+号可有可无 [-+]?2,小数点前的78 为一个正整数 开始不能为0([1-9]\d*)除非只为0(|[-+]?0) 所以小数点前:(?:[-+]?[1-9]\d*|[-+]?0) (?:exp)忽略此次分组3,小数点后任意数字都可以 \d*4,小数点 \.