import re
while True:
inp = input() # raw_input in Python 2.x
if re.match(r'[a-zA-Z0-9]{2}-[a-zA-Z0-9]{3}$', inp):
return inp
print('Invalid office code, please enter again:')
注意,在许多其他情况下,您可以尝试将输入转换为内部表示。例如,当输入为数字时,代码应如下所示:
def readNumber():
while True:
try:
return int(input()) # raw_input in Python 2.x
except ValueError:
pass
^ # marks the start of the string
[0-9] # any character between 0 and 9, basically one of 0123456789
{2} # two times
- # a hyphen
[0-9] # another character between 0 and 9
{3} # three times
$ # end of string
在您的情况下,可以使用regular expression:
注意,在许多其他情况下,您可以尝试将输入转换为内部表示。例如,当输入为数字时,代码应如下所示:
使用regular expressions是实现这一点的标准(和语言不可知的)方法:
上面的示例返回
True
(实际上是一个“truthy”返回值,但您可以假设它是True
),如果文本包含2位数字、一个连字符和3个其他数字。下面是上面的正则表达式,它被分解成几个部分:我建议您阅读更多关于正则表达式(或者re,或者regex,或者regexp,不管您如何命名)的内容,它们对于程序员来说是某种瑞士军刀。
相关问题 更多 >
编程相关推荐