题目:
在正则表达式中有通配符,如“*”可以匹配0个到多个字符,而“?”可以匹配任意一个字符。现在要求给出一段代码,判断一个包含通配符“*”和“?”的字符串是否与指定的字符串完全匹配。
解析:
这个也就不多说了,直接给代码好了。
#include <iostream>
#include <string>
using namespace std;
bool match(const char* src, const char *pattern)
{
if(src == NULL) return false;
if(pattern == NULL) return true;
while(*pattern != '\0' && *src != '\0')
{
if(*pattern == '*')
{
if(*(pattern+1) == '\0') return true; //*在最后,则整个字符串匹配成功
do //用do--while结构是因为考虑都*可以匹配0个字符的情况
{
if(match(src, pattern+1)) return true;
}while(*src++ != '\0');
return false;
}
else if(*pattern == '?' || *pattern == *src)
{
pattern++, src++;
}
else return false;
}
if(*pattern