빈 일치 항목 다음의 일치 항목

업데이트: 2007년 11월

NextMatch를 호출하거나 Regex.Matches에서 반환한 컬렉션을 사용하여 문자열 내에 일치 검사를 반복하는 경우 정규식 엔진은 빈 일치 항목을 특별하게 취급합니다.

일반적으로 NextMatch는 이전 일치 검사가 끝난 위치에서 다음 일치 검사를 시작합니다. 그러나 빈 일치 항목이 나온 경우에는 NextMatch는 다음 일치 항목을 검사하기 전에 문자 하나만큼 이동합니다. 이 규칙을 사용함으로써 일치 검사 엔진은 문자열 전체를 검사할 수 있습니다. 만약 이 규칙이 없어 문자 하나를 이동하지 않으면 다음 검사는 이전 검사가 끝난 자리(빈 문자열)에서 시작하여 계속하여 동일한 빈 문자열을 찾게 됩니다.

예를 들어, "abaabb" 문자열에 대한 "a*" 정규식은 다음 일치 항목을 반환합니다.

"a", "", "aa", "", "", ""

이 결과를 다르게 표시하면 다음과 같습니다.

(a)()b(aa)()b()b()

첫 번째 검사에서 첫 번째 a를 찾은 다음 첫 번째 검사가 끝난 자리(첫 번째 b 전)에서 두 번째 검사를 시작하여 a 문자를 찾지 못하고 빈 문자열을 반환합니다.

두 번째 검사에서 빈 문자열을 반환했으므로 세 번째 검사는 두 번째 검사가 끝난 자리에서 시작하지 않고 그 다음 문자(첫 번째 b 다음)에서 시작합니다. 이 세 번째 검사에서 a 두 개를 찾아 "aa"를 반환합니다.

네 번째 검사는 세 번째 검사가 끝난 동일한 자리(두 번째 b 전)에서 시작하여 빈 문자열을 반환합니다. 다섯 번째 검사는 마지막 b 전에 시작하여 또 다시 빈 문자열을 반환하고 여섯 번째 검사는 마지막 b 다음에 시작하여 역시 빈 문자열을 반환합니다.

참고 항목

기타 리소스

.NET Framework 정규식