任意の1文字にマッチする記号 ? と,任意の 0 文字以上にマッチする記号 * を許したとき,text と pattern が同一であるかどうかを判定する.
text の任意の場所に pattern が入ることは,"*pattern*" という文字列でマッチングを取ればよい.
bool match(char *text, char *pattern) { switch (*pattern) { case '\0': return !*text; case '*' : return match(text, pattern+1) || *text && match(text+1, pattern); case '?' : return *text && match(text+1, pattern+1); default : return (*text == *pattern) && match(text+1, pattern+1); } }
Last Modified: 2007.11.17 22:35:45.