Как выбрать число от 0 до 3,5 в регулярном выражении - PullRequest
0 голосов
/ 18 февраля 2019

Как выбрать, например:

0
0,5
2,5
3,5

Но не:

3,6
3,52

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

Хотя это возможно ( демонстрационная ссылка ):

\b
(?<!-)
(?:
    (?:[0-3](?!,))
    |
    (?:[0-2],\d+)
    |
    (?:3,(?:5(?!\d)|[0-4]\d*))
)
\b

не используйте его - конвертируйте числа в числа с плавающей точкой и сравнивайте их программно.

0 голосов
/ 18 февраля 2019

Вероятно, было бы лучше перебрать список чисел и использовать какое-то понимание списка, чтобы извлечь то, что вам нужно;

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]
0 голосов
/ 18 февраля 2019

В 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 module

  2. regex101 helper

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...