반응형
Vim 정규식 역 참조
나는 이것을하고 싶다 :
%s/shop_(*)/shop_\1 wp_\1/
왜 shop_(*)
아무것도 일치 하지 않습니까?
내가 올바르게 이해한다면 당신은 %s/shop_\(.*\)/shop_\1 wp_\1/
캡처하는 괄호를 이스케이프하고 .*
모든 문자를 일치 시키는 데 사용 합니다.
(검색에서 "shop_"다음에 여는 괄호와 닫는 괄호를 차례로 검색)
여기에 몇 가지 문제가 있습니다.
vim regexen의 괄호는 캡처 용이 아닙니다
\( \)
. 캡처 에 사용해야 합니다.*
당신이 생각하는 것을 의미하지 않습니다. 그것은, "더 이전의 0 또는"을 의미하므로 정규 표현식 수단 "이 모두 포함 된 문자열shop_
0+ 다음(
리터럴 다음과)
.
당신이 찾고있는이.
모든 문자". 스타 등과 함께 넣어, 정규식 수단에있는 ".*
"0 개 이상의 문자"를 의미합니다. 최소한 하나의 문자를 원할 수 있으므로.\+
(+
"이전 문자 중 1 개 이상"을 의미)를 사용하십시오.
이것을 사용하십시오 : %s/shop_\(.\+\)/shop_\1 wp_\1/
.
선택적으로 g
마지막 슬래시 뒤로 끝내면 첫 번째 줄이 아닌 한 줄의 모든 인스턴스를 바꿉니다.
참고 URL : https://stackoverflow.com/questions/3339080/vim-regex-backreference
반응형
'Program Tip' 카테고리의 다른 글
고온 및 저온 관측 가능 : '고온'및 '저온'연산자가 있습니까? (0) | 2020.12.12 |
---|---|
Java에서 @Override는 무엇입니까? (0) | 2020.12.12 |
"HTML"페이지의 "HEAD"요소 외부에 CSS 스타일을 선언 하시겠습니까? (0) | 2020.12.12 |
Windows에서 node.js를 업그레이드하는 방법은 무엇입니까? (0) | 2020.12.12 |
메인 스레드에 NSNotification 게시 (0) | 2020.12.12 |