如果给定字符串匹配给定模式,则 return 为真的算法
An algorithm that return true if a given string match a given pattern
有人知道如何在不使用正则表达式的情况下实现查找字符串是否匹配特定模式的算法吗?(不包含它!)不使用正则表达式...
规则是,图案可以保持符号吗?或 *:
? = 一个字符或数字
* = 多个字符或数字或根本没有
例如:
isMatching("??Ab", "cbAb") return 真。
isMatching("*a?Ab", "123cacAbAAb") return 错误。
isMatching("*a?Ab", "123aaAb") return 真。
isMatching("*a?Ab", "007aaabAb") return 真。
isMatching("a?D*", "arD1324687e") return 真。
某种类型的递归就足够简单了:
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: ])
有人知道如何在不使用正则表达式的情况下实现查找字符串是否匹配特定模式的算法吗?(不包含它!)不使用正则表达式...
规则是,图案可以保持符号吗?或 *:
? = 一个字符或数字
* = 多个字符或数字或根本没有
例如:
isMatching("??Ab", "cbAb") return 真。
isMatching("*a?Ab", "123cacAbAAb") return 错误。
isMatching("*a?Ab", "123aaAb") return 真。
isMatching("*a?Ab", "007aaabAb") return 真。
isMatching("a?D*", "arD1324687e") return 真。
某种类型的递归就足够简单了:
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: ])