2012-05-23 2 views
2

특정 서식 지정 레이아웃을 따르는 텍스트 줄에서 일부 정보를 구문 분석해야합니다. 이 텍스트 파일이 어떻게 보일지의 예는 다음과 같습니다이 시나리오의 정규 표현식 생성에 도움이 필요합니다

: 하루의 끝에서

A. This is option a    C. This is option c 
B. This is option b    D. This is option d 

, 내가 원하는 모두는 위의 두 줄을 구문 분석 한 후, 그때 내 C# 코드에있을 것입니다

string OptionA = "This is option a"; 
string OptionB = "This is option b"; 
string OptionC = "This is option c"; 
string OptionD = "This is option d"; 

A.와 C. (또는 B. 및 D.) 사이의 공백은 탭 (\ t) 또는 임의의 공백 수입니다.

"A.\tThis is option a\tC. This is option c" 

아니면 아마이 줄 "\의 t에 따라 도움 분할을 필요로이

"A.\tThis is option a  C. This is option c" 

처럼 보일 수 있습니다 : 코드를 단계별로 및 라인 읽을 때,이는 모습입니다 "또는 앞에"C "라는 공백이 있습니다. 위의 예의 경우와 같습니다.

모든 입력 사항을 매우 높이 평가할 것입니다.

답변

1

다음 정규식을해야 각 라인

  • 그룹 [0] 전체 라인
  • 입니다
    @"^([A-Z])[.](.+[^\s])\s+([A-Z])[.](.+)$" 
    

  • 그룹 [1]은 첫 번째 문자입니다 (예 : A)
  • 그룹 [2]가 첫 번째 옵션입니다 (예 : 이다 옵션 A)
  • 그룹 [3] 번째 문자 (예 : C)
  • 그룹 [4] 두 번째 옵션은은이다 (예를 들어,이 옵션 C)
+0

답장을 보내 주셔서 감사합니다. 나는 그것을 시도하고 결과를 알려 드릴 것입니다. – csoon1

+0

위의 정규식은 제안대로 작동합니다. 각 정보를 구문 분석하기 위해 나는 방금 정규식 아래에서 설명한 노트를 따라 갔다. 고마워 리처드! – csoon1

0

이 하나에게 소용돌이 보내기,

[A-Z]\..*((\s){2,}|\t) 
0
[a-zA-Z][.]\s[\w\s]*\s 

하는 당신에게 줄 것입니다 결과는 A. This is option a과 같아서 옵션 문자와 결과 텍스트를 파싱 할 수 있습니다. 줄 바꿈 공백을 줄에서 제거 할 수도 있습니다. .Trim()

관련 문제