특정한 규칙을 가진 문자열을 검색하거나 치환하기 위해 사용된다.
메타문자란 원래 그 문자가 가진 뜻이 아닌, 특별한 용도로 사용되는 문자이다.
. ^ $ * + ? { } [ ] \ | ( )
-대표적으로 [ ] 문자 클래스가 있다. 대괄호 [ ]는 대괄호 안에 포함된 문자들 중 하나와 매치를 뜻한다.
[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
df.Name.str.extract(' ([a-zA-Z]+)\.')
# Dot(.) 메타 문자는 줄바꿈 문자인 \n을 제외한 모든 문자와 매치됨
extract함수 안에 있는 정규식에서는 중괄호 ([a-zA-Z]+)부분이 추출된다.
그렇다면, (' ([a-zA-Z]+).')는 무슨 뜻일까?
띄어쓰기로 시작해 모든 알파벳이 포함된 문자열을 한 번이상 반복하다가 dot(.)으로 마무리하는 문자열이다. 따라서 Mr,Miss 등 영어 호칭이 추출된다.
str.contains()를 통해 지정한 문자열이 포함되어 있는지 확인할 수 있다. 검색 문자열이 포함되어 있는 경우에는 True, 아닌 경우에는 False를 반환한다.
df.name.str.contains('(Mr)') #Mr가 포함된 행 확인
#Mr가 포함된 행이 몇 개인지 궁금하다면?
len(df.name.str.contains('(Mr)'))