2016-04-25 150 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} $”,VAL)'(或' 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

感谢这非常帮助,程序现在无缝工作! –