Какой правильный термин для этого регулярного выражения? - PullRequest
0 голосов
/ 02 июля 2019

Я пишу проверку для текстовых полей в Python. Теперь я хочу реализовать следующее регулярное выражение для проверки.

Однако у меня проблемы с экранированием выражения. может кто-нибудь помочь мне здесь? :)

def regex_1_4_9_digits(data, min=1, max=9):
    pattern = f'[A-Z0-9]{{{min},{max}}}'
    pattern1 = f'^\\s*-?[A-Z0-9]{{{min,max}}}\\s*$'
    output = re.match(pattern, data)
    return output

Я хочу использовать pattern1, но есть ошибка с экранированием "\", и я не знаю, как это исправить.

1 Ответ

2 голосов
/ 02 июля 2019

Внутри интерполированных строковых литералов литерал { определяется как {{, а литерал } устанавливается с помощью }}.

Вы должны использовать

pattern1 = f'^\\s*-?[A-Z0-9]{{{n},{m}}}\\s*$'
                              ^^^ ^^^

Или

pattern1 = rf'^\s*-?[A-Z0-9]{{{n},{m}}}\s*$'

Я предлагаю использовать n для минимального порога и m для максимального.

{{{n},{m}}} следует читать как

  • {{ - { строка
  • {n} - значение переменной n
  • , - запятая (строка)
  • {m} - значение переменной m
  • }} - строка }.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...