數量詞和空白比對

數量詞 *、+、{n,m} (和它的「惰性」對應詞) 當已比對最小數量 n 後,不會在空白比對後重複。這個規則 (Rule) 防止數量詞進入空白比對的無限迴圈,當 m 為無限時 (即使 m 不是無限,規則還是會套用)。

例如,(a?)* 會比對字串 "aaa",並擷取 (a)(a)(a)() 模式中的子字串。請注意,並沒有擷取到第五個空的字串,因為第四次擷取時就會使數量詞停止重複。

同樣地,(a\1|(?(1)\1)){0,2} 會比對空白字串而非 "a",因為不會嘗試展開 (Expansion) ()(a){0,2} 數量詞在最後的反覆運算中僅允許空白比對。相反地,因為會實際嘗試 ()(a),所以 (a\1|(?(1)\1)){2} 會實際比對 "a"。而反覆運算的最小數值 2 會強制引擎在空白比對後重複。

請參閱

其他資源

.NET Framework 規則運算式