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

京公网安备 11010502036488号