3
(a|b){2}\1
會有什麼\1
指正則表達式?第一次捕捉,最後一次捕捉,還是什麼?
Regex.IsMatch("aba", @"^(?:(a|b){2}\1)$") == False
Regex.IsMatch("abb", @"^(?:(a|b){2}\1)$") == True
信息我懷疑它的最後捕獲匹配。我在這個假設中是否正確?
(a|b){2}\1
會有什麼\1
指正則表達式?第一次捕捉,最後一次捕捉,還是什麼?
Regex.IsMatch("aba", @"^(?:(a|b){2}\1)$") == False
Regex.IsMatch("abb", @"^(?:(a|b){2}\1)$") == True
信息我懷疑它的最後捕獲匹配。我在這個假設中是否正確?
你猜對了。 Java也是這樣做的。大多數(如果不是全部的話)正則表達式引擎存儲重複組的最後一次捕獲。
查看http://www.regular-expressions.info/brackets.html#repeat的一般描述。
見http://msdn.microsoft.com/en-us/library/aa719621%28v=VS.71%29.aspx進行確認有關的.Net:
「 [...]當一羣使得多個捕獲,反向引用是指最近捕獲」