1. 문자 클래스 (character class)

 

[ ]
# 모든 영문의 소문자
[a-z]

# 모든 영문의 소문자와 대문자
[a-zA-Z]

# 모든 숫자
[0-9]

# 모든 숫자가 아닌 문자
[^0-9]

 

 + 자주 사용하는 문자 클래스

 

# 숫자와 매치됨.
\d
# = [0-9]

# 숫자가 아닌 것과 매치
\D
# = [^0-9]

# white space와 매치
\s
# = [ \t\n\r\f\v]

# white space가 아닌 것과 매치
\S
# = [^ \t\n\r\f\v]

# 문자, 숫자와 매치
\w
# = [a-zA-Z0-9_]

# 문자, 숫자가 아닌 것과 매치
\W
# = [^a-zA-Z0-9_]

 

 

 

 

2. Dot(.) 메타 문자

 

a.b

Dot(.)은 \n 을 제외한 모든 문자와 매칭됩니다.

 

a0b

acb

aDb

위 문구들과 매칭되며

 

abc

위 문구와는 매칭되지 않습니다.

( 문자 1개가 꼭 있어야합니다. )

 

a[.]b

위의 경우 문자 클래스 안의 . 이기 때문에 . 자체를 의미합니다.

a.b 와는 매칭되지만

a0b, acb 등과는 매칭되지 않습니다.

 

 

 

 

3. 반복 (*)

 

ca*t

* 바로 앞의 문자 a가 0부터 무한대로 반복되는 문구와 매칭됩니다.

 

ct

cat

caaaaaat

위 문구 모두 매칭됩니다.

 

 

 

 

4. 반복 (+)

 

ca+t

+ 바로 앞의 문자 a가 1부터 무한대로 반복되는 문구와 매칭됩니다.

 

ct

위 문구와는 매칭되지 않으며

 

cat

caaaaat

위 문구와는 매칭됩니다.

 

 

 

 

5. 반복 ( {m,n}, ? )

 

 

 - {m}

 

ca{m}t

 {m} 앞의 문자가 반드시 m번 반복시 매칭됩니다.

 

아래 예시로 알아보겠습니다.

ca{2}t

caat

위 문구와 매칭됩니다.

 

cat

ct

caaat

위 문구와 매칭되지 않습니다.

 

 

 - {m, n}

 

ca{m,n}t

 {m,n} 앞의 문자가 m~n번 반복시 매칭됩니다.

즉, a가 m번 이상, n번 이하 반복시 매칭됩니다.

 

아래 예시로 알아보겠습니다.

ca{2,5}t

caat

caaat

caaaat

caaaaat

위 문구와 매칭됩니다.

 

cat

ct

caaaaaat

위 문구와 매칭되지 않습니다.

 

 

 - {m,}

 

ca{m,}t

 {m,} 앞의 문자가 m번 이상 반복시 매칭됩니다.

즉, a가 m번 이상 반복시 매칭됩니다.

 

응용해보면

{0,} 은 * 와 동일하고

{1,} 은 + 와 동일함을 알 수 있습니다.

 

아래 예시로 알아보겠습니다.

ca{2,}t

caat

caaat

caaaat

caaaaaaaaaaat

위 문구와 매칭됩니다.

 

cat

ct

위 문구와 매칭되지 않습니다.

 

 

 

 

6. ?

 

ca?t

a가 0~1개 있을 경우 매칭됩니다.

즉, a가 있어도 되고 없어도 된다는 의미입니다.

{0,1} 과 같은 정규표현식으로 보면 되겠습니다.

 

ct

cat

위 문구와 매칭됩니다.

 

caat

cbt

위 문구와 매칭되지 않습니다.

 

 

 

 < *, +, ? 모두 { } 형태로 대체 가능하지만, 가독성을 위해 기호를 활용할것을 적극 권장합니다. >

 

 

 

+ Recent posts