正则表达式的匹配
正则表达式匹配
http://www.nowcoder.com/questionTerminal/45327ae22b7b413ea21df13ee7d6429c
public boolean match(char[] str, char[] pattern) { if (str == null || pattern == null) return false; return match(str, 0, pattern, 0); } private boolean match(char[] str, int strIndex, char[] pattern, int patternIndex) { if (str.length == strIndex && pattern.length == patternIndex) return true; if (str.length != strIndex && pattern.length == patternIndex) return false; if (patternIndex+1<pattern.length&&pattern[patternIndex+1]=='*'){ if (str.length != strIndex && (str[strIndex] == pattern[patternIndex]||pattern[patternIndex]=='.')){ return match(str,strIndex,pattern,patternIndex+2)||//匹配0个 match(str,strIndex+1,pattern,patternIndex+2)||//匹配1个 match(str,strIndex+1,pattern,patternIndex);//匹配下一个 } else return match(str,strIndex,pattern,patternIndex+2); } if (str.length != strIndex && (str[strIndex] == pattern[patternIndex]||pattern[patternIndex]=='.')){ return match(str,strIndex+1,pattern,patternIndex+1); } return false; }