java require_java正则中的requireEnd和hitEnd
发布日期:2021-06-24 11:23:57 浏览次数:3 分类:技术文章

本文共 1429 字,大约阅读时间需要 4 分钟。

packagetest;importjava.util.regex.Matcher;importjava.util.regex.Pattern;public classmain

{//hitEnd(),结果为true,末尾输入更多数据,是否改变匹配结果 1.true变false 2.false变true 3.匹配文本变化//返回false,匹配结果已经确定,包括为本确定//requireEnd(),只有匹配成功有意义,为true,表示更多输入数据可能会导致失败,false 输入更多,可能改变匹配文本,但不会失败

public static voidmain(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+\b|[>

hitEnd() is true//如果结尾加5,文本变化,加a,匹配失败,所以hitEnd为true

requireEnd() is true//加a,导致失败

正则是\d+\b|[>.567,匹配是否成功:true,匹配结果是1234

hitEnd() is false //1234已经确定了,和结尾无关,false

requireEnd() is false //不会导致失败

正则是\d+\b|[>,匹配是否成功:true,匹配结果是>

hitEnd() is true //加=,匹配文本变化

requireEnd() is false//加=文本变化,但不会失败,所以false

正则是\d+\b|[>.567,匹配是否成功:true,匹配结果是>

hitEnd() is false //>不是末尾,已经确定成功

requireEnd() is false//确定成功

正则是\d+\b|[>=,匹配是否成功:true,匹配结果是>=

hitEnd() is false //?是0-1,不会改变结果

requireEnd() is false//不会失败

正则是\d+\b|[>=.567,匹配是否成功:true,匹配结果是>=

hitEnd() is false //不在结尾

requireEnd() is false //不在结尾

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

转载地址:https://blog.csdn.net/weixin_32473663/article/details/114353086 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:400错误java_java代码转化成c#代码 报400错误
下一篇:java流程语句_Java流程控制语句

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月25日 17时31分48秒