요약

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

참고사이트