re 모듈 활용
pandas 활용: str.extract, str.contains
1. 정규표현식 기초
1.1 문자 클래스
자주 사용하는 정규식 의미 \d (=[0-9])숫자와 매치 \D (=[^0-9])숫자가 아닌 문자와 매치 \s공백 문자와 매치 \w (=[a-zA-Z0-9_])문자+숫자와 매치 [a-zA-Z]모든 알파벳 [가-힣]모든 한글
1.2 메타문자
표현식 설명 예시 매칭 .줄바꿈 제외 모든 문자 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
2. re 모듈 활용
2.1 기본 메서드
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']
2.2 컴파일 옵션
옵션 설명 re.DOTALL줄바꿈 포함 모든 문자와 매치 re.IGNORECASE대소문자 무관 매치 re.MULTILINE여러 줄과 매치
3. pandas 형식
# str.extract(): 조건 만족하는 경우만 추출
df[ 'new' ] = df[ 'col' ].str.extract( r ' (\d + - \d {2}+| \d {3} \+ ) ' )
# str.contains(): 조건 만족하는 행 필터링
df[df[ 'col' ].str.contains( r ' ( day ) ' )]
4. 활용
대괄호: r'\s*\[.*?\]'
중괄호: r'\s*\{.*?\}'
소괄호: r'\s*\(.*?\)'