Sublime Text 2에서 정규식 검색 대체
Sublime Text 2에서 정규 표현식으로 검색을 바꾸려고합니다.이 문서 는 빈약합니다. 특히, 그룹을 바꾸고 싶습니다.이 텍스트를 변환하는 것과 같습니다.
Hello my name is bob
그리고이 검색어 :
무엇을 찾다: my name is (\w)+
다음으로 교체하십시오. my name used to be $(1)
검색어는 정상적으로 작동하지만 regexp 그룹을 사용하여 실제로 교체하는 방법을 알 수 없습니다.
일반적으로 역 참조는 첫 번째 캡처 그룹 (괄호 안의 패턴의 첫 번째 일치)에 대해 $1
또는 \1
(백 슬래시 1)입니다. 아마도 시도해보십시오.
my name used to be \1
또는
my name used to be $1
업데이트 : 여러 사람들이 지적했듯이 원래 캡처 패턴이 잘못되어 전체 이름이 아닌 이름의 마지막 문자 만 캡처합니다. 이름의 모든 문자를 캡처하려면 다음 패턴을 사용해야합니다.
my name is (\w+)
그건 그렇고, 위의 질문에서 :
에 대한:
Hello, my name is bob
부분 찾기 :
my name is (\w)+
교체 부품 :
my name used to be \1
돌아올 것이다 :
Hello, my name used to be b
찾기 부분을 다음으로 변경하십시오.
my name is (\w+)
그리고 교체는 당신이 기대하는 것입니다 :
Hello, my name used to be bob
(\ w) +는 "bob"과 일치하지만 교체하려는 그룹이 아닙니다.
검색 문자열에 () 괄호를 사용하십시오
강조해야 할 중요한 것이 있습니다! 모든 검색 문자열에서 일치하는 부분 당신이 당신에 사용하려는 대체 문자열이 되어야합니다 () 괄호로 채택 \ 그렇지 않으면이 일치하는 부분은 $ 1, $ 2, ... 나 \ 1과 변수를 연결할 수 없습니다, 2 등
예:
'em'을 'px'로 바꾸고 숫자 값은 유지하려고합니다.
margin: 10em
margin: 2em
그래서 우리 margin: $1px
는 교체 문자열로 사용 합니다.
수정 : 다음과 같이 원하는 $1
일치 세그먼트를 ( )
괄호로 묶습니다.
찾기 : margin: ([0-9]*)em
(괄호 포함)
다음으로 교체 : margin: $1px
결과:
margin: 10px
margin: 2px
잘못됨 : 다음 정규식 패턴은 원하는 행과 일치하지만 대체 된 문자열에서 다음과 같은 변수로 일치하는 세그먼트를 사용할 수 없습니다 $1
.
찾기 : margin: [0-9]*em
(괄호없이)
다음으로 교체 : margin: $1px
결과 : ( $1
정의되지 않음)
margin: px
margin: px
다음은 승인 된 답변을 시각적으로 나타낸 것입니다.
캡처 그룹을 9 개 이상 사용하는 경우 구문을 사용해야합니다 ${10}
.
$10
나 \10
또는 \{10}
것입니다 하지 작동합니다.
보면 검색에 대한 숭고한 텍스트 비공식 문서의 기사 및 바꾸기 처럼, 그것은 보이는 +(.+)
당신이 할 수 있습니다 캡처 그룹은 ...하지만 난 개인적으로 사용 (.*)
하고 잘 작동. 당신이 말하는 방식으로 교체하려면이 좋아할만한 포럼에서 대화 , 특히 이 게시물 단순히 사용 말한다 $1
첫 번째 캡처 그룹을 사용합니다.
그리고 그림이 말보다 낫기 때문에 ...
참고 URL : https://stackoverflow.com/questions/11819886/regular-expression-search-replace-in-sublime-text-2
'Programing' 카테고리의 다른 글
배열에서 무언가의 첫 번째 인덱스를 반환하는 NumPy 함수가 있습니까? (0) | 2020.02.20 |
---|---|
파이썬의 re.compile을 사용할 가치가 있습니까? (0) | 2020.02.20 |
출력에서 파이썬 버전 인쇄 (0) | 2020.02.20 |
SQL Server 2008을 사용하여 IDENTITY_INSERT를 설정 및 해제하는 방법은 무엇입니까? (0) | 2020.02.20 |
유휴 연결 중단 시간 재시도 (0) | 2020.02.20 |