2016-04-25 159 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

感謝這非常幫助,程序現在無縫工作! –