2011-08-08 9 views
1

나는 파일에서 그런 데이터를 가지고있다.쉽지만 어려운 Regex

Start 
Status:good<> 
Status:bad<> 
Status:dfsf<> 
Status:gosdfsfod<> 
Status:dogEatsCat<> 
Some randomdata 
End 

<>은 그냥 마지막 상태를 확인하려면 상태 정보 의 끝된다. 이 하나의 "dogEatsCat".

이 정규식이 모든 상태를 반환합니다.

Status:(.+?)<> 

하지만 마지막으로 가져 가고 싶습니다.

.*Status:(.+?)<> 

이 (당신은 그 . 경기 또한 한 줄 모드 줄 바꿈에 swith를해야 할 수도 있습니다.)

은 다른 방법은 마우스 오른쪽 단추로 사용할 수 있습니다

답변

1

편집

양자 택일로, 당신은 모든 경기를 잡아 촬영 마지막 경기를 반환 할 수 있습니다. 이 like the following을 수행 할 수 있습니다

아직
Regex lastRegex = new Regex(@".*Status:(.+?)<>"); 
MatchCollection allMatches = lastRegex.Matches(sample); 
if (allMatches.Count > 0) 
{ 
    Console.WriteLine(allMatches[allMatches.Count-1].Groups[1].Value); 
} 
3

는 그런 다음 정규식 전에 욕심 캡처를 사용 정규식 일치를위한 왼쪽 모드.

두 옵션에 대한 작업 예제는 here입니다.

+0

만에 [좋은] (http://www.ideone.com/XH0cJ). –

+0

@Brad Christie는 한 줄을 잊지 않고 전체 일치가 아닌 첫 번째 그룹 만 사용할 수 있습니다 (예 :'lastMatch.Groups [1] .Value'). – Howard

+0

아직 좋지 않습니다. http : // www .ideone.com/NKCC7 –

2

당신은 정규식을 사용할 수 있지만 마지막 매치에만주의하십시오.