2016-04-25 5 views
0

私はGCSEのためのPythonを勉強してきたが、それは私がコーディングは、教師などによる罰金であることを確認したにも関わらず(それも、それがいけないのに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

これは大変助けになりました。 –