题解 | #字符串通配符#递归函数/正则式
字符串通配符
https://www.nowcoder.com/practice/43072d50a6eb44d2a6c816a283b02036
''' 匹配时不区分大小写 ''' ''' # 递归:先对比s1 s2倒1位置的字符,如果可以匹配,则继续前推 对比倒2字符;如果倒1不能匹配,则直接输出false;以此类推 倒1字符==倒1字符: 对比前面所有的字符 ? s2字母/数字: 对比前面所有的字符 * : s1对比s2前几个字符 / s1前几个对比s2 递归终点: s1 s2 均为空值 true s1 s2 均为数字字母 s1短 空 s2长 不空 false s1长 不空 s2短 空 false s1 * s2 数字字母 s1 * s2 空 true s1 *+数字字母 s2 空 false ''' ''' s1=input().lower() s2=input().lower() def ifmatch(s1,s2): if s1=='' and s2=='': return True elif s1=='' and s2!='': return False elif s1!='' and s2=='': if s1.replace('*','')=='': return True else: return False else: if s1[-1]==s2[-1] or (s1[-1]=='?' and s2.isalnum()): return ifmatch(s1[:-1],s2[:-1]) elif s1[-1]=='*': return ifmatch(s1,s2[:-1]) or ifmatch(s1[:-1],s2) else: return False if ifmatch(s1,s2): print('true') else: print('false') ''' # 正则表达式 import re while 1: try: a = input().lower() b = input().lower() a = a.replace('?','[a-z0-9]{1}').replace('*','[a-z0-9]*') # {n}匹配确定的n次;* 匹配0次或多次 if b in re.findall(a,b):#这题问的是上面一个字符串能不能完全代表下面一个字符串 print('true') else: print('false') except: break