메타문자
. ^ $ * + ? {} () \ | ()
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}")
