正则表达式匹配


模式匹配

public class Solution {
 //(1)调用函数
    public boolean match(char[] str,char[] pattern)
    {

         return new String(str).matches(new String(pattern));
    }

//(2)[正规匹配方式]
public boolean match2(char[] str,char[] pattern) {
    if (str == null || pattern == null) {
        return false;
    }
    int strIndex = 0;
    int patternIndex = 0;
    return matchCore(str,strIndex,pattern,patternIndex);
}

public boolean matchCore(char[] str,int strIndex,char[] pattern,int patternIndex) {
    //有效性检验:str到尾,pattern到尾,匹配成功
    if (strIndex == str.length && patternIndex == pattern.length) {
        return true;
    }
    //pattern先到尾,匹配失败
    if (strIndex != str.length && patternIndex == pattern.length) {
        return false;
    }
    //模式第2个是*,且字符串第1个跟模式第1个匹配,分3种匹配模式;如不匹配,模式后移2位
    if (patternIndex + 1 < pattern.length && pattern[patternIndex + 1] == '*') {
        if ((strIndex != str.length && pattern[patternIndex] == str[strIndex]) || (pattern[patternIndex] == '.' && strIndex != str.length)) {
            return matchCore(str,patternIndex + 2)//模式后移2,视为x*匹配0个字符
                    || matchCore(str,strIndex + 1,patternIndex + 2)//视为模式匹配1个字符
                    || matchCore(str,patternIndex);//*匹配1个,再匹配str中的下一个
        } else {
            return matchCore(str,patternIndex + 2);
        }
    }
    //模式第2个不是*,且字符串第1个跟模式第1个匹配,则都后移1位,否则直接返回false
    if ((strIndex != str.length && pattern[patternIndex] == str[strIndex]) || (pattern[patternIndex] == '.' && strIndex != str.length)) {
        return matchCore(str,patternIndex + 1);
    }
    return false;
    }


}

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...