gpt4 book ai didi

java - 正则表达式: Backtracking in Possessive Quantifier

转载 作者:行者123 更新时间:2023-12-02 03:02:46 24 4
gpt4 key购买 nike

我正在审查一个测试,并注意到所有格量词实际上在 str.split() 中起作用。所以我写了以下代码:

String str = "aaaaab";

if(str.matches("a*+b"))
System.out.println("I backtrack");
else
System.out.println("Nope.");

运行时,会打印出I backtrack。这就是为什么这令人困惑,我被告知所有格量词永远不会回溯,那么为什么 a*+ 会放弃字符串中的 b 呢?

我想要的是所有格量词何时回溯的更详细解释。

最佳答案

您的示例中没有回溯。

您说的是“任意数量的a字符”。因此,引擎将收集这 5 个 a 字符,然后停止;然后找到b

这就是全部内容。

回溯意味着引擎在收集太多的输入字符串后必须“回溯”;参见here举个例子。

除此之外:当模式与输入匹配时,您的 if 条件将返回 true。您认为这意味着“这是回溯”的结论是不正确的:

比赛就是比赛;无论引擎是否必须回溯才能匹配(或不匹配)。换句话说:你的小测试不会告诉你任何事情(它只告诉你输入是否与给定的模式匹配;句点)。

关于java - 正则表达式: Backtracking in Possessive Quantifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42207934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com