首页 > 代码库 > 字符串匹配
字符串匹配
?匹配任意一个字符,*匹配任务多个字符(包括0)
#include <stdio.h>#include <string.h>int match(const char *src, const char *pattern){ if (src =http://www.mamicode.com/= NULL || pattern == NULL) { return 0; } const char *tmp_pat = pattern; while (*tmp_pat && *tmp_pat == ‘*‘) { tmp_pat++; } int srcLen = strlen(src); int patternLen = strlen(tmp_pat); int starcount = 0; for (int i = 0; i < patternLen; i++) { if (tmp_pat[i] == ‘*‘) { starcount++; } } if (patternLen - starcount > srcLen) { return 0; } int i = 0; int j = 0; while (i <= srcLen - (patternLen - starcount) && j < patternLen - starcount && tmp_pat[j] != ‘*‘) { if (tmp_pat[j] == ‘?‘ || src[i + j] == tmp_pat[j]) { j++; } else { j = 0; i++; } } if (j == patternLen - starcount) { return 1; } if (tmp_pat[j] == ‘*‘) { i += j; return match(src + i, tmp_pat + j); } return 0;}int main(int argc, char **argv){ char *src = http://www.mamicode.com/"wo shi yi ge zhong guo ren"; src = "shi"; char *pat = "shi"; if (match(src, pat)) { printf("match\n"); } pat = "*sh*?*"; if (match(src, pat)) { printf("match\n"); } getchar(); return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。