정규 표현식 : 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어
import re # 정규 표현식 모듈 불러오기
# 문자열 정의
ss = '1234 abc 가나다abcABC_123555_6python is fun'
# re.findall을 사용하여 패턴에 맞는 부분 찾기
print(re.findall(r'123', ss)) # ['123']
print(re.findall(r'가나', ss)) # ['가나']
# 문자 클래스 및 반복 관련 메타문자 사용
print(re.findall(r'[1,2,5]+', ss)) # ['1', '2', '5', '555']
print(re.findall(r'[0-9]+', ss)) # ['1234', '123555', '6']
# 특수문자 활용
print(re.findall(r'\d+', ss)) # ['1234', '123555', '6']
print(re.findall(r'\D+', ss)) # [' abc 가나다abcABC_', '_', 'python is fun']
# 특정 횟수만큼 반복
print(re.findall(r'[0-9]{2}', ss)) # ['12', '35']
print(re.findall(r'[0-9]{2,3}', ss)) # ['123', '555']
# 문자열 시작 및 끝 패턴
print(re.findall(r'^1234', ss)) # ['1234']
print(re.findall(r'만세$', ss)) # []
# 다중 라인에서 시작부터 끝까지 찾기
s = '''My name is tom.
I am happy'''
p = re.compile('^.+', re.MULTILINE)
print(p.findall(s)) # ['My name is tom.', 'I am happy']