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

标签 python regex

我有一个区间 (0;1] 中的数字列表。例如:

0.235
0.4
1.00
0.533
1

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

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

因此,我尝试使用先行断言来模拟 if-else 条件:(?([0\.]{2})\d+|[0]+),但它不工作。我的错误在哪里?我如何提供检查,确保所有数字都不能大于 1?

最佳答案

比正则表达式更好的是尝试将字符串转换为 float 并检查它是否在范围内:

def convert(s):
    f = float(s)
    if not 0. < f <= 1.:
        raise ValueError()
    return f

此方法返回一个介于 0 和 1 之间的 float ,或者引发 ValueError(如果无效字符串或 float 不在 0 和 1 之间)

关于python - Python 中的正则表达式匹配数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34789938/

相关文章:

python - 使用 PyCharm 导入 Tkinter

java - Concat 多个正则表达式

Python 中的 Java Fluent Wait

python - 有没有更有效的方法将多行字符串转换为 numpy 数组?

python - 什么是 gevent.queue.Channel?

python - 在 while 循环中使用 tqdm 进度条

java - 如何替换以特定字符开头和结尾的所有子字符串?

regex - 如何在 python 中使用正则表达式正确匹配序列?

Java RegEx 反向引用不起作用

javascript - 对多个实例使用 .replace()