考察字符串匹配:正则表达式。
C++版
#include <iostream>
#include <algorithm>
using namespace std;
bool matchCore(char str[], char pattern[]){
if(*str == ' ' && *pattern == ' ')
return true;
if(*str != ' ' && *pattern == ' ')
return false;
if(*(pattern+1) == '*'){
if(*pattern == *str || (*pattern == '.' && *str != ' '))
return matchCore(str+1, pattern+2) || matchCore(str+1, pattern) || matchCore(str, pattern+2);
else
return matchCore(str, pattern+2);
}
if(*pattern == *str || (*pattern == '.' && *str != ' '))
return matchCore(str+1, pattern+1);
return false;
}
bool match(char str[], char pattern[]){
if(str == nullptr || pattern == nullptr)
return false;
return matchCore(str, pattern);
}
int main()
{
char str[] = {'a','a','a',' '};
char pattern[] = {'a','.','a',' '};
if(match(str, pattern))
cout<<"yes."<<endl;
else
cout<<"no."<<endl;
return 0;
}