[regex] Visual Studio의 여러 줄 정규식

Visual Studio에서 여러 줄에 걸쳐 정규식 바꾸기를 수행하도록하는 방법이 있습니까 (선 경계를 일치 시키도록 함)? 이를 위해 사용할 수있는 편집기가 많이 있다는 것을 알고 있지만이 기능이 Visual Studio에서 제외 된 것이 이상해 보입니다. 내가 뭔가를 놓치고 있습니까?



답변

파일 대화 상자에서 대체 사용 CtrlShiftH와 한 줄 옵션 (?s):

(?s)start.*end

발견

start
two
three
end

단일 행은 각 파일이 단일 행으로 처리되고 점 .은 개행 문자와 일치 함을 의미합니다 \n. 단점 : 모두 찾기 를 사용 하여 모두 교체하거나 손으로 교체 해야합니다 . 다음 찾기가 작동하지 않습니다.

비 모달 대화 상자의 경우 CtrlH다음 찾기를 사용 (.*\n)*하여 원하는 수의 행을 일치 시킵니다 .

start(.*\n)*.*end

어느 쪽이든 삽입하여 결과를 여러 줄로 바꿀 수 있습니다 \n.


답변

Visual Studio 2013 에서는 정규식이 변경되었습니다 . https://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.120).aspx

두 줄에 걸쳐 표현식을 일치 시키려면 이제 코드는 다음과 같습니다.

StartOfExpression.*\r?\n.*EndOfExpression


답변

이것은 현재 Visual Studio 2012에서 작동합니다.

fooPatternToStart.*(.*\n)+?.*barPatternToEnd

(.*\n)+?탐욕스럽지 않은 여러 줄 에서 부품이 어떻게 일치 하는지 확인하십시오 .
fooPatternToStart시작 줄에 정규식 패턴 barPatternToEnd이 있고 패턴은 아래 다른 줄에서 찾을 수 있습니다.

여기에 예제가 있습니다 .

간단하고 효과적인 🙂

참고 : VS2012 이전 에는 다음과 같은 패턴이 작동했습니다.fooPatternToStart.(.\n)+@.*barPatternToEnd


답변

참고 :이 답변은 VS 2012까지 Visual Studio에서 사용되는 정규식 구문을 사용합니다. VS 2013 이상에서는 정규식 구문이 변경되었습니다.

\n표현식에 포함 할 수 있습니다 . 예를 들어, 여기에 저장 프로 시저가 아닌 모든 것에서 자동 생성 된 SQL 스크립트를 “정리”하는 데 사용하는 정규식이 있습니다 ( “Object :”가 포함 된 줄로 시작하는 텍스트 블록과 일치하지 않는 항목이 뒤 따르는 텍스트 블록과 일치합니다. “StoredProcedure”, 다음 줄을 한 줄까지 일치 시키면 단어 “GO”로 구성됨) :

/\*+ Object\::b:b~(StoredProcedure)(.*\n)#GO\n


답변

표현식 끝에 \ r \ n을 사용해야 할 수도 있습니다.


답변

탐욕스럽지 않은 여러 줄 문자 캡처, Visual Studio 2013+ :

.*?\r?\n.*?

Giles Roberts의 대답에서 욕심 많은 버전.


답변

VS Code를 검색하는 동안 여기에 오는 모든 사람들을 위해, 나는 이것을 사용 script하여 2 개의 줄 바꿈 (줄 바꿈 제외)으로 어디서나 일치 시킵니다.

script(.|\n)+?(?=\n\n)

교체 script하고 \n\n그들 사이의 모든 것을 일치시킵니다.