我需要一个正则表达式,它在一个浮动范围内匹配。对于范围12.33 - 13.41,我尝试了以下正则表达式:(12.[3-9][3-9]| 13.?[0-4][0-1])\d{0,2}但是它不匹配,即。12.41或13.39正则表达式是否可以这样做?亲切的问候,bernie 70
jhdbpxl91#
我不知道这是否值得,但这是可能的。尝试使用:
(12.(3[3-9]|[4-9]\d))|(13(.([0-3]\d|4[01]))?)
意思是:
12.
3[3-9]
|
[4-9]\d
13
.
[0-3]\d
4[01]
?
而(.([0-3]\d|4[01]))?被视为一个组,以允许“13”,但不允许“13”。它将匹配如下数字:12.33、12.99、13.41、13、12.41、13.39等并将忽略:12.32、13.42等您的代码不起作用,因为:
(.([0-3]\d|4[01]))?
(12.[3-9][3-9]|13.?[0-4][0-1]?)\d{0,2}
[3-9][3-9]
[0-4][0-1]
所以有很大遗漏范围
ybzsozfc2#
谢谢你的提醒。我将正则表达式修改为如下:(12.(3[3-9]|[4-9]))。|(13(.([0-3][0-8])).)|^(13.[0-3][9][0])$这样我就可以匹配我想要的范围。
axr492tv3#
匹配浮动范围12.33 - 13.41的直接方法是:12\.(?:3[3-9]|[4-9]\d)|13\.(?:[0-3]\d|4[01])扩展
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] )
3条答案
按热度按时间jhdbpxl91#
我不知道这是否值得,但这是可能的。尝试使用:
意思是:
12.
--以'12.'开头,3[3-9]
-- 3,后跟范围3到9的数字(33-39),|
--或[4-9]\d
--从4到9的数字,后跟任意数字(40-99),|
--或13
--以'13'开头.
--点[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等
您的代码不起作用,因为:
[3-9][3-9]
-仅允许范围(33- 39,43 - 49,53 -59,...)内的数字,[0-4][0-1]
-仅允许数字(00,01,10,11,20,21,30,31,40,41),所以有很大遗漏范围
ybzsozfc2#
谢谢你的提醒。
我将正则表达式修改为如下:
(12.(3[3-9]|[4-9]))。|(13(.([0-3][0-8])).)|^(13.[0-3][9][0])$
这样我就可以匹配我想要的范围。
axr492tv3#
匹配浮动范围12.33 - 13.41的直接方法是:
12\.(?:3[3-9]|[4-9]\d)|13\.(?:[0-3]\d|4[01])
扩展