模式匹配小算法
来源:互联网 发布:linux内核编译后在哪 编辑:程序博客网 时间:2024/05/21 06:29
由于项目需要,最近写了一个模式匹配算法,支持%(代表一个或者任意个字符),_(代表一个字符)通配符号,自己在vc6下测试通过.
bool regexMatch(unsigned char* des ,int desLen ,unsigned char* source)
{
int len = 0 ;
unsigned char* tempSou = 0 ;
unsigned char* tempDes = 0 ;
int oldLoc ;// if it does not match , it will go back old location to found match word
if (source == 0 || desLen == 0)
{
return false;
}
while(len < desLen)
{
if(*source == 0 && tempSou != 0) //if the target go to the end , go to the first % to continue to match
{
source = tempSou;
des = tempDes++;
len = oldLoc++;
}
else if (*source == '%')
{
tempDes = des;
oldLoc = len;
while(*source == '%') // if there are
{
source++;
tempSou = source;
if (*source == 0) //if the source is over with * , the source must match the destination string
{
return true;
}
}
}
else if ( *source == *des || *source == '_') //match ,go next
{
source ++ ;
des ++ ;
len ++ ;
if ( *source == 0 && len == desLen) // if match to the end of both
{
return true ;
}
}
else // there are words not match
{
if (tempSou == 0 )
{
return false ;
}
source = tempSou;
len = oldLoc + 1 ;
des = tempDes + 1;
while(len < desLen) // get the location of the next matching
{
if (*source == '_' || *des == *source)
{
tempDes = des;
oldLoc = len;
break;
}
len ++ ;
des ++ ;
}
}
}
if (*source) // if there are left % for example abc%%%%%
{
while(*source)
{
if (*source != '%')
{
return false;
}
source ++ ;
}
return true;
}
return false ;
}
测试:
abc
abc
true
abc
asdfsaf
false
safdasfasfasf
%
true
safdasfasfasf
_____________
true
safdasfasfasf
s%fa%
true
safdasfasfasf
s%fas%_f
true
ccccccc
c%cc%cc%c
true
ccccccc
c_%_%
true
ccccccc
c_c_c_c_%
false
ccccccc
c_c_c_c%%%
true
ccccccc
%%%%%%%%%%%%%%%%%%%%
true
asdfasfafahgdsfjkal;fjda;
a_s_a%;fj%_;
false
asdfasfafahgdsfjkal;fjda;
a_s_a%;fj%;
false
asdfasfafahgdsfjkal;fjda;
a%s_a%;fj%_;
true
- 模式匹配小算法
- 模式匹配小算法
- 模式匹配小应用
- 模式匹配---KMP算法
- 模式匹配 KMP算法
- 模式匹配-KMP算法
- KMP模式匹配算法
- 模式匹配算法
- 短模式匹配算法
- 字符串模式匹配算法
- 字符串模式匹配算法
- KMP模式匹配算法
- 多模式匹配算法
- 字符串模式匹配算法
- KMP模式匹配算法
- 字符模式匹配算法
- 模式匹配kmp算法
- 模式匹配算法kmp
- 生气得很无语
- 【原创翻译】AppFuse 2.0 快速起步【AppFuse文档-4】
- DWDM能否承载宽带IP网
- GIS自主创新十年路(六): 聚沙成塔
- PHP与MySQL开发中页面乱码的产生与解决
- 模式匹配小算法
- GIS自主创新十年路(七):Universal GIS
- use case 简析 3
- Google工作流程
- c语言学习经验
- WINCE_.NET CF 示例集锦
- 第一次开始……
- AJAX(atlas)之阴影控件DropShawdow之进阶篇
- 请问手机业务中的MISC是什么?