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']