直接来自this java API:
public boolean requireEnd()
如果更多输入可以将正匹配更改为a,则返回true 消极的。
如果此方法返回true,并且找到匹配项,则输入更多 可能导致比赛失败。如果此方法返回false和a 匹配被找到,然后更多的输入可能会改变匹配但匹配 不会丢失。如果未找到匹配项,则requireEnd没有 含义。
返回: 如果更多输入可以将正匹配更改为负匹配,则为true。
我无法在线找到任何具体的例子。
有人可以告诉我一个使用它的例子吗? 提前谢谢。
答案 0 :(得分:1)
requireEnd()
是一种匹配方法,主要用于构建扫描仪
此方法仅在成功匹配后才有意义,表示正则表达式引擎是否依赖于输入结尾的位置来实现成功。如果requireEnd
返回true
,则其他输入可能导致尝试失败。如果它返回false
,则其他输入可能会更改成功的详细信息,但无法将成功转为失败。
它的常见应用是,如果requireEnd
为真,则在决定输入之前应该接受更多输入。
例:
1. 正则表达式:\d+\b | [><]=?
文字:'1234'匹配:' 1234 < /强>'
requireEnd()
:是的
2. 正则表达式:\d+\b | [><]=?
文字:'&gt; ='匹配:' &gt; = < / EM> 强>'
requireEnd()
:错误
因此,一般来说,此方法的return
值为true
意味着,在做出明确决定之前需要更多输入。
例如,如果当前输入(例如,用户在交互式调试器中键入的字符)是单个字符'&lt;',则最好等待查看下一个字符是否为'=',以便您可以正确决定下一个令牌应该是LESS_THAN
还是LESS_THAN_OR_EQUAL
。
答案 1 :(得分:1)
让我们举一个简单的例子:
public static void main(final String... args)
{
final Pattern p = Pattern.compile("cat$");
final Matcher m = p.matcher("I have a cat");
m.find(); // finds a match
System.out.println(m.requireEnd()); // prints true
}
正则表达式最后有一个锚点;文件说,如果给出更多的输入,它“[...]可能导致比赛失败”。确实。考虑这个输入:
"I have a catflap"
正则表达式在这里不再匹配:匹配丢失。
如果现在我们将"cat$"
替换为"cat"
,则.requireEnd()
会返回false
:通过上面的输入,cat
仍会与正则表达式引擎匹配