2013-06-04 2 views
1

종종 문자열의 양면을 찾아 교체하고 상황을 그대로 남겨두기를 원합니다. 일반적으로 첫 번째 부분은 쉽게 식별 할 수 있지만 두 번째 부분은 너무 일반적입니다. 다음의 예는 다음과 같습니다불연속 찾기 및 바꾸기 정규식

ActiveDocument.Sections["SectionName"]SectionName에 코드 문자열을 변경하기 위해서는 첫 번째 부분을 쉽게 찾을 수 있지만, 후자의 "]는 너무 일반적인 ActiveDocument.Sections["에 관계없이입니다. 분명히, SectionName이 정적 문자열이라면, 이것은 중요하지 않을 것입니다, 대체하려면 전체 코드 문자열을 찾을 수 있습니다.

양면을 일치 시키거나, 중간을 건너 뛰거나, 정규 표현식을 사용하여 인접한 부분 만 찾을 수있는 방법이 있습니까? 또는 .*?에 의해 발견 된 것을 임시로 저장하여 원하는 것을 수행 할 수있는 방법이 있습니까?

찾기/바꾸기 작업에 UltraEdit을 사용하고 있습니다. 나는 또한 문자열 즉, 같은 코드를 실행하기 위해 자바 스크립트를 사용할 수 있습니다 codestring.replace()

+0

FWIW에서 자바 스크립트 정규식 도구를 사용하여이 문제를 테스트했다. – undrline

+0

저는 향수를 불러 일으켰을뿐만 아니라 제 담당자를 고칠 세부 사항을 추가 할 수 있는지도보고있는 저의 명성에 대해 이야기했습니다. 나는이 보석을 찾았다. 나는이 질문과 대답을 제이가 준 말 그대로 내 인생을 바꿔 놓았습니다. intergeitial 정보를 유지할 수있게되면 정규 표현식을 급격히 사용하게되었습니다. 그뿐 아니라 Windows 찾기/바꾸기를 사용하는 창의적인 방법을 찾는 다른 사람들을 변환 할 수있었습니다. – undrline

답변

2

이것은 사용하는 도구에 따라 다르지만, 자바에서는 $1을 사용하여 첫 번째 캡처 그룹을 반환 할 수 있습니다.

"찾기"에는 ActiveDocument.Sections\["(.*?)"\], "바꾸기"에는 $1 패턴을 사용할 수 있습니다.

는 내가 제이의 답변을 사용하는 펄 정규식 유형을 변경했다 UltraEdit는에, regular-expressions.info

+1

'. *'은 전체 문서에서 마지막'']'까지 일치 할 것입니다. 게으른'. *? '을 사용하십시오. – h2ooooooo

+0

죄송합니다.이 문서를 테스트하고 답변으로 표시하는 데 너무 오래 걸렸습니다. 내 패턴은'ActiveDocument \ .Sections \ [\ "Dashboard \"\] \. Shapes \ [\ "(. *?) \"\]'로되어 있습니다. 왜 당신 작품이 ... 첫 번째 점에서 탈출하지 않았으므로 $ 1을 "."로 바꾸지 말고 내가보기에 $ 2를 찾아야하지 않습니까? – undrline

+0

생각했습니다. – undrline

0

.*\["(.*?)"\]online test을 바탕으로 파이썬

import re 
re.match(r'.*\["(.*?)"\]', 'ActiveDocument.Sections["SectionName"]').group(1) 
'SectionName' 

에 나를 위해 일한,뿐만 아니라 자바 스크립트와 함께 작동하도록 나타납니다.