Python中的正则表达式匹配数字

VeL*_*err 1 python regex

我有一个间隔的数字列表(0;1].例如:

0.235
0.4
1.00
0.533
1
Run Code Online (Sandbox Code Playgroud)

我需要在列表中添加一些新数字.要检查新数字的正确性,我需要编写正则表达式.

首先我编写简单的正则表达式:[0|1\.]{2}\d+但它忽略了一个条件:如果整数部分为1,则小数部分必须包含0或更多的零.

因此,我尝试使用前瞻断言来模拟if-else条件:(?([0\.]{2})\d+|[0]+)但它不起作用.我的错误在哪里?我如何提供检查,没有数字不能超过1?

eum*_*iro 5

优于正则表达式是尝试将字符串转换为浮点数并检查它是否在范围内:

def convert(s):
    f = float(s)
    if not 0. < f <= 1.:
        raise ValueError()
    return f
Run Code Online (Sandbox Code Playgroud)

此方法返回0到1之间的浮点数,或者它引发ValueError(如果无效字符串或浮点数不在0和1之间)

  • @KingMak哇,这至少在三个方面都是错的. (5认同)
  • @VeLKerr你错过了eumiro的答案. (2认同)