如何在正则表达式中选择0到3.5之间的数字

时间:2019-02-17 21:19:43

标签: regex

如何选择例如:

0
0,5
2,5
3,5

但不是:

3,6
3,52

3 个答案:

答案 0 :(得分:1)

在python中,这很简单:

import re

PATTERN = re.compile(r'(?<![\d.,])([0-2]([.,]\d+)?|3([.,]([0-4]\d*|50*))?)(?![\d,.])')

number_str = input()
if PATTERN.match(number_str) is not None:
    print('Do something')
else:
    print('It\'s not a match')
  • [0-2]将匹配0到2之间的第一位数字和自然数。

  • [.,]将匹配案例之间的分隔符。

  • \d+将匹配任何自然数。

  • ([.,]\d+)?将匹配(如果存在),并使用分隔符和任意自然数。

请查看以下链接(它们可能有助于您使用正则表达式):

  1. re模块

  2. regex101助手

答案 1 :(得分:1)

在可能的情况下(demo link):

Flutter 1.2.2-pre.3 • channel master • https://github.com/flutter/flutter.git
Framework • revision 67cf21577f (4 days ago) • 2019-02-14 23:17:16 -0800
Engine • revision 3757390fa4
Tools • Dart 2.1.2 (build 2.1.2-dev.0.0 0a7dcf17eb)

请勿使用-将数字转换为浮点数,并以编程方式进行比较。

答案 2 :(得分:0)

遍历数字列表并使用某种形式的列表理解来提取所需内容可能会更好;

nums = [0, 0.5, 2.5, 3.5, 2.6, 8.4, 9.1, 7.5]

my_nums = [num for num in nums if num%0.5 == 0]

print(my_nums)

>>> [0, 0.5, 2.5, 3.5, 7.5]