2016-12-30 2 views
1

Я пытаюсь проверить, если вход в этой схеме: MH12Как правильно проверить это регулярное выражение с помощью питона

Начиная две цифры, чтобы быть MH затем следующие две цифры, чтобы быть любое число и полная строка должно быть 4 цифры. так Утомленные regex = r'^[MH]\d{2}.{,4}$'

импорт вновь

def checkingInput(): 
    while True: 
     try: 
      inp = raw_input() 
      if re.match(r'[MH]\d{2}', inp): 
       print "Thanks for your Input:",inp 
       break 
      else: 
       print('Invalid office code, please enter again :') 
     except ValueError: 
       print('Value error! Please try again!') 


checkingInput() 

но выше программы даже для ввода = MH12 это он показывает Invalid офис код. Почему так?

Может быть, я что-то упустил?

+1

должно быть r'MH \ д {2}' – e4c5

+0

Я думаю, это должно быть, если 're.match (r'MH \ d {2} $ ', inp): 'или использовать' re.fullmatch' с 'r'MH \ d {2}'' в Python 3.4+. –

+0

@ e4c5 Да, спасибо! –

ответ

4

Узор [MH] матчи ровно одну букву: либо MилиH.

Вместо этого вы должны использовать MH.

Полное регулярное выражение: MH\d\d; в синтаксисе Python, который будет r'MH\d\d'.

+0

Большое спасибо –

1

Как вы используете MH как часть строки, которую вы пытаетесь соответствовать, вы должны исключить [] класс от вашего выражения, поэтому действует один

import re 

def checkingInput(): 
    while True: 
     try: 
      inp = raw_input() 
      if re.match(r'MH\d{2}', inp): 
       print inp 
      else: 
       print('Invalid office code, please enter again :') 
     except ValueError: 
       print('Value error! Please try again!') 


checkingInput() 
Смежные вопросы