2010-03-07 2 views
0

저는 처음 stackoverflow (내 첫 번째 게시물) 및 regex입니다. 현재 ctor 주입 필드로 baseclass 속성을 대체하기 위해 간단한 더러운 응용 프로그램을 만들고 있습니다.여러 줄을 .net Regex로 바꾸십시오.

ClassName(WiredObjectRegistry registry) : base(registry) 
{ 

및 교체 : (i가 약 400 파일을 편집해야 COS)

그것은이를 찾아야한다

ClassName(IDependency paramName, ISecondDependency secondParam, ...) 
{ 
    _fieldName = paramName; 
    ... 

그래서 내가 세 이상으로 두 늙은 라인을 교체해야 새로운 라인. 기본적으로

나는 생각했다 :

이 발견 - + ctorParams + 0 개 이상의 공백 + 줄 바꿈 + 0 개 이상의 공백이 + {

로 교체>

클래스 이름을 ->

classN AME + newCtorParams + 줄 바꿈 + { 내 필드 할당

내가 제대로

가 교체 "{"와 공백을 대체하지 않습니다 .NET

className + ctorParam + @"\w*" + "\r|\n" + @"\w*" + @"\{" 

이 정규식을 시도 파일 내용은 다음과 같습니다.

 public CacheManager(ICallManager callManager, ITetraEventManager tetraEventManager, IConferenceManager conferenceManager, IAudioManager audioManager) 
{ 
     _callManager = callManager; 
_tetraEventManager = tetraEventManager; 
_conferenceManager = conferenceManager; 
_audioManager = audioManager; 
     { 

도와주세요 : - |

데이비드

+0

질문을 입력 할 때 코드 블록을 삽입하는 방법을 비롯하여 질문 서식을 지정하는 방법에 대한 정보가 화면에 표시됩니다. –

+1

원래 파일 (교체 전)은 어떻게 생겼습니까? –

+1

우리는 실제 원본 텍스트 (관련 부분, 즉)와 교체 후 어떻게 보이는지 * 볼 필요가 있습니다. 우리에게 부정확 한 결과를 보여주고 어떻게 얻었는지는 우리에게 도움이되지 않습니다. –

답변

0

당신이

className + ctorParam + @"\w*" + "\r|\n" + @"\w*" + @"\{" 

은 다음 몇 가지 오류를 만들고있어 같은 정규식에
className + ctorParams + zero or more whitespaces + newline + zero or more whitespaces + { 

을 번역하는 경우.

먼저 공백 문자 클래스는 \s입니다. \w은 "영숫자 문자"를 의미합니다.

둘째 "\r|\n" 두 다른 부분 전체 정규식 분리 교대 연산자에 | (= "는 ||또는 정규식 전에 어느 정규식 일치")를 야기한다. 귀하의 경우에는 \s이 이미 공백, 탭 및 개행 문자와 일치하므로이 비트가 전혀 필요하지 않습니다. Unix, Mac 또는 DOS 개행과 일치하는 정규식을 원하면 \r?\n?을 사용하십시오.

하지만 댓글에서 보여 주듯이 내가하고 싶은 것을 보여주지 않으면 더 이상 당신을 도울 수 없습니다.