□ {n} or {m,n} 반복패턴
○ {n} 반복 패턴 생성 : 앞글자가 n번만큼 나오는 패턴
#패턴지정 : D가 두번 나와야함
seventh_pattern = re.compile('AD{2}A')
# 확인
print(seventh_pattern.search('ADA'))
print(seventh_pattern.search('ADDA')) #매칭
print(seventh_pattern.search('ADDDA')) #D가 3번으로 불일치
○ {m,n} 반복 패턴 생성 : 앞글자가 m에서 n만큼 나나오는 패턴
# 패턴지정 : D가 최소 3번에서 6번 나와야함
eight_pattern = re.compile('AD{3,6}A')
print(eight_pattern.search('ADDA'))
print(eight_pattern.search('ADDDA')) #매칭
print(eight_pattern.search('ADDDDDDDA'))
□ [ ] : 대괄호 안에 있는 문자열이 있다면 문자열들 중 한개라도 or 조건으로 있을 경우 나오는 패턴
# 패턴지정 : a 또는 b 또는 c 또는 d 또는 e 또는 f 또는 g 또는 A 또는 B 또는 C 또는 D 또는 D 또는 E 또는 F 또는 G 가 있는 패턴
nineth_pattern = re.compile('[abcdefgABCDEFG]')
# 확인
print(nineth_pattern.search('a1234')) #매칭
print(nineth_pattern.search('2a34')) #매칭
print(nineth_pattern.search('12G34')) #매칭
print(nineth_pattern.search('12F34')) #매칭
print(nineth_pattern.search('12a3G4')) #매칭
□ [ - ] : 범위 지정을 통한 패턴
# 패턴지정 : a ~ c 까지 알파벳이 한개라도 있을 경우
tenth_pattern = re.compile('[a-c]')
# 확인
print(tenth_pattern.search('k1234'))
print(tenth_pattern.search('a1234')) #일치
print(tenth_pattern.search('z1234'))
print(tenth_pattern.search('b1234')) #일치
print(tenth_pattern.search('c1234')) #일치
# 매칭지정 : 소문자 a~z, 대문자 A~Z, 숫자 0~5까지 한개라도 있는 경우
eleventh_pattetn = re.compile('[a-zA-Z0-5]') #소문자 a~z까지, 대문자 A~Z까지, 0~5까지
print(eleventh_pattetn.search('789'))
print(eleventh_pattetn.search('123456')) #매칭
print(eleventh_pattetn.search('*?'))
# 매칭지정 : 소문자 a~z, 대문자 A~Z, 숫자 0~5까지 한개라도 없는 경우 ** ^앞에 쓰면 뒤조건을 부정하는 것을 의미
twowelve_pattetn = re.compile('[^a-zA-Z0-5]')
# 확인
print(twowelve_pattetn.search('789')) #매칭
print(twowelve_pattetn.search('123456')) #매칭
print(twowelve_pattetn.search('*?')) #매칭
# 매칭지정 : 가~힣까지 패턴 지정
thirteenth_pattetn = re.compile('[가-힣]') #한글 가-힣 범위안의 문자 조회
# 확인
print(thirteenth_pattetn.search('한')) #매칭