2011-02-11 5 views
4

코드 반환 한 다음C# 정규식 그룹 배수 캡처

Regex.Match("aaa", "(a)").Groups[1].Captures.Count 

하지만 3를 받으실 : 나는 세 가지 캡처를 참조하십시오.

+0

여러 그룹을 캡쳐하려면 'Regex.Matches'를 사용하면 모든 일치 항목이있는 MatchCollection을 반환합니다. –

답변

9

당신은 경기 수를 얻을 중 하나가 필요합니다. 위의 첫 번째 예제에서는 해당 정규식을 세 번 일치시킬 수 있습니다. 정규식은 한 번에 여러 a의 일치 및 캡처 두 번째 예에서는

그룹으로 각각 1

선택은 당신이 그들 사이의 다음과 같은 차이점 고려해야 만들려면 :

Regex.Matches("aaba", "(a)").Count // this is 3 
Regex.Match("aaba", "(a)+").Groups[1].Captures.Count // this is 2 

두 번째를 두 개의 첫 번째 시퀀스 인 a과 일치하기 때문에 캡처가 두 번 발생하지만 b을 찾으면 일치가 중지됩니다. + 한정 기호는 깨지지 않은 시퀀스와 만 일치합니다.

2

Regex.Matches method을 대신 사용 하시겠습니까?

Regex.Matches("aaa", "(a)").Count 

또는 정규식에 한정 기호를 추가합니다 :

Regex.Match("aaa", "(a)+").Groups[1].Captures.Count 

정규식 (a) 일치하는 단 하나의 a