re 모듈 활용
pandas 활용: str.extract, str.contains
정규표현식 기초
문자 클래스
자주 사용하는 정규식 의미 \d (=[0-9])숫자와 매치 \D (=[^0-9])숫자가 아닌 문자와 매치 \s공백 문자와 매치 \w (=[a-zA-Z0-9_])문자+숫자와 매치 [a-zA-Z]모든 알파벳 [가-힣]모든 한글
메타문자
표현식 설명 예시 매칭 .줄바꿈 제외 모든 문자 a.ba + 모든문자 + b ^문자열의 시작 ^aa로 시작 $문자열의 끝 a$a로 끝남 *0회 이상 반복 ca*tct, cat, caaaat +1번 이상 반복 ca+tcat, caaaat ?0번 또는 1번 ab?cac, abc |둘 중 하나 a|ba 또는 b ()그룹으로 묶음 (ab)+cabc, ababc
re 모듈 활용
기본 메서드
Method 설명 match()문자열 처음부터 매치 조사 search()문자열 전체에서 매치 조사 findall()매치되는 모든 문자열을 리스트로 반환 finditer()매치되는 모든 문자열을 반복 가능한 객체로 반환
import re
pattern = re . compile ( "[a-z]+" )
match1 = pattern . match ( '3 python' ) # None
match2 = pattern . search ( '3 python' ) # 'python'
match3 = pattern . findall ( 'life is short' ) # ['life', 'is', 'short']
컴파일 옵션
옵션 설명 re.DOTALL줄바꿈 포함 모든 문자와 매치 re.IGNORECASE대소문자 무관 매치 re.MULTILINE여러 줄과 매치
pandas 형식
# str.extract(): 조건 만족하는 경우만 추출
df [ ' new ' ] = df [ ' col ' ]. str . extract ( r ' ( \d + - \d {2}+| \d {3} \+ ) ' )
# str.contains(): 조건 만족하는 행 필터링
df [ df [ ' col ' ]. str . contains ( r ' ( day ) ' )]
활용
대괄호: r'\s*\[.*?\]'
중괄호: r'\s*\{.*?\}'
소괄호: r'\s*\(.*?\)'