정규표현식은 규칙을 가진 문자열을 표현하는 방법이다.
정규표현식은
1. 문자열이 정해진 규칙에 맞는지 판단할 때
2. 복잡한 문자열 속에서 특정 규칙으로 된 문자열을 검색한 뒤 추출하거나 바꿀 때 사용한다.
예를들어, 이메일이나 비밀번호 등의 유효성 검사를 할 때 정규표현식을 이용한다.
해당 문자열로 시작하고 끝나는가
^'문자열' : 해당 문자열로 시작하는가
'문자열'$ : 해당 문자열로 끝나는가
match와 search?
* match : 문자열의 처음부터 매칭되는지 판단
[]
- [] 안에 숫자나 문자 범위를 넣는다
*, + (0개 이상, 1개 이상)
- * 대괄호 안에 설정한 범위에 해당하는 문자(혹은 숫자)가 0개 이상 있는지
문자가 한 개만 있는지 판단할 때
* ? : 문자가 0개나 1개 인지 판단
개수를 판단할 때
- h{3} : h가 3개 있는지 판단하는 정규식
특정 범위의 숫자가 몇 개 있는지
- 예를 들어 [0-9]{3}-[0-9]{4}-[0-9]{4}는 휴대전화 형식에 맞는지 검증하는 식
- 이렇게도 활용 가능
- 문자{시작개수, 끝개수}
- 문자열{시작개수, 끝개수}
- [0-9]{시작개수, 끝개수}
* n 이상 : {n,}
특정 문자 범위에 해당되지 않는지 판단할 때는 : ^
- [^범위]* : '범위'를 제외한 모든 문자가 0개 이상 있는지
- [^범위]+ : '범위'를 제외한 모든 문자가 1개 이상 있는지
다음에 계속...
정규표현식... 아직 너무 낯설고
저 개수 규칙을 빼먹고 쓰면 안된다는 것도 오류를 겪으며 알았고
패스워드 검증은 어떻게 돌아가는건지 아직 모르겠다
전방탐색...인건가...
공부해서 정리하도록 하겠습니다!
EMAIL_RE = r'^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
PASSWORD_RE = r'^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$'