VSCode(Visual Studio Code)는 강력한 정규식 지원을 제공합니다. 주로 **검색(Find)**과 바꾸기(Replace) 기능에서 사용되며, JavaScript 스타일의 정규식을 따릅니다. (ECMAScript 5 호환, 일부 ES6 기능 지원) 정규식을 활성화하려면 검색 창에서 .* 버튼을 클릭하거나, Ctrl+H (Windows/Linux) / Cmd+Option+F (Mac)로 바꾸기 창을 열고, .* 아이콘을 토글하세요.
1. 기본 사용법
- 검색 창 열기: Ctrl+F (Windows/Linux) / Cmd+F (Mac).
- 바꾸기 창 열기: Ctrl+H (Windows/Linux) / Cmd+Option+F (Mac).
- 정규식 모드: 검색 필드 오른쪽의 .* 버튼 클릭 (활성화되면 하이라이트됨).
- 주의: 정규식은 대소문자 구분되며, 멀티라인 검색은 Alt+R로 토글 가능.
2. 주요 정규식 패턴 예시
아래는 VSCode에서 자주 쓰이는 패턴들입니다. 테이블로 정리했어요.
| 패턴 | 설명 | 예시 | 매칭 예 |
| . | 임의의 한 문자 (줄바꿈 제외) | a.c | "abc", "a1c" (하지만 "a\nc"는 안 됨) |
| * | 앞 패턴 0회 이상 반복 | a* | "", "a", "aaa" |
| + | 앞 패턴 1회 이상 반복 | a+ | "a", "aa" (""은 안 됨) |
| ? | 앞 패턴 0회 또는 1회 | a? | "", "a" |
| ^ | 문자열 시작 | ^hello | "hello world"의 "hello" 부분 |
| $ | 문자열 끝 | world$ | "hello world"의 "world" 부분 |
| OR (또는) | cat|dog | "cat" 또는 "dog" | |
| () | 그룹화 (캡처) | (ab)+ | "abab"에서 "ab" 그룹 반복 |
| [] | 문자 클래스 | [a-z] | 소문자 a~z 중 하나 |
| [^] | 부정 문자 클래스 | [^0-9] | 숫자가 아닌 문자 |
| \d | 숫자 (0-9) | \d+ | "123", "45" |
| \w | 단어 문자 (a-z, A-Z, 0-9, _) | \w+ | "hello_world" |
| \s | 공백 (스페이스, 탭, 줄바꿈) | \s+ | 여러 공백 |
| \n | 줄바꿈 | line\n | 줄 끝 |
| (?=...) | 긍정 선행 어서션 (앞에 ...이 올 때) | foo(?=bar) | "foobar"의 "foo" (bar가 뒤따름) |
| (?!...) | 부정 선행 어서션 | foo(?!bar) | "foo baz"의 "foo" (bar가 안 오면) |
- 캡처 그룹: ()로 그룹화하면, 바꾸기에서 $1, $2 등으로 참조. 예: 검색 (foo)(bar) → 바꾸기 $2 $1 (결과: "bar foo").
3. 실전 예시
- 이메일 찾기: [\w\.-]+@[\w\.-]+\.\w+ → "user@example.com" 같은 패턴 매칭.
- 주석 제거: 검색 //.* → 바꾸기 (빈칸) → 한 줄 주석 전체 삭제.
- 날짜 형식 변경: 검색 (\d{4})-(\d{2})-(\d{2}) → 바꾸기 $2/$3/$1 → "2023-10-27"을 "10/27/2023"으로 변환.
- 멀티라인: 검색 ^function\s+(\w+).*?\{[\s\S]*?\} (멀티라인 모드 활성화) → 함수 전체 블록 찾기.
4. 팁과 주의사항
- 테스트 도구: VSCode 확장 'Regex Previewer'나 'Regex' 설치 추천. 온라인 도구如 regex101.com (JavaScript 플래버 사용)에서 미리 테스트하세요.
- 성능: 복잡한 정규식은 큰 파일에서 느려질 수 있음. *나 +는 비탐욕 모드(*?, +?)로 최적화.
- 고급: VSCode는 PCRE(Perl Compatible) 일부 지원 안 함. 자세한 문서는 VSCode 공식 문서 참조.
- 문제 발생 시: 설정 > 검색 > "검색: Use PCRE2" 토글 (기본 off).
반응형
'IT관련' 카테고리의 다른 글
| Kestrel 웹 서버란? (0) | 2025.10.28 |
|---|---|
| ASP.NET과 ASP.NET Core의 주요 차이점 (0) | 2025.10.28 |
| Octet: 유래와 발음 정리 (0) | 2025.10.27 |
| 크롬 브라우저에서 DevTools 없이 메모리 사용량 확인하는 간단한 방법 (0) | 2025.10.14 |
| Google Search Console API과 Google Indexing API의 사용버젼 정리 (0) | 2025.09.19 |