TJ_Log

[Python] 정규식 (문자열 처리) - 자주 사용하는 정규식 본문

STUDY/Python

[Python] 정규식 (문자열 처리) - 자주 사용하는 정규식

PTJ 2022. 5. 29. 14:43

1. re 사용 패턴

패턴 문자 의미
. 줄바꿈 문자를 제외한 1글자를 의미
^ 문자열의 시작을 의미. 또는 not의 의미.
$ 문자열의 끝을 의미
[] 문자의 집합

e.g.
[xyz] 라고 패턴을 적게되면 x또는 y또는 z라는 문자와 매칭됨.
[x-z] : 이렇게 범위로도 적을 수 있음.
[^a] : a를 제외한 모든 문자를 의미.
| or의 의미

e.g.
a|b : a 또는 b문자를 의미
() 어떤 정규식을 하나의 그룹으로 묶어줌

e.g.
([a-c])([x-z]) : a, b, c와 매칭될 수 있는 그룹 1개와 x, y, z와 매칭될 수 있는 그룹을 의미.

ax, az, by 등은 위 패턴과 매칭됨.

만약 괄호라는 문자 자체를 매칭하고싶으면 \(, \) 등으로 백슬래쉬를 이용한 escape를 해줘야 함.
* 어떤 문자건 0회 이상 반복되는 패턴을 나타냄

e.g.
a* : a가 0번 이상 반복되는 패턴을 나타냄
+ 어떤 문자건 1회 이상 반복되는 패턴을 나타냄

e.g.
a+ : a가 1번 이상 반복되는 패턴을 나타냄
? 어떤 문자가 0회 또는 1회 반복되는 패턴을 나타냄


e.g.
a? : a가 0번 또는 1번 존재하는 패턴을 나타냄
{n} 문자가 n회 반복되는 패턴을 나타냄

e.g.
whi{3}te : whiiite를 의미
{m, n} 문자가 m회 ~ n회 반복되는 패턴을 나타냄

e.g.
wh{2, 4}ite : whhite, whhhite, whhhite를 의미
{m,} 문자가 m회부터 무한대까지 반복되는 패턴을 나타냄

e.g.
wh{2,}ite : whhite, whhhite, whhhhite, whhhhite, .... 등을 나타냄
\w Unicode = 숫자, underscore(_)를 포함하는 모든 언어의 표현가능한 문자.
ASCII = underscore(_)를 포함한 문자 = [a-zA-Z0-9_]와 동일
\W Unicode = 숫자, underscore(_)를 포함하는 모든 언어의 표현가능한 문자를 제외한 나머지 문자
ASCII = underscore(_)를 포함한 문자를 제외한 나머지 문자 = [^a-zA-Z0-9_]와 동일
\d Unicode = 0~9의 숫자를 포함한 모든 숫자
ASCII = [0-9]와 동일
\D Unicode = 0~9의 숫자를 제외한 모든 숫자
ASCII = [^0-9]와 동일
\s Unicode = [\t\n\r\f\v]를 포함하는 공백문자
ASCII = [\t\n\r\f\v]와 동일\t = 탭\n = 줄바꿈\r = 캐리지 리턴\f = 폼피드\v = 수직 탭
\S Unicode = [\t\n\r\f\v]를 제외한 공백문자
ASCII = [^\t\n\r\f\v]와 동일
\b 단어의 시작과 끝에 존재하는 공백
\B 단어의 시작과 끝이 아닌 곳에 존재하는 공백
\[숫자] 표시된 숫자만큼 일치하는 문자열을 의미
\A 문자열의 시작
\Z 문자열의 끝

 

2. re.sub 사용 예시

  • 문법  (origin_text에서 pattern과 일치한 부분을 change_text로 변경)
re.sub(pattern, change_text, origin_text)
  • 기본 사용1 - 패턴을 찾고 변경 
import re

text = '1234abc56'

text_re = re.sub(r'[1-4]', '', text)
print(text_re)

'''
--Result
abc56
'''
  • 기본 사용2 - 패턴을 제외한 문자 제거
import re

text = '1234abc56'

text_re = re.sub(r'[^1-4a-z]', '', text)
print(text_re)

'''
-- Result
1234abc
'''

 

'STUDY > Python' 카테고리의 다른 글

[Python] 파이썬으로 로그 남기기 (Logging 모듈)  (0) 2023.11.01