Я пытаюсь сопоставить указанные фразы с входными фразами, которые могут содержать? и * в качестве подстановочных знаков.
? означает одно или несколько вхождений любых символов (могут быть разными) * означает ноль или несколько вхождений любых символов (могут быть разными)
Я могу решить часть символа * с помощью кода ниже:
bool wildCardMatch(char *a, char *b) {
if(*a=='\0' && *b=='\0')
return true;
if(*a=='*' && *(a+1)!='\0' && *b=='\0')
return false;
if(*a=='*')
return wildCardMatch(a+1,b) || wildCardMatch(a,b+1);
if(*a==*b){
return wildCardMatch(a+1,b+1);
}
return false;
}
Однако я застрял с? персонаж. Как я могу использовать ту же технику для символа * с? символ?
Примеры:
"t x y" == "txy" (true)
"t? x? y" == "txy" (ложь)
"t x y" == "taxxmmnny" (true)
"t? ble" == "tabcdble" (true)