정규식

메타문자

. ^ $ * + ? {} () \ | ()

1. 캐릭터 클래스 ( )

– ( ) 사이의 문자를 일치시킵니다.

1) (abc) : a, b, c 사이의 모든 문자와 일치

(abc) : a, b, c 중 한 개의 문자와 매치

a      -> O  정규식과 일치하는 문자 "a"가 있으므로 매치
before -> O  정규식과 일치하는 문자 "b"가 있으므로 매치
dude   -> X  정규식과 일치하는 문자 a, b, c 중 
             어느 하나도 포함하고 있지 않으므로 매치되지 않음

2) ( ) 안의 두 문자 사이에 하이픈(-)을 사용합니다. From – To는 두 문자 사이의 범위를 의미합니다.

예) (abc) = (ac)

3) 일반적으로 사용되는 문자 클래스

\d : 모든 숫자와 일치하는 숫자 = (0-9)

\D : 숫자가 아닌 모든 항목 일치 = (^0-9)

\s : 공백과 일치

\S : 공백이 아닌 모든 것과 일치

\w : 문자 + 숫자 일치

\W : 문자+숫자가 아닌 모든 문자와 일치

두 번째 지점 .

– 모든 문자와 일치(개행 문자 \n 제외)

1) ab = a+모든 문자+b

a.b 와 매치되는 문자열
aab -> O
a0b -> O
abc -> X  ∵ a와 b사이에 문자열이 들어가지 않았음

2) 아이콘으로 . 사용하려고 할 때

a(.)b = a.b
. 이 () 안에 있으면 문자 그대로를 의미함

– 종종 확장명을 찾는 데 사용

3. 반복

* + ? {m,n}

1) * : 0 이상 일치

car*t : * 바로 앞에 있는 문자가 0번 이상 반복될 수 있다는 의미

cat
cart
carrt
carrrt

2) + : 1회 이상 일치

ca*t : +는 반복 횟수 1부터

ct
cat
caaat

삼) ? : 1회 미만 사용시 일치

?는 {0,1}을 의미
ab?c : b가 0 or 1번 사용되면 매치

abc -> O
ac -> O

4) {엠}

ca{2}t : a가 반드시 2번 반복되어야 함

cat -> X
caat -> O

5) {m,n}

ca{2,5}t : a가 2~5번 반복
cat -> X
caat -> O
caaaat -> O

예시 1) 휴대폰 번호를 템플릿으로 생성

# 휴대폰 번호 010-1234-4567 or 010-123-4567의 패턴
p = re.compile("\d{3}(-)\d{3,4}(-)\d{4}")

예시 2) 이메일을 템플릿으로 생성

string = "[email protected]  [email protected]"
p = re.compile("(a-z)+@\w+(.)\w{3}")