import re
while True:
    try:
        a=input().lower()#题目说了不区分大小写,这里直接转小写
        b=input().lower()
        a=a.replace(".","\.")#处理正则表达式中的元字符
        a=a.replace("*","[0-9a-z]*")#将通配符用正则表达式规则写出来
        a=a.replace("?","[0-9a-z]{1}")
        if b in re.findall(a,b):#判断以a做模式时能否匹配出和b一模一样的结果
            print("true")
        else:
            print("false")
    except:
        break

这道题出题者应该是想考正则表达式,但是数据给得应该比较弱,如果给很强的数据,我上面这个代码是过不了的,因为只针对点号.这个元字符做了处理,没有处理其他很多的元字符。

这里随便给出几组测试用例:

用例1

输入: 
z+
zz
输出:
false

用例2

输入:
[a-z]
a
输出:
false

如果要完整地通过所有hack数据(包括我没给出来的),上面这个代码需要做很多的正则表达式元字符处理才行。