您的位置:首页 > 其它

正则表达式匹配

2015-09-18 20:29 357 查看


题目描述

请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配

思路:

递归方法判断:1、当前字符都是‘\0’,返回true;2、当前字符相等,或有点对应非‘\0’,则进入判断加一相等返回true,后一个正则字符为‘*’,则当前正则字符与后一个匹配字符相等,返回true;3、增则字符后一个字符为‘*’,则当前字符与正则字符加二相等返回true;

bool match(char* str, char* pattern)
{
if(str[0] == '\0' && pattern[0] == '\0')
return true;
if((pattern[0] == '.' && str[0] != '\0') || (str[0] == pattern[0])){
if(match(str+1,pattern+1)) return true;
if(pattern[1] == '*' && match(str+1,pattern)) return true;
}
if(pattern[1] == '*'){
if(match(str,pattern+2)) return true;
}
return false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: