정규식 : 정해진 형식이 있는 것을 의미
ex) 주민등록번호 = 111111-1111111
이메일 = helloworld@gmail.com
-> re(정규식)을 import 함
-> 원하는 정규식 형태를 compile하여 p라는 변수에 저장
-> 기본적으로 p를 많이 사용함.(pattern의 약자)
-> . (be.r): 하나의 문자를 의미
-> ^ (^be): 문자열의 시작
-> $ (ar$): 문자열의 끝
-> ? (be?r): 중간은 있어도 없어도 됨 -> b는 있어도 없어도 됨.
-> {1, 2} (be{2, 5}r): {}안의 숫자만큼 반복됨 -> be{2, 5}r의 경우 e가 2, 5 반복되는 beer, beeer, beeeer, beeeeer만 match 되는 것.
-> 원하는 정규식이 "be.r"인 경우 비교할 문자열을 "bear"로 할 경우, 정규식과 맞는지 확인할 수 있음.
-> 하지만 비교할 문자열이 "good bear"인 경우에는 처음부터 확인해서 정규식이 포함되었는지 알 수 없음.
-> 비교할 문자열을 "good bear"이라고 해도 일치하는 부분이 있기 때문에 찾을 수 있음.
-> 이 경우에는 "polarbear", "bearer", "bear" 모두 리스트 ["bear"]를 반환함.
import re
p = re.compile("be.r")
def print_match(m):
if m:
print("m.group(): ", m.group()) # 일치하는 문자열 출력
print("m.string: ", m.string) # 입력받은 문자열 출력
print("m.start() ", m.start()) # 일치하는 문자열의 시작 index
print("m.end(): ", m.end()) # 일치하는 문자열의 끝 index
print("m.span(): ", m.span()) # 일치하는 문자열의 시작과 끝 index
else:
print("매칭되지 않았습니다.")
m = p.match("bear")
print_match(m)
ma = p.search("good bear")
print_match(ma)
lst = p.findall("polarbear bearer")
print(lst)