Шаблон регулярных выражений для прохождения тестов - PullRequest
0 голосов
/ 16 января 2020

Я хочу написать шаблон регулярного выражения с помощью функции def, назовите ее is_number (строка), которая проверяет, является ли строка целым числом в диапазоне от -49 до 49. Также число не должно содержать незначительных нулей.

Так что я хочу пройти тест:

        self.assertTrue(is_number("50"))
        self.assertTrue(is_number("-50"))
        self.assertTrue(is_number("-9"))
        self.assertFalse(is_number("7"))
        self.assertFalse(is_number("-200"))
        self.assertTrue(is_number("-21"))
        self.assertTrue(is_number("18"))
        self.assertTrue(is_number("0"))
        self.assertTrue(is_number("49"))
        self.assertFalse(is_number("100"))
        self.assertTrue(is_number("-49"))

Я пробовал что-то вроде, но это не работает:

def is_number(string):
    pattern = r'[-]?\d[1,4]{1,2}*'
    return re.search(pattern, string)

Ответы [ 4 ]

1 голос
/ 16 января 2020

Вы можете использовать

^-?(?:[0-9]|[1-4][0-9])$

Это будет соответствовать

  • ^ Начало строки
  • -? Необязательно -
  • (?: Группа без захвата
    • [0-9] Соответствие ди git 0-9
    • | Или
    • [1-4][0-9] Соответствие ди git 1-4 и ди git 0-9 для соответствия диапазону 10 - 49
  • ) Закрытая группа
  • $ Конец строки

Regex demo

Если вы также хотите сопоставить 50 и -50, а 7 не должны совпадать, вы можете добавить 50 к чередованию и сопоставить цифры 0-6 , 8 и 9 с использованием

^-?(?:[0-689]|[1-4][0-9]|50)$

Regex demo

1 голос
/ 16 января 2020

Шаблон соответствует либо

  • двойным числам di git с начальным 1, 2, 3 или 4 (положительным и отрицательным)
  • или любому отдельному числу di git (положительное и отрицательное)

Регулярное выражение:

^(-?[1-4]\d|-?\d)$

Чтобы выполнить диапазон от 49 до отрицательного 49, ваши тесты должны выглядеть примерно так:

    self.assertFalse(is_number("50"))  #  50 must be assertFalse
    self.assertFalse(is_number("-50"))  #  -50 must be assertFalse
    self.assertTrue(is_number("-9"))
    self.assertTrue(is_number("7"))   #  7 must be assertTrue
    self.assertFalse(is_number("-200"))
    self.assertTrue(is_number("-21"))
    self.assertTrue(is_number("18"))
    self.assertTrue(is_number("0"))
    self.assertTrue(is_number("49"))
    self.assertFalse(is_number("100"))
    self.assertTrue(is_number("-49"))
0 голосов
/ 16 января 2020
pattern = r'^-?[0-4]?\d$'

Попробуйте этот шаблон регулярных выражений

0 голосов
/ 16 января 2020

Попробуйте этот шаблон регулярных выражений,

^[-]?[0-4]?\d$

Первый ди git должен быть в пределах четырех цифр 0,1,2,3 и 4, а последний ди git может быть любым.

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