수량자 및 빈 일치 항목
업데이트: 2007년 11월
수량자 *, +, {n,m}(그리고 이에 상응하는 "lazy" 수량자)는 최소 수 n이 일치하면 빈 일치 항목 이후에는 반복하지 않습니다. 이렇게 함으로써 m이 무한대인 경우에 빈 일치 항목에 대해 무한 루프에 들어가는 것을 방지할 수 있습니다. 이 규칙은 m이 무한대가 아닌 경우에도 적용됩니다.
예를 들어, (a?)*는 "aaa" 문자열을 검색하고 (a)(a)(a)(). 패턴에서 하위 문자열을 캡처합니다. 네 번째 빈 캡처로 인해 수량자가 더 이상 반복되지 않으므로 다섯 번째 빈 캡처는 없습니다.
마찬가지로, (a\1|(?(1)\1)){0,2}는 ()(a) 확장을 시도하지 않기 때문에 "a"가 아니라 빈 문자열을 검색합니다. {0,2} 수량자를 사용하면 마지막 반복에서 빈 일치 항목만 허용합니다. 이와 반대로 (a\1|(?(1)\1)){2}는 ()(a)를 시도하기 때문에 실제로 "a"를 검색합니다. 최소 반복 횟수 2는 빈 일치 항목 이후 엔진이 반복되도록 합니다.