我正在尝试检查输入是否采用此模式: MH12
将两位数字设为MH,然后将两位数字作为任意数字
并且完整字符串应该只有4位数。所以厌倦了regex = r'^[MH]\d{2}.{,4}$'
导入重新
def checkingInput():
while True:
try:
inp = raw_input()
if re.match(r'[MH]\d{2}', inp):
print "Thanks for your Input:",inp
break
else:
print('Invalid office code, please enter again :')
except ValueError:
print('Value error! Please try again!')
checkingInput()
但上面的程序即使输入= MH12 它显示无效的Office代码。为什么这样?
可能是我遗失了什么?
答案 0 :(得分:4)
模式[MH]
只匹配一个字母:M
或 H
。
您应该使用MH
代替。
整个正则表达式为MH\d\d
;在Python语法中r'MH\d\d'
。
答案 1 :(得分:1)
当你使用MH作为你想要匹配的字符串的一部分时,你必须从你的表达式中排除[]类,所以有效的是
import re
def checkingInput():
while True:
try:
inp = raw_input()
if re.match(r'MH\d{2}', inp):
print inp
else:
print('Invalid office code, please enter again :')
except ValueError:
print('Value error! Please try again!')
checkingInput()
答案 2 :(得分:1)
试一试:
re.findall(r'MH \ d {2}',s)