本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!