파이썬 정규식

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}$
URLhttps?://[\w./-]+