정규식과 한판

Juui·2025년 5월 10일

🥊Regex와 한판: 자주 쓰는 정규표현식과 패턴 정리

웹 개발이나 코드 리팩토링을 하다 보면, 특정 패턴을 가진 문자열을 찾거나 수정할 일이 종종 생깁니다.
이럴 때 가장 강력한 도구가 바로 정규표현식(Regex) 입니다.

이번 글에서는 제가 최근 프로젝트에서 자주 사용한 몇 가지 정규표현식을 소개하고, 각각의 구성 요소와 의미를 정리하겠습니다.

  • 예시 매칭:
useMappingKey( key )[ value ]
useMappingKey(someKey)[anotherValue]

이런 패턴을 일괄적으로 찾거나 수정해야할 때 아래와 같은 정규식이 필요하게 됩니다.
우선 내가 찾아야하는 패턴을 먼저 확인 후 정규식을 구성합니다.

  • 패턴:
^useMappingKey(공백이 있거나 없고)문자열(공백이 있거나 없고))[공백이 있거나 없고]문자열(공백이 있거나 없고)]
  • 패턴을 찾는 정규식:
^useMappingKey\(\s*[^)]+\s*\)\[\s*[^\]]+\s*\]
  • 정규식 문법:
    • ^ : 문자열이 useMappingKey로 시작해야 함
    • (, ) : 괄호 문자 그대로를 의미
    • \s* : 공백이 있어도 되고 없어도 됨
    • [^)]+ : 괄호 )를 제외한 문자 1개 이상
    • [\s[^]]+\s] : 대괄호 내부에 공백 포함한 문자 존재

자주 쓰는 정규식 문법 정리:

1. 단어 경계 \b

\b는 부분 일치를 막고 정확한 단어만 찾을 때 유용합니다.

  • 예시:
/\bgenerateMappingKey\b/
  • 이 정규식은 "generateMappingKey" 와 같이 단어 단위로 정확히 일치할 때만 매칭됩니다. "generateMappingKeyExtra"과 같은 단어는 매칭이 안됩니다.

2. 문자열 시작 ^

^는 문자열이 반드시 ^뒤에 오는 단어로 시작해야 매칭됩니다.

  • 예시:
/^abc/
  • "abc"은 매칭되지만 "zabc"는 매칭되지 않습니다.

3. 여는 괄호 문자 \(

괄호는 정규식에서 특수문자이므로, 역슬래시()로 escape 해야 정확히 매칭됩니다.

  • 예시:
/\(abc\)/
  • "(abc)"는 매칭되지만 "abc"는 매칭되지 않습니다.

4. 공백 0개 이상 \s*

\s*는 공백이 있어도 되고 없어도 됨을 의미합니다.

  • 예시:
/a\s*b/
  • "ab" 또는 "a b" 또는 "a b" 전부 매칭

5. 특정 문자를 제외 [^문자]

대괄호 안에서 ^는 "부정"을 뜻합니다.

  • 예시:
/[^)]/
  • "a"은 매칭되지만 ")"은 매칭되지 않습니다

6. 1개 이상 반복 +

+는 적어도 1개 이상 문자 필요합니다.
*는 0개도 허용하는 반면, +는 반드시 있어야 매칭돼요.

  • 예시
/[^)]+/
  • "abc"매칭 ")"매칭 안됨 ""매칭 안됨

7. 그룹 캡처 ()

그룹 캡처는 후처리할 때 매우 유용합니다. 예: match()[1]

  • 예시
/([^}]*)/
  • "abc}" → 캡처: "abc"
  • "hello}" → 캡처: "hello"
  • "}" → 캡처: "" (비어 있어도 가능)

8. 큰따옴표 또는 작은따옴표 ["']

작은따옴표나 큰따옴표 중 하나만 있어도 매칭됩니다.

  • 예시:
/["']abc["']/
  • "abc" → 매칭
  • 'abc' → 매칭
  • abc → 매칭 안됨

9. 따옴표 제외 문자 [^"']+

따옴표로 감싸진 값에서 내용만 추출할 때 자주 사용됩니다.

  • 예시:
/[^"']+/
  • "abc" → 캡처: abc
  • "123" → 캡처: 123
  • "'value'" → 캡처: value

마무리

정규표현식은 처음에는 복잡하고 생소할 수 있지만, 하나하나 의미를 이해하면 정확하고 강력한 문자열 필터링 도구가 됩니다.
앞으로도 실무에서 자주 쓰는 정규식 패턴들을 정리해보도록 하겠습니다.

정규식 테스트
MDN 정규식 가이드

profile
I Design My Own Trajectory

0개의 댓글