代码之美:正则表达式

字符含义

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]=='$'&&regexp[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;

}

相关推荐