簡體   English   中英

正則表達式:所有格量詞中的回溯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM