#include <stdio.h>
#include <stdlib.h>
char *error_label="error";
char *matchhere (char *regex ,char *text);
char *match(char *regex ,char *text)
{
while(*text!='\0')
{
char *rtn;
rtn=matchhere(regex ,text);
if (rtn ==error_label)
{
text++;
}
else
{
return rtn;
}
}
return error_label;
}
char *matchhere (char *regex ,char *text)
{
if(*regex=='\0')
{
return text;
}
if(*text=='\0')
{
return error_label;
}
if(*regex=='.')
{
return matchhere(regex+1 ,text +1);
}
if (*regex=='*')
{
char * rtn;
while( ( rtn =matchhere ( regex+1 , text++ )) ==error_label)
{
}
return rtn;
}
if (*regex==*text)
{
return matchhere ( regex +1 ,text +1);
}
else
{
return error_label;
}
}
nt main(int argc,int ** argv)
{
char *text="wo shi chenbing , wo ai beijing tiananmen ";
char *regex=".hi";
printf("%s\n",match ( regex ,text) );
printf("%s\n",match ( "*nb" ,text) );
printf("%s\n",match ( "*ana" ,text) );
}