[英]Regular Expression: Backtracking in Possessive Quantifier
我正在查看測試,發現所有格str.split()
實際上在str.split()
中str.split()
。 所以我寫了下面的代碼:
String str = "aaaaab";
if(str.matches("a*+b"))
System.out.println("I backtrack");
else
System.out.println("Nope.");
運行時,將打印出I backtrack
。 這就是為什么這令人困惑,有人告訴我所有格量詞從不回溯,所以為什么a*+
放棄String中的b
?
我想要的是對所有格限定詞何時回溯的更詳細的解釋。
您的示例中沒有回溯。
你說的“任意數量的a
角色”。 因此,引擎將收集這5 a
字符,然后停止; 然后找到b
。
這就是全部。
回溯意味着引擎必須在收集到太多輸入字符串之后進行“回溯”。 看到這里的一個例子。
除此之外:當模式與輸入匹配時,您的if條件返回true 。 您認為這意味着“正在回溯”的結論不正確:
火柴就是火柴; 無論引擎是否必須回溯以匹配(或不匹配)。 換句話說:您的小測試不會告訴您任何信息(它只會告訴您輸入是否匹配給定的模式;句號)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.