2013-04-09 4 views
0

아래의 줄에있는 "something \ something"문자열을 여러 텍스트 파일로 대체해야합니다. 큰 따옴표로 묶은 문자열은 각 파일마다 다르며 나머지 줄은 같습니다. 또한 일부 파일에는 \ 및 일부 위장이있을 수 있습니다. 나는 그것을 일반 텍스트로 대체해야한다. 사용자 이름을 말하십시오.메모장 ++ Regex는 완전한 문자열을 큰 따옴표로 대체합니다. 아무런 사용하지 않고 모든 가능성을 시험해 보았습니다

CType(extensionParams(3),ParameterValue).Value = "."/".*"/"[A-Za-z]" 나는 많은 정규식을 시도

는, 아무것도 찾을 수 없습니다. 나는 메모장 ++를 사용하고 6.3.2

찾기 :CType(extensionParams(3),ParameterValue).Value = "something\something"
(참고 : 일부 파일은 \ 일부 mightnot있을 수 있습니다) :CType(extensionParams(3),ParameterValue).Value = "Username"

을 바꿀

내 조건을 만족하는 Regex를 도와주세요. 이온.

답변

0

하나의 솔루션이

(CType(extensionParams(3),ParameterValue).Value = ")[^"]+ 

을하고

$1Username 

이 오프닝 인용 저장 첫 번째 캡처 그룹에서이 부분을 포함하여 첫 번째 부분 CType(extensionParams(3),ParameterValue).Value = " 일치로 대체 할 감사 .

[^"]+은 인용 부호가 아닌 모든 문자와 1 회 이상 일치하는 부정 문자 클래스입니다. 따라서이 부분은 따옴표 사이의 문자열을 바꿀 것입니다. 닫는 따옴표와 일치하지 않습니다.

대체 문자열에 $1이있는 경우 첫 번째 캡처 그룹의 콘텐츠를 가져옵니다.

+0

감사합니다. 묶음 스템타가 작동했습니다 ... 다시 한 번 감사드립니다. \ 1은 메모장 ++에서 작동했습니다. –

+0

@ gouthamdevulapally, 메모장을 최신 버전으로 업데이트해야한다고 생각합니다. 버전 6부터, 그것은 PCRE를 지원합니다, 정규 표현식 지원은 훨씬 더 좋습니다. – stema

0

정규식 (CType\(extensionParams\(3\),ParameterValue\)\.Value =)"[^"]*"에 대한 검색과 같은 라인 \1"Username"로 교체한다 :

에서는 CType (extensionParams (3)가 parameterValue) .Value = "무언가 \ 무언가"

참고 둥근 괄호 ()은 캡처를 나타내므로 실제 대괄호와 일치 시키려면 이스케이프 처리해야합니다. 대부분의 검색 문자열이 캡처되어 대체 텍스트의 입력을 절약합니다. 내가 일치하는 따옴표 사이의 텍스트는 [^"]*과 같이 큰 따옴표가 아닌 0 개 이상의 문자를 찾습니다. 문자열이 한 줄에 있어야하는 경우 해당 섹션을 [^"\r\n"]으로 변경하는 것이 좋습니다.

대체하려면 \1을 사용하여 검색에서 일치하는 텍스트를 포함하십시오. 다른 정규 표현식 편집기는 같은 목적으로 $1을 사용합니다. 메모장 + +는 \1을 사용합니다. 대체 텍스트에 둥근 괄호를 포함해야한다면 백 슬래시로 이스케이프해야합니다.

+0

Adrian에게 많은 감사를드립니다. 완전한 대답이었습니다. 고맙습니다. –