考察字符串匹配:正则表达式。

C++版

#include <iostream>
#include <algorithm>
using namespace std;

bool matchCore(char str[], char pattern[]){
    if(*str == '\0' && *pattern == '\0')
        return true;
    if(*str != '\0' && *pattern == '\0')
        return false;
    if(*(pattern+1) == '*'){
        if(*pattern == *str || (*pattern == '.' && *str != '\0'))
            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 != '\0'))
        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','\0'};
    char pattern[] = {'a','.','a','\0'};
    if(match(str, pattern))
        cout<<"yes."<<endl;
    else
        cout<<"no."<<endl;
    return 0;
}

相关文章:

  • 2021-09-27
  • 2022-12-23
  • 2021-06-21
  • 2021-09-21
猜你喜欢
  • 2022-01-04
  • 2021-09-08
  • 2022-12-23
  • 2021-06-08
  • 2021-12-29
  • 2021-09-21
  • 2022-12-23
相关资源
相似解决方案