由於專案需要,最近寫了乙個模式匹配演算法,支援%(代表乙個或者任意個字元),_(代表乙個字元)萬用字元號,自己在vc6下測試通過.
bool regexmatch(unsigned char* des ,int deslen ,unsigned char* source)
while(len < deslen)
else if (*source == '%')}}
else if ( *source == *des || *source == '_') //match ,go next
}else // there are words not match
source = tempsou;
len = oldloc + 1 ;
des = tempdes + 1;
while(len < deslen) // get the location of the next matching
len ++ ;
des ++ ;}}
}if (*source) // if there are left % for example abc%%%%%
source ++ ;
}return true;
}return false ;}
測試:abc
abctrue
abcasdfsaf
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
模式匹配演算法
brute force演算法 kmp演算法 kmp演算法的改進 模式匹配 子串的定位操作被叫做串的模式匹配。串相等 串長度相等且各個對應位置的字元都相等。當兩個串不相等時,判斷兩個串大小的方法 給定兩個串 s1 a1a2a3a4 an 和s2 b1b2b3b4 bm 當滿足以下條件之一時,s1n存在...
演算法 模式匹配
你有兩個字串,即pattern和value。pattern字串由字母 a 和 b 組成,用於描述字串中的模式。例如,字串 catcatgocatgo 匹配模式 aabab 其中 cat 是 a go 是 b 該字串也匹配像 a ab 和 b 這樣的模式。但需注意 a 和 b 不能同時表示相同的字串。...
KMP模式匹配演算法以及普通模式匹配演算法
if return value 1 the indexsubstr is not exist else the indexsubstr is exist.int indexsubstr char substr,char str,int pos 0 printf lensubstr d n lensu...