2010-02-05 3 views
1

내가 가지고있는이 같은 입력 문자열 :C#의 정규식이 작동하지 너무

\ PARD \ nowidctlpar \ QJ \ B0 \이 계약 \의 scaps0 만든이 날짜에 를 입력 scaps, \ {#의 DATEAGREEMENT 번호 \}에 의해, 그 후속 및/또는 양수인 주소 [제거]에서와 \ {#의 TXTPLAINTIFF 번호 [제거] (\ rdblquote [제거] \의 ldblquote) 사이 \}, (\ ldblquote 원고 \ rdblquote), 개별적으로 ___________________ 및 \ {# TXTPLAINTI FFATTORNEY # \ {#의 TXTATTORNEYFIRM 번호 \}의 \}, (\ ldblquote 원고의 \의 쉬트의 변호사 \의 rdblquote). \ 파

내가 정규식 구문 분석 일부를 수행 할.

내가 사용하고 코드입니다 :

temp = Regex.Replace(temp, @"\\{#.*#\\}", "_____"); 

유일한 문제는 문단로 끝나는 때문에 전체 단락을한다 즉은, 가장 넓은 세트를 일치이다 "# \}"방법이 있습니다 각 그룹과 일치합니까? I.E.,이 단락은 한 번이 아니라 네 번 일치해야합니다.

답변

4

욕심을 느끼지 않으려 고 시도 했습니까?

temp = Regex.Replace(temp, @"\\{#.*?#\\}", "_____"); 
1
temp = Regex.Replace(temp, @"\\{#.*?#\\}", "_____"); 

'?' '*'는 욕심이없는 검색을 수행합니다. 초기 정규식은 욕심이 많은 검색을 수행 했으므로 가장 큰 가능한 일치 항목을 찾습니다.

1

내가 기억 하듯이? 욕심쟁이가 아닌 욕심쟁이로 바뀌므로 다음을 시도하십시오.

temp = Regex.Replace(temp, @"\\{#.*?#\\}", "_____"); 
1

당신은 게으른 평가를 찾고 :

temp = Regex.Replace(temp, @"\\{#.*?#\\}", "_____"); 

이 그것을

을 할 수 있습니다
관련 문제