正則表達式匹配
正則表達式匹配
匹配包含
模式串* .
的正則表達式:"."
表示任意一個字元,"*"
表示它前面的字元可以出現任意次。
思路:
1.當模式串中的第二個字元不是"*"
的時候,
如果字元串中的第一個字元和模式中的第一個字元匹配,那麼,
字元串和模式串都向右移動一位。然後匹配剩餘的字元串和模式。 如果字元串的第一個字元和模式中的第一個字元不匹配,返回失敗。 2.當模式中的第二個字元是"*"
的時候,
- 首字元字元串有0個,模式有,則字元串不變,模式+2
- 首字元字元串有1個,模式有,則字元串+1,模式+2 - 首字元字元串有2個以及2個以上,模式有2,則字元串+1,模式不變參考代碼:
#include <stdio.h>int core(char* str,char* pattern){ if(*str == && *pattern == ) return 1; if(*str != && *pattern == ) return 0; if(*(pattern + 1) == *) { if(*str == *pattern || (*pattern == . && *str != )) return core(str + 1,pattern + 2)//1個 || core(str + 1,pattern)//2個以及2個以上 || core(str,pattern + 2);//0個 else return core(str,pattern + 2);//0個 } if(*str == *pattern || (*pattern == . && *str != )) return core(str + 1,pattern + 1);// !* return 0;}int match(char* str,char* pattern){ if(!str || !pattern) return 0; return core(str,pattern);}int main(){ char* str = "abcdef"; char* pattern = "i*ab.d*e*f"; int res = match(str,pattern); printf("%d
",res); return 0;}
推薦閱讀: