вот код для совпадения регулярного выражения
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int matchhere(char *regexp,char *text);
int matchstar(int c,char *regexp,char *text);
int match(char *regexp,char *text)
{
if(regexp[0]=='^')
return matchhere(regexp+1,text);
do {
if(matchhere(regexp,text))
return 1;
} while(*text++!='\0');
return 0;
}
int matchhere(char *regexp,char *text)
{
if(regexp[0]='\0')
return 1;
if(regexp[1]='*')
return matchstar(regexp[0],regexp+2,text);
if(regexp[0]=='$' && regexp[1]=='\0')
return *text=='\0';
if(*text!='\0' && regexp[0]=='.' || regexp[0]==*text)
return matchhere(regexp+1,text+1);
return 0;
}
int main()
{
char *regexp="^abb";
char *text="cabbacd";
cout<<match(regexp,text)<<endl;
return 0;
}
int matchstar(int c,char *regexp,char *text)
{
do {
if(matchhere(regexp,text))
return 1;
}
while(*text!='\0' && (*text++==c || c=='.'));
return 0;
}
пишет ошибку во время выполнения, после отладки я получил следующий результат
+ regexp 0x00365839 "abb" char *
regexp[0] 97 'a' char
+ text 0x00365830 "cabbacd" char *
почему? Пожалуйста, помогите мне, для уточнения, я не могу больше отлаживать, потому что это дает мне ошибку неожиданности с окном