새소식

사용팁/regex(정규식)

[vscode] 검색 정규식

  • -

기록용으로 남기고 성공한 사례들을 갱신할 예정입니다.
vscode 에서 Ctrl + H 키를 누르면 replace 창이 뜹니다. Find 라고 써진 칸의 오른쪽 끝을 보면 아이콘이 3가지 있습니다. 그 중에 .* 라고 되어 있는 것을 클릭하거나 Alt + R 키를 누르면 입력되는 패턴을 정규식으로 해석해서 진행하게 됩니다.

  • 대괄호 [] 매칭해보기
    • self.a["b"]["c"], 라는 문자열에서 c 만 남기고 싶습니다.
      • []는 정규식에서 보통 특수한 용도로 사용됩니다. [abc] 라고 하면 a 또는 b 또는 c 중 하나가 나타난다는 뜻입니다.
      • 하지만 이 문자 자체를 일반문자로 검색하고 싶다면 \ 를 붙여서 원래 용도에서 탈출(escaping)시켜야 합니다.
      • 이제 Find 항목에 검색어를 입력해봅시다.
        • self.a\["b"\]\["([A-Za-z0-9_]+)".*
        • 특수 문자 몇개를 제외하고는 그대로 해석하시면 됩니다.
        • \[ \]는 대괄호를 일반문자로 인식해서 검색해줍니다.
        • () 는 이 안의 패턴에 매칭된 내용을 그룹으로 만들어줍니다. vim 에서는 \(\)로 사용을 합니다. Replace 항목에서 유용하게 쓸 수 있습니다.
        • [A-Za-z0-9_] 는 위에서도 소개되었지만 이 범위 중에 한 글자를 뜻합니다. 그 안의 A-Z는 A, B, C, ..., Z 처럼 A 부터 Z까지의 모든 문자를 뜻합니다. a-z, 0-9 도 자연스럽게 알수 있겠죠? 그 외에 _ 문자도 한 개 포함합니다.
        • +는 바로 앞 한글자 또는 한 그룹이 한 번 이상 반복된다는 뜻입니다.
      • 이제 Replace 항목에 바꿀 패턴을 입력합니다.
        • 위에서 ([A-Za-z0-9_]+) 만 남기려고 합니다. c 에 해당하죠.
        • 이 c 는 이미 그룹()이 되었으므로 간단하게 $1 이라고 써주면 1번 그룹만 남게 됩니다.

'사용팁 > regex(정규식)' 카테고리의 다른 글

[grep] 여러 줄을 포함하는 패턴 찾기  (0) 2022.03.16
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.