我有一个场景,我想在已经有通配符的字符串上使用通配符模式进行搜索。用我的话来说,我会说这是一种 2 路模式匹配要求。
输入和模式字符串可以具有以下通配符之一/两者 - ?表示单个字符,% 表示零个或多个字符。假设这些是输入和模式字符串中唯一允许的 2 个通配符。
例如:
bool IsMatch(string input, string pattern) //如果输入字符串与模式匹配则返回True,否则返回False。
IsMatch("XYZ%", "?Y%") // 应该返回 True
IsMatch("YY?", "?Y%") // 应该返回 True - 输入字符串中的最后一个字符需要一个字符,因为模式匹配 Y 之后的零个或多个字符(这意味着它包括单个字符匹配出色地)
IsMatch("X123", "?Y%") // 应该返回 False - 模式期望的输入字符串中缺少 Y
IsMatch("?Y%", "?Y%")// 应该返回 True
IsMatch("%", "?Y%")// 应该返回 True - 输入字符串有一个通配符 % 表示零个或多个字符,也可以有任何字符。在某种程度上,它本身就是一种模式,代表任何大小的任何东西。
我能够找到仅谈论对非通配符字符串执行通配符模式匹配的文章(例如:Regex)。我正在寻找关于算法的指针/想法,因为当我开始放下它时,我很难想出一种可以进行这种匹配的算法。感谢您的投入。