def isMatch(text, pattern):
# 判断pattern是否为空
if not pattern:
# 如果pattern为空,判断text是否为空,如果text也为空,则返回匹配成功,text不为空,则返回失败
return not text
# bool(text)表示text是否为空,后半句表示pattern当前字符是否与当前text字符相等或者是.符号。
first_match = bool(text) and pattern[0] in {text[0], '.'}
print({text[0], '.'})
# 如果pattern剩余字符数量大于2,并且下一个pattern字符是*
if len(pattern) >= 2 and pattern[1] == '*':
# 如果当前pattern字符与text字符不同且不为.符号(即first_match为false),则递归到后面一个非*的pattern字符来继续匹配
return (isMatch(text, pattern[2:]) or
first_match and isMatch(text[1:], pattern))
else:
# 如果pattern剩余字符数量小于2或者下一个pattern字符不是*
# 则判断当前pattern字符和text字符是否相等,如果相等继续往后判断
return first_match and isMatch(text[1:], pattern[1:])
print(isMatch('SF', 'S'))