[python3] 파이썬에서 정규표현식 쓰기

손소·2021년 7월 21일
0

Python

목록 보기
2/6

텍스트 전처리를 할 때 아무래도 제일 힘든 건 정규표현식을 쓰는 게 아닐까 싶다.

이번에 정규표현식을 처음 배웠는데, 생각보다 어려웠다. 배운 걸 정리하는 차원에서 포스팅을 한다.

✔ 정규표현식이란?

정규표현식(regular expression, 간단히 regex)이란 규칙을 가진 문자열의 집합을 표현하는 데 사용되는 형식 언어이다. - wikipedia

정규표현식은 주로 복잡한 문자 패턴을 가진 텍스트를 검색(searching), 대체(replacing), 파싱(parsing)하기 위해 사용된다.

정규표현식을 사용하면 방대한 양의 텍스트를 거듭 반복해서 매우 빠르게 processing이 가능하다.

✔ 메타 문자(Meta Characters)

메타 문자(Meta Characters)는 정규표현식을 제어할 수 있는 문자를 말한다.

메타문자의 종류

메타문자의미메타문자의미
.아무 문자[-]문자의 범위
*0, 1 또는 그 이상[^]제외
+1 또는 그 이상^문자열의 시작
?0 or 1(있거나 없거나)$문자열의 끝
{n}n번 출현( )그룹핑
[ ]check

간단히 메타문자를 표로 정리해봤다.
이제 좀 더 자세히 알아보자.

^x : 문자열이 x로 시작
x$ : 문자열이 x로 끝
.x : x로 끝나는 임의의 한 문자
x+ : x가 한 번 이상 반복
x? : x 있거나 없거나
x* : x가 0번 이상 반복
x|y : x 또는 y 찾기
(x) : ( ) 안의 내용을 캡쳐해 그룹화
(x)(y) : 그룹 여러 개 -> 결과값에 그룹화한 데이터가 배열 형식으로 그룹 번호 순으로 들어감
(x)(?:y) : 캡쳐하지 않는 그룹 -> ?: 사용
x{n} : x를 n번 반복한 문자 찾기
x{n,} : x를 n번 이상 반복한 문자 찾기
x{n,m} : x를 n번 이상 m번 이하 반복한 문자 찾기
\[x,y] : x, y 중 하나 찾기
\[^xy] : x, y를 제외하고 문자 하나를 찾기
\[x-z] : x-z 사이의 문자 중 하나 찾기
\^ : 특수문자를 식에 문자 자체로 포함
\b : 문자와 공백 사이의 문자 찾기
\B : 문자와 공백 사이가 아닌 값 찾기
\d : 숫자 찾기
\D : 숫자가 아닌 값 찾기
\s : 공백 찾기
\S : 공백이 아닌 문자 찾기
\t : tab 문자 찾기
\v : vertical tab 문자 찾기
\w : 알파벳+숫자+\_ 찾기
\W : 알파벳+숫자+\_를 제외한 모든 문자 찾기
?P<tag>: 주석처럼 tag를 달아서 설명할 수 있음

✔ Greedy / Lazy

정규표현식 탐색에는 Greedy와 Lazy 두 방식이 있다.
Greedy한 방식은 가장 마지막 매치를 찾는 것이고,
Lazy한 방식은 가장 첫번째 매치를 찾는 것이다.

ex. regex
# greedy 방식
r.*e -> output: rege
r.*?e -> output: re

기본적으로 정규표현식은 Greedy한 방식으로 탐색을 한다.

Cheat Sheet

정규표현식에 대해 한 장에 모아둔 cheat sheet이다. 정규표현식 사용 시 참고하면 좋을 것 같다.
cheat sheet 출처

0개의 댓글