Search
🛠️

정규표현식

1. 기본 메타 문자

^ (시작)

"문장의 첫 글자부터 시작해!"
패턴: ^Hello 문자열: "Hello World" ✅ 문자열: "Say Hello" ❌
Plain Text
복사

$ (끝)

"문장의 마지막 글자로 끝나!"
패턴: World$ 문자열: "Hello World" ✅ 문자열: "World Peace" ❌
Plain Text
복사

\b (단어 경계)

"독립된 단어만 찾아줘!"
패턴: \bcat\b 문자열: "I have a cat" ✅ (독립된 'cat') 문자열: "concatenate" ❌ ('cat'이 단어 안에 포함)
Plain Text
복사

\B (비단어 경계)

"단어 안에 포함된 것만 찾아줘!"
패턴: cat\B 문자열: "I have a cat" ❌ (독립된 'cat') 문자열: "concatenate" ✅ ('cat'이 단어 안에 포함)
Plain Text
복사

2. 공백과 문자

\s (공백)

"띄어쓰기, 탭, 엔터 등 모든 공백"
패턴: Hello\sWorld 문자열: "Hello World" ✅ 문자열: "Hello World" ✅ (탭도 포함) 문자열: "HelloWorld" ❌
Plain Text
복사

\S (공백 아닌 것)

"공백이 아닌 모든 문자"
패턴: \S+ 문자열: "Hello World" → "Hello", "World" 두 개 매치
Plain Text
복사

\d (숫자)

"0부터 9까지의 숫자"
패턴: \d+ 문자열: "I have 5 cats and 3 dogs" → "5", "3" 매치
Plain Text
복사

\D (숫자 아닌 것)

"숫자가 아닌 모든 문자"
패턴: \D+ 문자열: "abc123def" → "abc", "def" 매치
Plain Text
복사

\w (단어 문자)

"영문자, 숫자, 언더스코어"
패턴: \w+ 문자열: "hello_world123!" → "hello_world123" 매치
Plain Text
복사

. (모든 문자)

"뭐든지 한 글자"
패턴: c.t 문자열: "cat" ✅, "cut" ✅, "c@t" ✅, "cot" ✅
Plain Text
복사

3. 선택 패턴

| (OR)

"이것 또는 저것"
패턴: cat|dog 문자열: "I have a cat" ✅ 문자열: "I have a dog" ✅ 문자열: "I have a bird" ❌
Plain Text
복사

[...] (문자 집합)

"대괄호 안의 문자 중 하나"
패턴: [aeiou] 문자열: "hello" → "e", "o" 매치 (모음들) 패턴: [0-9] 문자열: "Room 301" → "3", "0", "1" 매치 패턴: [A-Za-z] 문자열: "Hello123" → "H", "e", "l", "l", "o" 매치
Plain Text
복사

4. 수량 한정자

? (0개 또는 1개)

"있어도 되고 없어도 돼"
패턴: colou?r 문자열: "color" ✅ (u가 0개) 문자열: "colour" ✅ (u가 1개) 문자열: "colouur" ❌ (u가 2개)
Plain Text
복사

*(0개 이상)

"없어도 되고, 많아도 돼"
패턴: go*d 문자열: "gd" ✅ (o가 0개) 문자열: "god" ✅ (o가 1개) 문자열: "good" ✅ (o가 2개) 문자열: "goooood" ✅ (o가 많아도 OK)
Plain Text
복사

+ (1개 이상)

"최소 1개는 있어야 해"
패턴: go+d 문자열: "gd" ❌ (o가 0개) 문자열: "god" ✅ (o가 1개) 문자열: "good" ✅ (o가 2개)
Plain Text
복사

{n} (정확히 n개)

"정확히 이 개수만"
패턴: \d{3} 문자열: "12" ❌ (2개) 문자열: "123" ✅ (3개) 문자열: "1234" → "123" 매치 (앞의 3개만)
Plain Text
복사

{n,m} (n개 이상 m개 이하)

"이 범위 안에서"
패턴: \d{2,4} 문자열: "1" ❌ (1개) 문자열: "12" ✅ (2개) 문자열: "123" ✅ (3개) 문자열: "1234" ✅ (4개) 문자열: "12345" → "1234" 매치 (최대 4개까지)
Plain Text
복사

5. 전후방 탐색

?= (전방 탐색)

"뒤에 특정 패턴이 오는 경우만"
패턴: \w+(?=@) 문자열: "user@gmail.com" → "user" 매치 설명: "@" 앞에 있는 단어만 찾기
Plain Text
복사

?<= (후방 탐색)

"앞에 특정 패턴이 있는 경우만"
패턴: (?<=@)\w+ 문자열: "user@gmail.com" → "gmail" 매치 설명: "@" 뒤에 있는 단어만 찾기
Plain Text
복사

?! (부정형 전방 탐색)

"뒤에 특정 패턴이 오지 않는 경우만"
패턴: \d{4}(?!-) 문자열: "010-1234-5678" → "5678" 매치 설명: 뒤에 "-"가 오지 않는 4자리 숫자
Plain Text
복사

?<! (부정형 후방 탐색)

"앞에 특정 패턴이 오지 않는 경우만"
패턴: (?<!\$)\d+ 문자열: "I paid $30 for 100 apples" → "100" 매치 설명: 앞에 "$"가 오지 않는 숫자들
Plain Text
복사

6. 실생활 예시

이메일 주소 찾기

패턴: \w+@\w+\.\w+ 문자열: "Contact us at support@company.com" 결과: "support@company.com" 매치
Plain Text
복사

전화번호 찾기

패턴: \d{3}-\d{4}-\d{4} 문자열: "Call me at 010-1234-5678" 결과: "010-1234-5678" 매치
Plain Text
복사

한국 우편번호 찾기

패턴: \d{5} 문자열: "Address: 서울시 강남구 12345" 결과: "12345" 매치
Plain Text
복사

HTML 태그 제거

패턴: <[^>]*> 문자열: "<p>Hello <b>World</b></p>" 결과: "Hello World" (태그들이 제거됨)
Plain Text
복사

기억하기 쉬운 팁

^ = 시작 (화살표가 앞을 가리킴)
$ = 끝 (달러는 마지막에 계산)
*= 별처럼 많거나 없거나
+ = 플러스니까 최소 1개는 더해야 함
? = 물음표니까 있을까 말까
\d = digit (숫자)
\w = word (단어)
\s = space (공백)