ASAC 6기/Python 기본

[Python 기본] 정규식

helena1129 2024. 8. 18. 15:26

정규식(정규표현식)이란?

- 문자열에서 내가 원하는 패턴을 찾는 규칙

- 파이썬에서는 re 패키지를 활용

import re

 

정규식의 규칙으로 작성된 문자열 vs. 쌩 파이썬의 문자열

'hello. 100$'
r'hello. 100$'
# -> 일반 문자열 앞에 r을 추가

 

자주 사용되는 정규식

* 앞에 오는 문자가 0개 이상 올 때 매치 [0-9]*
+ 앞에 오는 문자가 1개 이상 올 때 매치 [0-9]+
? 앞에 오는 문자가 없거나 하나 있을 때 매치 [0-9]?
[문자들] 대괄호 안 문자들 중 하나와 매치 [Pp]ython
[n-m] 두 문자 사이의 범위 [0-9] # 숫자
[a-zA-z] # 모든 알파벳
\d == [0-9] 숫자 1자리  
[^n-m] 두 문자 사이의 범위 제외 [^0-9] # 숫자를 제외한 문자만
[^abc] # abc를 제외한 모든 문자
. 줄바꿈을 제외한 모든 문자와 매치 a.b
{m,n} 앞에 오는 문자가 m~n 반복될 때 매치 lo{3,5}l
| 어느 하나와 매치 a|b|c
^ 뒤에 오는 문자로 시작되면 매치 ^a
$ 앞에 오는 문자로 끝나면 매치 a$

 

re.findall(규칙,위치)을 사용한 예시

# 숫자만 뽑기
import re
example = 'theboyisridingaskate05-08'
re.findall(r'[0-9]+',example)
# ['05', '08']
# t,b,s 뽑기
import re
example = 'theboyisridingaskate05-08'
re.findall(r'[tbs]',example)
['t', 'b', 's', 's', 't']
# 1자리 숫자 뽑기
import re
example = 'theboyisridingaskate05-08'
re.findall(r'\d',example)
# ['0', '5', '0', '8']
# 알파벳 제외하고 뽑기
import re
example = 'theboyisridingaskate05-08'
re.findall(r'[^a-zA-z]',example)
# ['0', '5', '-', '0', '8']
import re
example = 'lolloollooolloooolloooool'
re.findall(r'lo{2,4}l',example)
# ['lool', 'loool', 'looool']