2016-04-25 6 views
0

Я изучаю Python для GCSE, но не могу заставить мой код работать так, как должен (он будет принимать 4 цифры + номера, даже если это не так), хотя я проверял, что кодирование в порядке через преподавателей и т. Д. .Python 3.3 Регулярные выражения?

import re 
val = input("Please enter a three-digit number: ") 
valid = re.match("[0-9]{3}",val) 
if valid: 
     print("Accepted. ") 
else: 
     print("Rejected. Invalid input. ") 

Я действительно не знаю, почему это не работает правильно. У кого-нибудь есть идеи?

+0

're.match ("[0-9] {3} $", валь)' (или ' re.match (r "[0-9] {3} \ z", val) ') –

ответ

0

re.match соответствует шаблону, совпадающему в начале данной строки. Вы должны использовать $ для обеспечения строка также завершается строкой:

valid = re.match("[0-9]{3}$",val) 

>>> re.match('[0-9]{3}', '123') 
<_sre.SRE_Match object at 0x7effd9905f38> 
>>> re.match('[0-9]{3}', '1234') 
<_sre.SRE_Match object at 0x7effd9852030> 


>>> re.match('[0-9]{3}$', '123') 
<_sre.SRE_Match object at 0x7effd9905f38> 
>>> re.match('[0-9]{3}$', '1234') 
>>> 
+0

Спасибо, это очень помогло, программа работает без проблем сейчас! –

 Смежные вопросы

  • Нет связанных вопросов^_^