2012-06-20 3 views
0

다음 몇개의 정규 표현을 사용하고 있습니다.정규 표현 연산자

Match m = Regex.Match(line, partPattern); 
if (m.Groups["Key"].Length > 0 && m.Groups["Value"].Length > 0) 
{ 
    //add to Dictionary 
} 

그것은 경우를 제외하고 모든 경우에 잘 작동 :

static string partPattern = @"^(?<Key>\w*)\s+(?<Value>\w*)$"; 

이 내가 사용하는 코드는 다음과 같습니다이 내 정규식

field1 xyz 
field2 yiuyi 
field3 12.34.12 

: 여기

은 예입니다 데이트가 있습니다. 빈 칸, 따옴표 또는 다른 것과 상관없이 값을 가져 오도록 설정하려고했습니다.

+0

예를 들어, 고정 폭 구현은 Regex를 사용하는 것보다 더 간단하고 (더 빨라질 수 있습니다. 하지만 아마도 모든 것을 공유 할 수는 없습니다. – mgnoonan

답변

1

당신이 사용하는 단어 [a-zA-Z0-9_] 포함 문자 (\w),하지만 당신은 아마 적어도 Value를 들어, 모든 문자를 일치합니다.

^(?<Key>\w+)\s+(?<Value>.+)$ 
+0

코드를 업데이트했습니다. 기본적으로 사전에 행의 값을 추가하고 있습니다. –

+0

@tammy : 글쎄요, 코드가 무슨 의문을 품고 있는지 모르겠지만, regex는'if' 문을 요구하지 않습니다. –

+0

괜찮습니다. 정규식 솔루션이 잘 작동합니다. 감사!!! –