2011-02-15 4 views
0

저는 큰 파일 (약 20k 줄)의 코드가 있습니다.텍스트 파일에서 코드를 제거하는 정규식

내 파일에서 코드를 제거하는 프로그램을 만들려고합니다. 코드를 찾을 수

내 정규식은 다음과 같습니다

Regex regex = new Regex("([A-G](#|b)*([a-z]|[0-9])*)(/[A-G](#|b)*([a-z]|[0-9])*)*"); 

문제는 논리적 인 문제입니다.

내 텍스트 줄에 정규식을 사용하는 코드 만 포함되어 있는지 어떻게 감지합니까?

UPDATE : 파일의 샘플 :

C          G 
Justo é o Senhor em seus santos caminhos, 
A -    G/B C  D4 D G 
Benigno em todas as suas obras. (bis) 
G   C   C7 
Perto está o Senhor, (perto está dos que o invocam,) 
    F C D - G C    F  G   C F 
De todos que o invocam (De todos que o invocam) 
C/G G C      F C 
Em verdade. Aleluia! Aleluia! 
+0

파일의 예를 제공해 줄 수 있습니까? 그냥 몇 줄? – Craigt

+0

질문을 업데이트하겠습니다! – renanlf

+0

왜 소문자입니까? 구두점없이 줄을 씁니다. – xanatos

답변

1

: 이것은 G, #, b 통해서만 문자 A를 포함하는 모든 행을 제거합니다

resultString = Regex.Replace(subjectString, @"^[A-G\d#b\s/-]*$(?:\r\n)?", "", RegexOptions.Multiline); 

, /, - 또는 공백

2

당신은 ^...$에 포장하여 정규식을 고정 할 수 있습니다.
이렇게하면 전체 행과 일치하게됩니다.

할 수 있습니다 다음 루프 같은 File.ReadLines 통해 :이 방법에 대해

var nonChords = File.ReadLines(path) 
        .Where(s => !regex.IsMatch(s)); 
+0

그건 도움이되지 않습니다. – renanlf

+0

줄이 있습니다 : CFCFCGC, ^와 $를 넣으면 '코드 줄'을 찾을 수 없습니다 – renanlf

+0

@Renanlf : 정규식을 여러 줄과 일치하도록 수정할 수 있습니다 :'@ "((...) + \ s *) + $ "'. – SLaks

관련 문제