通配符是用来通配的,不同的系统上通配符不一样,
例如:SQL中有“_”通配符(仅替代一个字符) 与“%”通配符(替代一个或多个字符),须与LINK运算符一起使用。
此处仅考虑通配符*和?,*表示0或任意多个字符,?表示单个字符。
int match(char *pat,char *str)
{
switch(*pat){
case ‘\0’ return !*str;
case '*' return match(pat+1,str)||*str&&match(pat,str+1);
case '?' return *str&&match(pat+1,str+1);
default return *pat==*str&&match(pat+1,str=1);
}
}
调用mathch("a*b.c","alklb.c")会返回1;
注意与正则表达式区别:
通配符是用来通配的
正则表达式(regular expression)是对字符串操作的一种逻辑公式,是用来匹配字符串的,是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑,简言之可以看成字符串匹配模式标准即是一种对字符串匹配模式的描述和规定