반응형
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 |