我需要一个正则表达式,它在一系列浮点数中匹配。
对于12.33 - 13.41的范围,我尝试了以下正则表达式:
(12 3-9] [3-9] |。?13 [0-4] [0-1])\ d {0,2}
但不匹配,即12.41或13.39。
这是否可以使用正则表达式?
亲切的问候, bernie70
答案 0 :(得分:1)
匹配浮动范围12.33-13.41的简单方法是:
12\.(?:3[3-9]|[4-9]\d)|13\.(?:[0-3]\d|4[01])
扩展
# 12.33 to 12.99
12 \.
(?:
3 [3-9]
| [4-9] \d
)
|
# 13.00 to 13.41
13 \.
(?:
[0-3] \d
| 4 [01]
)
答案 1 :(得分:0)
我不知道它是否值得,但它是可能的。 试试:
(12.(3[3-9]|[4-9]\d))|(13(.([0-3]\d|4[01]))?)
意思是:
12.
- 从' 12开始。',3[3-9]
- 3后跟数字3到9(33-39),|
- 或[4-9]\d
- 从4到9的数字,后跟任何数字(40-99),|
- 或13
- 以' 13' .
- dot [0-3]\d
- 从0到3的数字,后跟任意数字,|
- 或4[01]
- 4后跟0或1,?
- 零次或一次和(.([0-3]\d|4[01]))?
被视为一个群组,以允许' 13'但不是' 13.'
它将匹配如:12.33,12.99,13.41,13,12.41,13.39等数字。 并将忽略:12.32,13.42等
您的代码无效,因为:
(12.[3-9][3-9]|13.?[0-4][0-1]?)\d{0,2}
[3-9][3-9]
- 仅允许范围内的数字(33-39,43-49,53-59,...),[0-4][0-1]
- 仅允许数字(00,01,10,11,20,21,30,31,40,41),因此存在巨大的省略范围
答案 2 :(得分:0)
谢谢您的提示。
我将正则表达式修改为以下内容:
(12(3 [3-9] | [4-9]))的 |。(13(([0-3] [0-8]))。。)| ^(13 [0-3] [9] [0] *)$
所以我可以匹配我想要的范围。