요약

  • 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*\(.*?\)'

참고사이트