정규 표현 사용을 위해 re 모듈을 사용한다.
- match(패턴, 문자열, 플래그)
문자열의 앞 부분 패턴이 일치하는지 확인
- search(패턴, 문자열, 플래그)
문자열의 패턴이 일치하는지 확인
- findall()
패턴과 일치하는 부분 리스트로 저장. 길이를 알 수 있음
메타문자 종류
문자 | 의미 |
| | or |
^ | 문자열의 맨 처음과 일치함 |
$ | 문자열의 마지막과 일치함 |
[] | 안에 있는 문자와 매치 |
. | 어떤 문자든 매치(줄바꿈 제외) |
* | *왼쪽의 문자가 0번이상 반복되면 매치 |
+ | *왼쪽의 문자가 1번이상 반복되면 매치 |
{} | 반복 횟수 지정 a{2} a가 2번 반복, a{1,3} a가 1~3번 반복 |
? | ?왼쪽의 문자가 있어도 없어도 매치 |
비밀번호 유효성 검사
import sys
import re
input=sys.stdin.readline
def password(pwd):
if len(pwd)<8:
print('최소 8자 이상')
return False
elif re.search('[0-9]+', pwd) is None:
print('숫자 1개 이상 필요')
return False
elif re.search('[A-Za-z]+', pwd) is None:
print('영어 대소문자 1개 이상 필요')
return False
elif re.search('[`~!@#$%^&*(),./<>?]+', pwd) is None:
print('특수문자 1개 이상 필요')
return False
else:
print('비밀번호 설정 완료')
return True
s=input()
if password(s) ==False:
print('비밀번호 양식에 맞춰 다시 입력')
이메일 양식 검사
import sys
import re
input=sys.stdin.readline
email=input()
if re.search('^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-z]+$',email) is None:
print('잘못된 비밀번호 양식')
else:
print('입력 완료')
전화번호 검사
import sys
import re
input=sys.stdin.readline
phone=input()
# 11자리 숫자인지 확인
if re.search('[0-9]{11}',phone) is None:
print('잘못된 전화번호 양식')
else:
print('입력 완료')
# 000-0000-0000
if re.search('^[0-9]{3}-[0-9]{4}-[0-9]{4}$',phone) is None:
print('잘못된 전화번호 양식')
else:
print('입력 완료')
'알고리즘' 카테고리의 다른 글
[백준 알고리즘] 16170번 오늘의 날짜는?. 파이썬(python)/timedelta (0) | 2022.10.25 |
---|---|
[백준 알고리즘] 2948번 2009년. 파이썬(python/요일 계산하기 (0) | 2022.10.25 |
[백준 알고리즘] 9252번 LCS 2 최장 공통 부분 수열. 파이썬(python) (0) | 2022.10.21 |
[백준 알고리즘] 12865번 평범한 배낭. 파이썬(python)/냅색 knapsack (0) | 2022.10.21 |
[백준 알고리즘] 9251번 LCS 최장 공통 부분 수열. 파이썬(python) (1) | 2022.10.21 |