VSCode 정규식 하위 일치 수학 찾기 및 바꾸기?


209
%s@{fileID: \(213[0-9]*\)@\='{fileID: '.(submatch(1)-1900)@

vim 에서이 정규식 검색 및 바꾸기 명령을 사용하여 일치하는 각 ID에서 상수를 뺍니다.

VSCode에서 정규 표현식을 찾을 수 있지만 submatch수학 및 대체를 어떻게 참조 할 수 있습니까? submatch(1)VSCode에서 작동하지 않습니까?

감사.

답변:


350

정규 표현식을 (foobar)사용 $1하면 바꾸기 입력 필드에 더 많은 그룹이있는 경우 등을 사용하여 첫 번째 그룹을 참조 할 수 있습니다 .



5
2000 줄 파일 로 바꿔야 <p>(.*)</p>했습니다 <p>\n\t\t\t\t\t\t$1\n\t\t\t\t\t</p>. 수동으로 수행한다고 상상해보십시오.
Bishwas Mishra 2016

101

예를 들어 벤자민의 대답을 강화하려면 :

Find        Carrots(With)Dip(Are)Yummy
Replace     Bananas$1Mustard$2Gross
Result      BananasWithMustardAreGross

괄호 안에있는 것은 정규식 일 수 있습니다.


이것은 if 문에서 정규 표현식을 수행하는 경우 괄호를 피해야한다고 상기시킵니다.
Clockwork

67

다른 예를 추가하려면 다음을 수행하십시오.

img html 태그에서 src attr을 바꾸고 있었지만 src 만 바꾸고 img 선언과 src 속성 사이에 텍스트를 유지해야했습니다.

이미지에서와 같이 찾기 + 바꾸기 도구 (ctrl + h)를 사용했습니다. 찾아 교체


8
나를 위해이 일관성없이 작동 - 선택 포크 수정 불구하고, 출력은 때때로 계속 $1교체없이
godblessstrawberry

1
안녕하세요, @godblessstrawberry, 검색 및 교체 문자열을 공유 할 수 있습니까?
Diogo Paschoal

2
안녕하세요 @Diogo 나는 프로젝트 전체를 교체하려고했다 \[innerHtml\]\s*=\s*"'(.*)'\s*\|\s*translate\s*"으로 myTranslate="$1"그리고 무작위 키를 건너 뛰는했다 때로는 $ 대신 1 그룹 값을 삽입. 1.28.0으로 업데이트하면이 문제가 해결되었습니다
godblessstrawberry

@godblessstrawberry와 같은 문제가 발생하여 정규 표현식 '(and | or \ + | \-) \ n (*)'및 대체 문자열 '\ n $ 2 $ 1'을 사용하여 모든 파일에서 전역 바꾸기를 수행했습니다. 이진 연산자를 개행의 시작 부분으로 옮겼지만 다른 경우에는 $ 2 $ 1을 삽입했습니다. VSCodium의 버그 인 것 같습니다.
Tom Close 1

@godblessstrawberry,이를 확인 : github.com/microsoft/vscode/issues/81825를 . 귀하에게 해당되지 않는 경우 자세한 정보를 제공하고 문제를여십시오.
Diogo Paschoal

10

내 경우에는 $ 1이 작동하지 않았지만 $ 0은 내 목적에 적합합니다.

이 경우 문자열을 올바른 형식으로 바꾸어 Laravel에서 번역하려고 시도했지만 정렬하는 데 시간이 걸리기 때문에 다른 사람에게 유용 할 수 있기를 바랍니다.

Search: (?<=<div>).*?(?=</div>)
Replace: {{ __('$0') }}

라 라벨 번역을위한 정규식 대체 문자열


1
게시물을 수정하고 이미지 대신 코드를 복사 할 수 있습니까? 시각화에 더 좋습니다.
Pankwood

3

초보자에게는 허용되는 대답이 맞지만 VSC 또는 Regex에 익숙하지 않은 경우 약간 간결합니다.

따라서 이것이 첫 번째 접촉 인 경우 :

텍스트 를 찾아서 수정 하려면

  1. "찾기"단계에서 I want to find (group1) and (group2)괄호를 사용하여 "그룹 캡처"와 함께 정규식을 사용할 수 있습니다 . 이 같은 텍스트를 찾을 것입니다 I want to find group1 and group2,하지만 차이는 다음 참조 할 수 group1group2다음 단계에서 :

  2. 은 "교체"단계에서를 통해 캡처 그룹을 참조 할 수 있습니다 $1, $2당신이 문장을 변경할 수 있도록, 등 I found $1 and $2 having a picnic어떤 출력하고자,I found group1 and group2 having a picnic.

노트:

  • 문자열 대신 내부 또는 외부의 모든 것이 ()정규식이 될 수 있습니다.

  • $0 전체 경기를 말합니다


2

또 다른 간단한 예 :

Search: style="(.+?)"
Replace: css={css`$1`}

감정 / css로 HTML을 JSX로 변환하는 데 유용합니다!

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