1. 정규 표현식 (RE : Regular Expression)
정규 표현식은 특정한 규칙을 가진 문자열 패턴을 사용하는 방식이다.
데이터 전처리에 있어서 텍스트에서 특정 문자열을 검색, 치환, 제거할 때 사용한다.
예를들어 정제되지 않은 데이터에서 특정 데이터만 뽑아낸다던가, 웹페이지에서 전화번호 , 이메일 발췌, 특정 에러메세지를 찾을 때 사용한다.
2. 정규 표현식 사용
파이썬에서 정규표현식을 사용하기 위해서는 re을 import 해야한다.
re.compile(" ")은 정규식 객체를 리턴해준다.
정규식에서는 숫자를 의미하는 기호로 \d 를 사용한다. (d는 digit을 의미함. 0~9)
예를들어, 전화번호 패턴은 \d\d\d-\d\d\d-\d\d\d\d 가 된다.
이와 같은 문자를 메타 문자라고 한다.
파이썬의 예약어(for,int,..)와 비슷한 문자라고 생각하면 된다.
여기서 \ (백슬래시)를 붙이고 다음 나오는 문자는 한 글자와 매칭된다.
^ | 이 패턴으로 시작해야 함 | ^abc : abc로 시작해야 함 (abcd, abc12 등) |
$ | 이 패턴으로 종료되어야 함 | xyz$ : xyz로 종료되어야 함 (123xyz, strxyz 등) |
[문자들] | 문자들 중에 하나이어야 함. 가능한 문자들의 집합을 정의함. | [Pp]ython : "Python" 혹은 "python" |
[^문자들] | [문자들]의 반대로 피해야할 문자들의 집합을 정의함. | [^aeiou] : 소문자 모음이 아닌 문자들 |
| | 두 패턴 중 하나이어야 함 (OR 기능) | a | b : a 또는 b 이어야 함 |
? | 앞 패턴이 없거나 하나이어야 함 (Optional 패턴을 정의할 때 사용) | \d? : 숫자가 하나 있거나 없어야 함 |
+ | 앞 패턴이 하나 이상이어야 함 | \d+ : 숫자가 하나 이상이어야 함 |
* | 앞 패턴이 0개 이상이어야 함 | \d* : 숫자가 없거나 하나 이상이어야 함 |
패턴{n} | 앞 패턴이 n번 반복해서 나타나는 경우 | \d{3} : 숫자가 3개 있어야 함 |
패턴{n, m} | 앞 패턴이 최소 n번, 최대 m 번 반복해서 나타나는 경우 (n 또는 m 은 생략 가능) | \d{3,5} : 숫자가 3개, 4개 혹은 5개 있어야 함 |
\d | 숫자 0 ~ 9 | \d\d\d : 0 ~ 9 범위의 숫자가 3개를 의미 (123, 000 등) |
\w | 문자를 의미(영어대소문자, 숫자 0-9, 언더바 '_' 를 포함. | \w\w\w : 문자가 3개를 의미 (xyz, ABC 등) |
\s | 공백을 의미하는데, ['\t' , '\n' , '\r'. '\f'] 와 동일 | \s\s : 화이트 스페이스 문자 2개 의미 (\r\n, \t\t 등) |
. | 뉴라인(\n) 을 제외한 모든 문자를 의미 | .{3} : 문자 3개 (F15, 0x0 등) |
[] : 대괄호
대괄호 사이에 원하는 문자를 여러 개 넣으면, 문자열이 넣은 문자 중 하나와 일치하면 매칭이 된다. (OR 개념)
즉, 대괄호 안에 있는 문자 중 하나만 일치해도 된다는 뜻.
대괄호 안에서 . * + 는 하나의 문자가 된다.
^ : 캐릿
대괄호 앞에 ^이 들어가면 대괄호의 내용과 반대되는것을 반환함.
예를들어 ^[0-9] 면 숫자가 아닌것을 반환함.
. : 마침표 : 모든 문자와 일치
모든 문자와 일치하는 (개행을 제외) 정규표현식이다.
단, [] 안에 들어가 있다면 하나의 . 로 취급한다. (주의)
3. 정규식 그룹
() 괄호로 그룹을 묶을 수 있다. 예를들어 (\d)-(\d-\d) 으로 묶었다면 group(1)은 \d , group(2)는 \d-\d가 된다.
4. 그외 정규식
re.match('패턴','검사하려는 문자열') : 문자열의 처음부터 패턴 일치 여부 확인
re.search : 처음부터가 아니라 중간에 있어도 상관 없음.
re.findall : 문자열 중 패턴과 일치되는 모든 부분 찾기.
'데이터 처리 > 데이터 처리' 카테고리의 다른 글
프로그래머스 고득점 SQL 문법 총 정리 (0) | 2020.11.10 |
---|---|
네이버 웹 이미지 크롤링(Crawling)하기. (0) | 2020.07.08 |
파이썬 | 정규표현식 (re) re.compile 사용을 위한 표현법 정리 OR(|), *, + , ?, {} (0) | 2020.06.24 |
데이터 처리 | 파이썬으로 엑셀 파일 읽어서 출력하기 (2) | 2020.06.22 |