파이썬 정규식
import re
# 예시 문자열
s = "안녕하세요! Hello, World! 123😊"
re
모듈 주요 함수
함수 | 설명 |
---|
re.match() | 문자열의 처음부터 정규식과 매치되는지 검사 |
re.search() | 문자열 전체에서 정규식과 매치되는 첫 부분을 검색 |
re.findall() | 정규식과 매치되는 모든 부분을 리스트로 반환 |
re.finditer() | 정규식과 매치되는 모든 Match 객체를 반복자로 반환 |
re.sub() | 정규식과 매치되는 부분을 다른 문자열로 치환 |
re.sub()
re.sub(pattern, repl, string)
- 정규표현식 패턴
pattern
에 맞는 부분을 repl
로 바꿔주는 함수
- repl이 ’ ’ 이라면 해당 패턴에 맞는 것을 삭제하겠다는 의미
정규식 패턴 문법
패턴 | 의미 |
---|
. | 임의의 한 문자 (개행 제외) |
^ | 문자열의 시작 |
$ | 문자열의 끝 |
* | 앞 문자가 0번 이상 반복 |
+ | 앞 문자가 1번 이상 반복 |
? | 앞 문자가 0번 또는 1번만 나옴 |
{n} | n번 반복 |
{n,} | n번 이상 반복 |
{n,m} | n번 이상 m번 이하 반복 |
[] | 문자 집합 |
[^ ] | 부정 문자 집합 |
\d | 숫자 (0~9) |
\D | 숫자가 아닌 문자 |
\s | 공백 문자 (스페이스, 탭 등) |
\S | 공백이 아닌 문자 |
\w | 문자 + 숫자 + 밑줄 ([a-zA-Z0-9_] ) |
\W | \w 가 아닌 것 |
문자열 필터링 정규식 정리
[^ ... ]
: 괄호 안에 있는 것들을 제외한 문자들, 즉 “부정”을 의미
포함할 문자 종류 | 정규식 패턴 | 설명 |
---|
소문자, 숫자만 | [^a-z0-9] | 소문자(az)와 숫자(09) 제외한 문자 제거 |
대소문자, 숫자 | [^a-zA-Z0-9] | 대소문자(az, AZ)와 숫자만 남김 |
한글만 | [^가-힣] | 한글(가~힣) 외 모두 제거 |
한글 + 숫자 | [^가-힣0-9] | 한글과 숫자만 남김 |
한글 + 영문 + 숫자 | [^가-힣a-zA-Z0-9] | 한글, 영어 대소문자, 숫자만 남김 |
사용 예시
# 한글, 영문, 숫자만 남기기
filtered = re.sub('[^가-힣a-zA-Z0-9]', '', s)
print(filtered)
출력 결과
안녕하세요HelloWorld123
자주 쓰이는 패턴
목적 | 정규식 |
---|
숫자만 | ^\d+$ |
알파벳만 | ^[a-zA-Z]+$ |
한글만 | ^[가-힣]+$ |
영문자 + 숫자 | ^[a-zA-Z0-9]+$ |
이메일 주소 | ^[\w\.-]+@[\w\.-]+\.\w{2,4}$ |
URL | https?://[\w./-]+ |