Регулярное выражение определяет формат c с числами, разделенными запятыми (в Python) - PullRequest
1 голос
/ 09 мая 2020

Я пытаюсь проверить, является ли указанный формат c истинным и функция возвращает либо 1, либо 0, если формат правильный или неправильный. Формат, который я пытаюсь использовать, будет состоять из чисел, разделенных запятыми и пробелами (например, 0, 13, 24, 27). Мой текущий код в некоторой степени работает, но он не обнаруживает, что перед числом стоит только один пробел, и если бы я добавил какой-то случайный текст посередине (например, 0, 13, 24asd, 27), он все равно обнаружил бы это как допустимый формат . Как мне go исправить это?

Код:

def format_placement(string):
    is_correct = 0
    pattern = re.compile(r'(\d+)(?:,(\d+)*)')
    if re.findall(pattern, string):
        is_correct = 1
    return is_correct

1 Ответ

1 голос
/ 09 мая 2020

Вы можете использовать re.fullmatch, чтобы сопоставить полную строку с шаблоном, и добавить пробел в регулярное выражение после запятой (или \s, если вы разрешаете любые пробелы):

def format_placement(string):
    is_correct = 0
    if re.fullmatch(r'\d+(?:, \d+)*', string):
        is_correct = 1
    return is_correct

См. Демонстрацию регулярного выражения (^ указывает начало строки, а $ отмечает конец строки, эти привязки не нужны, если вы используете re.fullmatch).

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