任何人都知道如何实现算法查找字符串是否匹配特定模式?(不包含它!)而不使用正则表达式...
规则是,模式可以保持标志吗?或*:
? =一个字符或数字
* =多个字符或数字或完全没有
例如:
isMatching(" ?? Ab"," cbAb")返回true。
isMatching(" * a?Ab"," 123cacAbAAb")返回false。
isMatching(" * a?Ab"," 123aaAb")返回true。
isMatching(" * a?Ab"," 007aaabAb")返回true。
isMatching(" a?D *"," arD1324687e")返回true。
答案 0 :(得分:1)
某种类型的递归很简单:
def match(pattern, str):
return match_(pattern, str)
def match_(pattern, str)
if len(pattern) == 0 and len(str) == 0:
return True
switch pattern[0]:
case '?':
match_(pattern[1: ], str[1: ])
case '*':
return match_(pattern, str[1: ]) or match_(pattern[1: ], str[1: ]) or match_(pattern[1: ], str)
default:
return pattern[0] == str[0] and match_(pattern[1: ], str[1: ])