• java正则中的requireEnd和hitEnd


      

    package test;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class main
    {
    
        // hitEnd(),结果为true,末尾输入更多数据,是否改变匹配结果 1.true变false 2.false变true 3.匹配文本变化
        // 返回false,匹配结果已经确定,包括为本确定
        // requireEnd(),只有匹配成功有意义,为true,表示更多输入数据可能会导致失败,false 输入更多,可能改变匹配文本,但不会失败
        public static void main(String[] args)
        {
            String[] matcherStrs =
            { "1234", "1234.>.567", ">", ">.567", ">=", ">=.567", "oops" };
            Pattern pattern = Pattern.compile("\d+\b|[><]=?");
            Matcher m = null;
            for (String matcherStr : matcherStrs)
            {
                m = pattern.matcher(matcherStr);
                boolean find_result = true;
                if (find_result = m.find())
                {
                    System.out.println(String.format("正则是%s,匹配文本是%s,匹配是否成功:%s,匹配结果是%s", m.pattern(), matcherStr,
                            find_result, find_result ? m.group() : "匹配失败"));
                    System.out.println("hitEnd() is " + m.hitEnd());
                    System.out.println("requireEnd() is " + m.requireEnd());
    
                }
            }
    
        }
    }

    结果分析:

    正则是d+|[><]=?,匹配文本是1234,匹配是否成功:true,匹配结果是1234
    hitEnd() is true//如果结尾加5,文本变化,加a,匹配失败,所以hitEnd为true
    requireEnd() is true//加a,导致失败
    正则是d+|[><]=?,匹配文本是1234.>.567,匹配是否成功:true,匹配结果是1234
    hitEnd() is false //1234已经确定了,和结尾无关,false
    requireEnd() is false //不会导致失败
    正则是d+|[><]=?,匹配文本是>,匹配是否成功:true,匹配结果是>
    hitEnd() is true //加=,匹配文本变化
    requireEnd() is false//加=文本变化,但不会失败,所以false
    正则是d+|[><]=?,匹配文本是>.567,匹配是否成功:true,匹配结果是>
    hitEnd() is false //>不是末尾,已经确定成功
    requireEnd() is false//确定成功
    正则是d+|[><]=?,匹配文本是>=,匹配是否成功:true,匹配结果是>=
    hitEnd() is false //?是0-1,不会改变结果
    requireEnd() is false//不会失败
    正则是d+|[><]=?,匹配文本是>=.567,匹配是否成功:true,匹配结果是>=
    hitEnd() is false //不在结尾
    requireEnd() is false //不在结尾

    首先看匹配结果是否在结尾

  • 相关阅读:
    js eval函数写一个简单的计算器
    nginx方向代理
    nodejs环境的搭建(linux环境centos6.5)
    vue渲染数据后与owlCarousel轮播插件冲突,失效
    vue 配合vue-resource调用接口,获取数据
    高效生成随机数并去重
    nginx 调整配置文件支持TP框架
    noVNC 搭建
    python基础学习-socket1 初识socket
    python基础学习-面向对象-类的使用
  • 原文地址:https://www.cnblogs.com/ptqueen/p/7039522.html
Copyright © 2020-2023  润新知