您的位置:首页 > 其它

简单正则表达式匹配字符串

2013-09-15 10:02 176 查看
字符     含义

c    匹配任意的字母c

.    (句点) 匹配任意的单个字符

^     匹配输入字符串的开头

$     匹配输入字符串的结尾

*     匹配前一个字符的零个或者多个出现

例如:程序名 rock heisarockboy  匹配成功返回1;

           程序名 rock heisaboy        匹配失败返回0;

                  程序名 ^.he.*boy$ sheisarockboy    匹配成功返回1

      在文件中查找含有指定表达式可以将文件中字符串划分,然后对每个字符串调用该函数,如果匹配成功可以返回该字符串,最后将结果一起呈现。

#include <stdio.h>

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]=='$'&®exp[1]=='\0')
{
return *text=='\0';
}
if (*text!='\0'&&(regexp[0]=='.'||regexp[0]==*text))
{
return matchhere(regexp+1,text+1);
}
return 0;
}

int matchstar(int c,char *regexp,char *text)
{
do
{
if (matchhere(regexp,text))
{
return 1;
}
} while (*text!='\0'&&(*text++==c||c=='.'));
}

int main(int argc,char *argv[])
{
if (argc!=3)
{
printf("error input!");
return 0;
}
else{
int i=match(argv[1],argv[2]);
printf("%d",i);
return i;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: