在没有库函数的情况下评估c ++中的正则表达式

时间:2016-10-22 12:32:48

标签: c++ c regex

我被要求编写一个程序来计算给定字符串中的正则表达式匹配。 正则表达式仅包含星号(*)

例如: aabaacb aa * b 的出现 2

此代码是否已优化,或者是否有任何方法可以优化代码? (C ++中的代码)

#include<stdio.h>
#include<stdlib.h>

bool match(char * s1, char * s2){
    int i = 0, r = 0, count = 0;

    while (s1[i] != 0 && s2[r] != 0){
        if (s2[r] == '*'){
            if (s2[r + 1] == s1[i]){
                i++; r+=2;
            }
            else
                i++;
        }
        else if (s1[i++] != s2[r++])
            return false;
    }
    return true;
}

int count(char * s1, char * s2){
    int __count__ = 0;
    while (*s1 != NULL){
        if (match(s1++, s2))
            __count__++;
    }
    return __count__;
}

int main(){
    char * s1 = "hellohelohellloshepo";
    char * s2 = "he*o";

    printf("%s in %s : %d", s2, s1, count(s1, s2));
    getchar();
}

0 个答案:

没有答案