2013-07-22 6 views
0

누구나 일치하는 다음 패턴을 확인하는 정규식 패턴으로 나를 도울 수 있습니까? 리턴 문자로 구분 된 텍스트를 일치 시키려고합니다. 각 줄은 그 안에 3 자리수 (\ d {3})와 최대 100 줄만 있어야합니다.3 자리 숫자와 일치하는 여러 줄의 정규식 패턴

이 괜찮 :이 확인되지

123 
456 
789 

:

123 

456 
:이 확인되지

123 
123789 
456 

(끝 중간에와에 빈 줄을 유의)

나는 어떤 제안이나 도움을 주시면 감사하겠습니다. 감사.

답변

3

전체 파일은 다음과 같아야합니다. 파일이 줄 바꿈 (당신의 설명에서 확인되지 않음)로 끝나지 않을 수도 있습니다 경우

\A  # Start of string 
(?: # Match the following (non-capturing) group: 
\d{3} # - three digits 
\r?\n # - one CRLF or LF (linebreak) 
)*  # any number of times (0 or more) 
\z  # until the very end of the string 

, 당신이 처음에 만들어

new Regex(@"\A(?:\d{3}\r?$\n?)*\z", RegexOptions.Multiline) 

사용할 수 있습니다 그리고

new Regex(@"\A(?:\d{3}\r?\n)*\z") 

설명하려고 newlines 옵션 (\r?\n?)이지만 3 행 단위의 비트가 끝날 때마다 행 끝 부분에을 삽입하여 줄 바꿈을 보장합니다. CR과 LF 사이의$은 .NET이 일치해야한다고 (이상하게) 생각합니다.

+0

빠른 답장을 보내 주셔서 감사합니다. 이것은 멋지게 작동합니다! – Niner

1

이렇게하는 한 가지 방법은 처음 정규식 (\ d {3})에 대해 각 행을 확인하는 것입니다. 또 다른 방법은 정규식에 \ r \ n을 추가하고 반복, 당신은 단지 시작을 추가하고 전체 파일을 일치시킬 보여 종료해야하는 경우 (3)를 필터링하기 위해

"(\d{3}\r?\n)*" 

수 있도록하는 것입니다; (^ 시작 부분을 지정하고 $는 끝 부분을 지정 함)

"^(\d{3}\r?\n)*$" 
관련 문제