본문 바로가기
파이썬배우기

파이썬 정규 표현식으로 유효성 검사하기

by mydevjournel 2024. 10. 30.
반응형

파이썬 정규 표현식
파이썬 정규 표현식

파이썬 정규 표현식으로 사용자 입력 유효성 검사 마스터하기: 실전 예제와 함께!

정규 표현식은 특정 패턴을 찾고 검증하는 강력한 도구이죠. 파이썬에서 정규 표현식을 사용하면 사용자 입력의 유효성을 검사하고, 데이터의 일관성을 유지하며, 안전한 애플리케이션 개발에 도움이 됩니다.

왜 정규 표현식을 사용해야 할까요?

정규 표현식은 코드를 간결하고 효율적으로 만들어 주는 강력한 기능이에요. 복잡한 문자열 패턴을 쉽게 정의하고 활용할 수 있기 때문에, 다양한 상황에서 유용하게 사용할 수 있답니다.

  • 사용자 입력 검증: 사용자가 잘못된 형식의 데이터를 입력하는 것을 방지하고, 예상되는 데이터만 받아들일 수 있습니다. 예를 들어, 이메일 주소, 전화번호, 비밀번호 등을 검증하는 데 사용할 수 있습니다.
  • 데이터 정제: 텍스트 데이터에서 원하는 정보만 추출하거나, 특정 패턴을 가진 데이터만 필터링할 수 있습니다. 예를 들어, 웹 페이지에서 특정 태그의 내용만 가져오거나, 로그 파일에서 특정 에러 메시지만 추출하는 데 사용할 수 있습니다.
  • 텍스트 처리: 텍스트 파일이나 문자열에서 문자열을 찾고, 바꾸고, 분할하는 등의 다양한 작업을 수행할 수 있습니다. 예를 들어, HTML 문서에서 특정 태그를 찾아 바꾸거나, 문자열에서 특정 단어를 모두 대문자로 바꾸는 데 사용할 수 있습니다.

파이썬에서 정규 표현식 사용하기

파이썬에서 정규 표현식을 사용하려면 re 모듈을 사용해야 합니다. re 모듈은 다양한 정규 표현식 함수를 제공합니다.

기본적인 정규 표현식 문법

정규 표현식은 특정 패턴을 표현하는 특수 문자와 기호들을 사용합니다.

특수 문자 설명 예시
. 임의의 문자 하나 a.c는 "abc", "a1c", "a*c" 등을 매치
* 앞 문자 0개 이상 ab*c는 "ac", "abc", "abbc" 등을 매치
+ 앞 문자 1개 이상 ab+c는 "abc", "abbc" 등을 매치
? 앞 문자 0개 또는 1개 ab?c는 "ac", "abc" 등을 매치
[ ] 문자 집합 [abc]는 "a", "b", "c" 중 하나를 매치
[^ ] 문자 집합 제외 [^abc]는 "a", "b", "c"를 제외한 모든 문자를 매치
^ 문자열 시작 ^abc는 "abc"로 시작하는 문자열을 매치
$ 문자열 끝 abc$는 "abc"로 끝나는 문자열을 매치
\d 숫자 \d+는 하나 이상의 숫자를 매치
\w 문자 또는 숫자 \w+는 하나 이상의 문자 또는 숫자를 매치
\s 공백 \s+는 하나 이상의 공백을 매치

re 모듈 함수

re 모듈은 다양한 정규 표현식 함수를 제공하며, 가장 많이 사용되는 함수는 다음과 같습니다.

  • re.match(pattern, string): 문자열의 처음부터 패턴이 일치하는지 확인합니다.
  • re.search(pattern, string): 문자열 전체에서 어디든 패턴이 일치하는지 확인합니다.
  • re.findall(pattern, string): 문자열에서 패턴과 모든 일치하는 부분을 리스트로 반환합니다.
  • re.sub(pattern, repl, string): 문자열에서 패턴과 일치하는 부분을 repl로 대체합니다.
  • re.compile(pattern): 패턴을 컴파일하여 다시 사용할 수 있도록 합니다.

실제 예제를 통해 알아보기


1, 이메일 주소 유효성 검사

사용자 입력으로 받은 이메일 주소가 올바른 형식인지 확인하는 예제입니다.

python import re

email = input("이메일 주소를 입력하세요: ")

pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$" match = re.match(pattern, email)

if match: print("올바른 이메일 주소입니다.") else: print("잘못된 이메일 주소입니다.")

설명:

  • pattern 변수는 이메일 주소의 유효성 검사를 위한 정규 표현식 패턴입니다.
  • re.match() 함수는 이메일 주소의 처음부터 패턴과 일치하는지 확인합니다.
  • match 변수에는 일치 여부를 나타내는 객체가 저장됩니다.
  • if 문은 일치 여부에 따라 메시지를 출력합니다.


2, 전화번호 유효성 검사

사용자 입력으로 받은 전화번호가 올바른 형식인지 확인하는 예제입니다.

python import re

phone = input("전화번호를 입력하세요: ")

pattern = r"^\d{3}-\d{3}-\d{4}$" match = re.match(pattern, phone)

if match: print("올바른 전화번호입니다.") else: print("잘못된 전화번호입니다.")

설명:

  • pattern 변수는 전화번호 유효성 검사를 위한 정규 표현식 패턴입니다.
  • re.match() 함수는 전화번호가 패턴과 일치하는지 확인합니다.
  • match 변수에는 일치 여부를 나타내는 객체가 저장됩니다.
  • if 문은 일치 여부에 따라 메시지를 출력합니다.


3, 비밀번호 유효성 검사

사용자 입력으로 받은 비밀번호가 특정 조건을 만족하는지 확인하는 예제입니다.

python import re

password = input("비밀번호를 입력하세요: ")

pattern = r"^(?=.[a-z])(?=.[A-Z])(?=.\d)(?=.[@$!%?&])[A-Za-z\d@$!%?&]{8,}$" match = re.match(pattern, password)

if match: print("강력한 비밀번호입니다.") else: print("비밀번호가 약합니다. 다음 조건을 모두 만족하는 비밀번호를 입력하세요.\n" " - 최소 8자리 이상\n" " - 소문자, 대문자, 숫자, 특수 문자 각각 1개 이상 포함")

설명:

  • pattern 변수는 비밀번호 유효성 검사를 위한 정규 표현식 패턴입니다.
  • (?=.*[a-z]): 소문자가 하나 이상 포함되어야 합니다.
  • (?=.*[A-Z]): 대문자가 하나 이상 포함되어야 합니다.
  • (?=.*\d): 숫자가 하나 이상 포함되어야 합니다.
  • (?=.*[@$!%*?&]): 특수 문자가 하나 이상 포함되어야 합니다.
  • [A-Za-z\d@$!%*?&]{8,}: 비밀번호 길이는 8자리 이상이어야 합니다.

정규 표현식 활용 팁


반응형