我有一个场景,想在已经包含通配符的字符串上使用通配符模式进行搜索。简而言之,我会说这是一种双向模式匹配要求。
输入和模式字符串都可以包含以下任意一个或两个通配符 - ?表示一个字符,%表示零个或多个字符。假设它们是输入和模式字符串中唯一允许的2个通配符。
例如:
bool IsMatch(string input, string pattern) // 如果输入字符串与模式匹配则返回True,否则返回False。
IsMatch("XYZ%", "?Y%") // 应返回True IsMatch("YY?", "?Y%") // 应返回True - 输入字符串中的最后一个字符要求单个字符匹配,而模式匹配Y后的0个或多个字符(这也意味着它包括单个字符匹配)
IsMatch("X123", "?Y%") // 应返回False - 输入字符串中缺少模式期望的Y
IsMatch("?Y%", "?Y%")// 应返回True IsMatch("%", "?Y%")// 应返回True - 输入字符串有一个通配符%,表示任意数量的任意字符。在某种程度上,它本身就代表了任意大小的任何内容。
我能够找到涉及非通配符字符串的通配符模式匹配的文章(例如:正则表达式)。我正在寻找关于算法的指针/思路,因为我开始尝试写下它时,发现这种匹配变得困难了。感谢您的建议。
输入和模式字符串都可以包含以下任意一个或两个通配符 - ?表示一个字符,%表示零个或多个字符。假设它们是输入和模式字符串中唯一允许的2个通配符。
例如:
bool IsMatch(string input, string pattern) // 如果输入字符串与模式匹配则返回True,否则返回False。
IsMatch("XYZ%", "?Y%") // 应返回True IsMatch("YY?", "?Y%") // 应返回True - 输入字符串中的最后一个字符要求单个字符匹配,而模式匹配Y后的0个或多个字符(这也意味着它包括单个字符匹配)
IsMatch("X123", "?Y%") // 应返回False - 输入字符串中缺少模式期望的Y
IsMatch("?Y%", "?Y%")// 应返回True IsMatch("%", "?Y%")// 应返回True - 输入字符串有一个通配符%,表示任意数量的任意字符。在某种程度上,它本身就代表了任意大小的任何内容。
我能够找到涉及非通配符字符串的通配符模式匹配的文章(例如:正则表达式)。我正在寻找关于算法的指针/思路,因为我开始尝试写下它时,发现这种匹配变得困难了。感谢您的建议。