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数据(包括我没给出来的),上面这个代码需要做很多的正则表达式元字符处理才行。