2012-06-27 4 views
-1

이 아마 초보자 질문하십시오 texfile를 구문 분석하는 가장 현명한 방법은 무엇C# 안전 파일 구문 분석/구문 분석 전략

경우 다음과 같습니다

material polygon name 
0 
0 
9 
      -7   4.5   0 
      -7   9.166667   0 
      -2.333333   4.5   0 

나는 9 XYZ에만 관심 값. 그러나, 나는 때때로 정보는 다음과 같이 하나의 줄에 writen 때문에 그들을 필터링하는 안전한 방법을 잘 모릅니다 : 때때로는 공백으로 구분됩니다

material polygon name 0 0 9 -7 4.5 0 -7 9.166667 0 -2.333333 4.5 0 

을, 때로는 탭. 0 0 9은 9 개의 값이 있음을 나타냅니다. 지금까지 필자 만 .Split(' ')

  System.IO.StreamReader reader = new System.IO.StreamReader(_file); 
      string ln = reader.ReadLine(); 

      while (ln != null) 
      { 
       if (ln != null && ln[0] != '#') 
       { 
        string[] lnsplit = ln.Split(' '); 
        double X = lnsplit[bla]; 
        double Y = lnsplit[bla+1]; 
        double Z = lnsplit[bla+2]; 
       } 
       ln = occreader.ReadLine(); 
      } 
      occreader.Close(); 

구문 분석 TXT 파일을 배웠지 만,이 파일이 엄격하게 구조화되어있는 경우에만 작동 물론 않습니다.

+3

프로그래밍 언어를? – user1202136

답변

1

RegexOptions.SingleLine이 활성화 된 정규 표현식을 사용합니다. 뭔가 ^material polygon name (?:\d\s*){3}(?:(-?\d+(?:\.\d+)?)\s*){9}$

것처럼 \s 운영자는 여러 줄을 포함, 당신은 당신이 원하는 아홉 개 값을 꺼내 결과 Match 객체를 사용할 수 있습니다. (Groups[1]Captures 속성에서.

+1

"* 마지막 부분을 9 번 반복하십시오 * "DRY는 정규 표현식에도 적용됩니다'pattern {x}'또는'pattern {x, y}'를 사용하십시오 http://www.mikesdotnetting.com/Article/46/CSharp- Regular-Expressions-Cheat-Sheet –

+0

@sm Touche. 편집 됨 – Arithmomaniac

+0

잘 했어. Upvoted;) –

0

, 부동 소수점 숫자와 일치하는 정규 표현식을 사용하여 예를 들어 this question를 참조하십시오. 을 그럼 그냥 첫 3 경기를 Regex.Match를 호출 건너 뜁니다.