Visual Studio 2012, 2013, 2015 및 VS Code에서 정규식 찾기 및 바꾸기로 캡처 그룹을 참조하는 방법


254

나는 이것에 대해 많은 질문이 있다는 것을 알고 있지만, 그들이 언급 한 VS 버전을 구체적으로 언급 한 것은 없습니다. 그 중요한 정보가 부족하더라도 여전히 찾은 답변을 성공적으로 사용할 수 없었습니다. 가장 흔한 것은

  • {}로 둘러싸고 \ 1, \ 2, \ n으로 화면 캡처

그러나 Visual Studio에서 정규식 찾기 및 바꾸기를 수행하는 오래된 방법 인 것처럼 보이며 VS 2012에서는 작동하지 않습니다.


1
도움말에서 찾기가 너무 어렵지 않습니다. 검색 / 바꾸기 대화 상자에서 F1; 텍스트 찾기 및 바꾸기 초기에는 VS에서 정규 표현식 사용에 대한 링크가 있습니다 . 두 번째 팁은 정규식 대체를 의미합니다 . 거기에서 그것은 당신에게 기본을 제공 하고 번호가 매겨진 그룹 대체명명 된 그룹 대체 아래에 더 자세한 내용이 있다고 말합니다 .
PJTraill

2
@PJTraill 2013 년과 2015 년 사이에 2012 년 버전에 대한 질문에 답변하기가 더 쉬워 졌다는 사실을 알게되어 기쁩니다. 그러나 투표 결과, 여전히 도움이되는 것이 "너무 어렵지 않은"것은 분명한 것 같습니다. IMO : 찾기, 바꾸기, 캡처를 전혀 사용하지 않고 스택 오버플로 기사를 검색하고 투표하는 것이 더 쉬운 경우에는 생각보다 훨씬 어렵습니다.
SgtPooki

MSVS 2012/3에 대해 나를 괴롭히는 것 중 하나는 두 개의 다른 검색 / 바꾸기 대화 상자, 특히 작은 (Ctrl-H) 대화 상자인데, 실수로 (키 입력으로 인해 다른 곳을 의미하는) 검색 범위를 변경하는 대화 상자입니다. . 그러나 내가 만들고자 하는 요점 은 더 큰 (Ctrl-Shift-H) 대화 상자에는 찾기 및 바꾸기 필드 뒤에 원하는 항목을 포함하여 더 중요한 가능성 목록을 제공하는 단추가 있다는 것입니다. 도움이 필요하다! 많은 사람들이 버튼을 보지 못하거나 Ctrl-H 대화 상자에 들어가서 볼 수 없다고 생각합니다.
PJTraill

나는 그 도움이 조금 귀찮다는 데 동의한다. 나는 그들이 일반 텍스트 검색보다 우선권을 가지고 있다고 생각합니다. 내 요점은 누군가가 알고 있거나 생각한다면 그것이 합리적으로 쉽게 찾을 있어야한다는 것이다 . 일단 정식 문서를 찾은 후에는 해당 경로를 따라가는 경우가 많습니다. 나는 비난하는 소리를 내리지 않았다. 나는 그것이“너무 어렵다”고“너무 힘들지 않다”고 생각한다.“너무 그렇지 않다”라고 적격 한“딱딱한”것으로 간주하고 암시 적“무엇을위한 단단함”에 대한 답을 추가한다면 그것들은 반대가 아니다.
PJTraill

나는 REGEXP 태깅이 '()'를 사용하고 있다는 것을“알았다”, Re는 문서를 읽었고 작동하지 않았다. 그래서 나는 여기에 와서 확인했다. 따라서 IMHO MSDN 문서는 구식 VS6 "태그"명명법을 배워야하는 사람들을 위해 ()를 사용하여 표현식에 "태그"를 지정한다는 것을 분명히해야합니다. 그들이 같은 명명법을 사용할 수 있다면 좋을 것입니다. 번호가 매겨진 그룹은 단지 시냅스를 충분히 발사하지 않습니다.
로스 영 블러드

답변:


355

VS 2012 및 VS 2015에서 찾아서 바꾸려면 다음을 수행하십시오.

(syonip 덕분에)

찾기 옵션에서 '정규 표현식 사용'이 선택되어 있는지 확인하고 찾을 텍스트로 다음을 입력하십시오.

_platformActions.InstallApp\((.+)\)

다음 텍스트로 대체하십시오.

this.Platform().App($1).Install()

참고 : 아래 주석에서 SLaks가 지적한 것처럼 정규식 구문의 변경은 VS2012가 표준 .Net 정규식 엔진으로 전환했기 때문입니다.

참고 : 다른 의견자는 이것이 Visual Studio Code (vscode)에서도 작동한다고 지적했습니다.


10
보다 일반적으로 VS2012는 표준 .Net 정규식 엔진을 사용합니다.
SLaks

4
_platformActions과 사이의 마침표를 피할 필요가 InstallApp없습니까?
rory.ap

지금 생각하면 말이됩니다. 나는 그것을 테스트하지 않았습니다. 거기에 편집을 던져 주시기 바랍니다.
SgtPooki

1
결국 숫자로 명명 된 사용은 적어도 나에게는 효과가없는 것 같습니다. (?<rval>.+)검색 및 교체${rval}
Mark Schultheiss

2
약간의 추가 도움말 : 사물 (. *)을 사물 $ 18로 바꾸려면 (캡처 직후에 '8'을 추가하십시오) 사물 $ {1} 8
Luc Bloom

17

이에 대한 예제를 추가하려면 다음은 코드에서 수행해야 할 작업입니다.

무엇을 찾다:

_platformActions.InstallApp\((.+)\)

다음으로 교체하십시오.

this.Platform().App($1).Install()

그러면 InstallApp (x)에 대한 호출이 this.Platform (). App (x) .Install ()으로 바뀝니다.

* 찾기 옵션에서 "정규 표현식 사용"을 표시하는 것을 잊지 마십시오


10

그룹 이름을 사용하여 작업하려면 (위와 동일한 샘플 사용) :

무엇을 찾다:

_platformActions\.InstallApp\((?<mygroupname>.+)\)

다음으로 교체하십시오.

this.Platform().App(${mygroupname}).Install()

9

위의 답변을 개선하려면 다음을 교체해야합니다.

_platformActions.InstallApp\((.+)\)

this.Platform().App(${1}).Install()

캡처 뒤에 숫자를 추가 하려면 $ {1}을 (를) 확인하십시오. 추가 된 $18첫 번째가 아닌 18 번째 검색 캡처를 삽입하려고합니다 8.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.