[Pandas] 정규표현식 (str.extract, str.contains)

hhs012·2022년 1월 14일
1

Python

목록 보기
2/2

1. 정규표현식

특정한 규칙을 가진 문자열을 검색하거나 치환하기 위해 사용된다.

메타문자 (Meta characters)

메타문자란 원래 그 문자가 가진 뜻이 아닌, 특별한 용도로 사용되는 문자이다.

. ^ $ * + ? { } [ ] \ | ( )

-대표적으로 [ ] 문자 클래스가 있다. 대괄호 [ ]는 대괄호 안에 포함된 문자들 중 하나와 매치를 뜻한다.

[abc] : abc 중 하나와 매치
'a': a와 매치
'boy': b와 매치
'edf' : a,b,c 중 어느 문자와도 매치되지 않는다. 

-[ ]안에 두 문자 - 를 사용하면 두 문자 사이의 범위를 말한다.

[a-c]: [abc]와 같다
[0-3]: [0123]과 같다
[a-zA-Z] : 알파벳 모두
[0-9] : 숫자

-문자 클래스 안에 ^ 메타 문자를 사용할 경우에는 반대(not)의 의미를 갖는다.

[^0-9]: 숫자가 아닌 문자만 매치

-*앞의 문자를 0번 이상 반복는 것을 의미한다.

-+앞의 문자를 1번 이상 반복하는 것을 의미한다.

-?앞의 문자를 0번 or 1번 반복하는 것을 의미한다.

-.1글자(문자) 있다는 것을 의미한다.

-{3,5}3이상 5이하 반복하는 것을 의미한다.

🔴 자주 사용하는 문자 클래스

  • [0-9] : 숫자
  • [a-zA-Z] : 알파벳 모두
  • \d: 숫자와 매치, [0-9]와 동일한 표현식
  • \D: 숫자 아닌 것과 매치, [^0-9]와 동일한 표현식
  • \s: whitespace문자와 매치, [ \t\n\r\f\v]와 동일한 표현식. 맨 앞의 빈칸은 공백문자를 의미
  • \S: whitespace문자가 아닌 것과 매치, [^ \t\n\r\f\v]와 동일한 표현식
  • \w: 문자+숫자와 매치, [a-zA-Z0-9_]와 동일한 표현식
  • \W: 문자+숫자가 아닌 문자와 매치, [^a-zA-Z0-9_]와 동일한 표현식
  • ^…$ : Starts and ends

이외에도 여러 메타 문자가 있는데, 아래 링크를 참고하면 된다.
https://wikidocs.net/4308


1) str.extract

df.Name.str.extract(' ([a-zA-Z]+)\.')
# Dot(.) 메타 문자는 줄바꿈 문자인 \n을 제외한 모든 문자와 매치됨

extract함수 안에 있는 정규식에서는 중괄호 ([a-zA-Z]+)부분이 추출된다.
그렇다면, (' ([a-zA-Z]+).')는 무슨 뜻일까?

띄어쓰기로 시작해 모든 알파벳이 포함된 문자열을 한 번이상 반복하다가 dot(.)으로 마무리하는 문자열이다. 따라서 Mr,Miss 등 영어 호칭이 추출된다.

2) str.contains

str.contains()를 통해 지정한 문자열이 포함되어 있는지 확인할 수 있다. 검색 문자열이 포함되어 있는 경우에는 True, 아닌 경우에는 False를 반환한다.

df.name.str.contains('(Mr)') #Mr가 포함된 행 확인

#Mr가 포함된 행이 몇 개인지 궁금하다면?
len(df.name.str.contains('(Mr)'))

0개의 댓글