如何使用python正确检查此正则表达式

时间:2016-12-30 08:28:18

标签: python regex

我正在尝试检查输入是否采用此模式: 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代码。为什么这样?

可能是我遗失了什么?

3 个答案:

答案 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)