首页 > 解决方案 > 正则表达式:查找大于特定值的数字(具有不同的十进制长度)

问题描述

我正在尝试正则表达式查找列表中大于或等于 .03 的所有值。棘手的部分是我的值有 9 到 15 位小数。

我当前的代码有些工作但很笨拙 - 任何建议都非常感谢:

^(?:0?\.[0-9][3-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|0?\.[0-9][3-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|0?\.[0-9][3-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])$

谢谢你。

标签: pythonregex

解决方案


您可以使用星号来表示零个或多个数字:

^(?:0?\.\d[3-9]\d*)$

0.03这具有精确匹配或(例如)100 位小数的额外好处。

如果您想严格控制小数位,可以使用大括号语法,它匹配 9 到 15 位之间的任何重复:

^(?:0?\.\d[3-9]\d{9,15})$

请注意,正如所写,此正则表达式不匹配任何大于或等于 0.03 的值 - 它匹配任何大于或等于 0.03 且小于 1 的值,并且它不匹配例如 0.1,它大于0.03。要匹配大于 0.03 的任何值,最好完全跳过正则表达式并解析数字。


推荐阅读