正则表达式匹配

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

public class Solution {
    /*
    * str:待匹配字符串
    * pattern:正则表达式字符串
    */
    public boolean match(char[] str, char[] pattern)
    {
        int idx1=0,idx2=0;
        return match(str,idx1,pattern,idx2);
    }

    private boolean match(char[] str, int idx1, char[] pattern, int idx2)
    {
        //匹配字符串和正则字符串都匹配完则成功匹配
        if(idx1==str.length && idx2==pattern.length)
            return true;
        //如果正则表达式完了,但匹配表达式没完说明正则表达式不能完全匹配
        //可能还有一种情况就是匹配表达式完了,正则没晚,这里没有考虑是因为可能还含有.*的后缀,
        //如果不是可以省略的后缀则会在34行返回false
        if(idx1!=str.length && idx2==pattern.length)
            return false;
        if(idx2<pattern.length-1 && pattern[idx2+1]=='*'){
            if((idx1<str.length )&& (pattern[idx2]=='.' || pattern[idx2]==str[idx1]))
            {
                return match(str,idx1,pattern,idx2+2) ||
                        match(str,idx1+1,pattern,idx2) ||
                        match(str,idx1+1,pattern,idx2+2);
            }else{
                return match(str,idx1,pattern,idx2+2);
            }
        }else if((idx1<str.length) && (pattern[idx2]=='.' || pattern[idx2]==str[idx1])){
            return match(str,idx1+1,pattern,idx2+1);
        }
        return false;
    }
}