代码之美:正则表达式
字符含义
c匹配任意的字母c
.匹配任意的单个字符
^匹配输入字符串的开头
$匹配输入字符串的结尾
*匹配前一个字符的零个或者多个出现
/*match:searchforregexpanywhereintext*/
intmatch(char*regexp,char*text)
{
if(regexp[0]=='^')
returnmatchhere(regexp+1,text);
do{/*mustlookevenifstringisempty*/
if(matchhere(regexp,text))
return1;
}while(*text++!='\0');
return0;
}
/*matchhere:searchforregexpatbeginningoftext*/
intmatchhere(char*regexp,char*text)
{
if(regexp[0]=='\0')
return1;
if(regexp[1]=='*')
returnmatchstar(regexp[0],regexp+2,text);
if(regexp[0]=='$'&®exp[1]=='\0')
return*text=='\0';
if(*text!='\0'&&(regexp[0]=='.'||regexp[0]==*text))
returnmatchhere(regexp+1,text+1);
return0;
}
/*matchstar:searchforc*regexpatbeginningoftext*/
intmatchstar(intc,char*regexp,char*text)
{
do{/*a*matcheszeroormoreinstances*/
if(matchhere(regexp,text))
return1;
}while(*text!='\0'&&(*text++==c||c=='.'));
return0;
}