C ++ - сопоставление строк с подстановочными знаками - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь сопоставить указанные фразы с входными фразами, которые могут содержать? и * в качестве подстановочных знаков.

? означает одно или несколько вхождений любых символов (могут быть разными) * означает ноль или несколько вхождений любых символов (могут быть разными)

Я могу решить часть символа * с помощью кода ниже:

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)

...