澄清有关requireEnd匹配器的方法
直接从this的Java API:澄清有关requireEnd匹配器的方法
公共布尔requireEnd()
返回true,如果更多的输入可以改变一个积极的比赛拖入 负值。
如果该方法返回true,并且找到匹配,那么更多的输入 可能导致匹配丢失。如果此方法返回false且发现匹配,则更多输入可能会更改匹配,但匹配 不会丢失。如果找不到匹配,那么requireEnd就没有 的含义。
返回: 真当且仅当更多的输入可以改变一个正匹配成负值。
我一直没能找到上线的任何具体的例子。
有人能告诉我它的使用的例子吗? 在此先感谢。
让我们看看这个简单的例子:
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
仍然会由正则表达式引擎匹配。
requireEnd()
,是其主要用于建筑扫描器一个匹配方法。
该方法仅在成功匹配之后有意义,指示发动机是否依靠输入末尾的位置来实现该成功。如果requireEnd
返回true
,额外的输入可能导致尝试失败。如果它返回false
,则额外的输入可能会改变成功的细节,但不能将成功转化为失败。
其常见的应用是,如果requireEnd
是真的,你应该在提交的关于输入决定之前,接受更多的投入。
实施例:
1. 正则表达式:\d+\b | [><]=?
文本: '1234' 匹配度: '' requireEnd()
:真
2. 正则表达式:\d+\b | [><]=?
文本: ''> ='符合条件:'> ='requireEnd()
:假
所以在一般情况下,从该方法的一个true
return
值意味着,明确的决定可以由之前更多的输入是必需的。例如,如果当前输入(例如用户在交互式调试器中键入的字符)是单个字符“<”,最好等待下一个字符是否为'=',以便您可以正确决定下一个令牌应该是LESS_THAN
还是LESS_THAN_OR_EQUAL
。
你可能已经提到你从哪里得到这些... http://www.tzlink.com/tool/Mastering_Regular_Expressions_3rd/0596528124/regex3-CHP-8-SECT-4.html – fge
所以基本上它只是检查是否有在模式的末尾是$? – Rollerball
不仅是'$';导致匹配在最后被限制的锚的任何组合。例如,单词锚或前瞻。 – fge