模式匹配小演算法

2021-04-13 14:11:41 字數 1301 閱讀 4171

由於專案需要,最近寫了乙個模式匹配演算法,支援%(代表乙個或者任意個字元),_(代表乙個字元)萬用字元號,自己在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...