TJ_Log
[Python] 정규식 (문자열 처리) - 자주 사용하는 정규식 본문
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 |
---|