반응형
문제 소스는 여기에서 참고했습니다.
1. 날짜 표현 탐지하기
DD/MM/YY 형태로 작성된 날짜를 탐지하는 정규표현식을 작성해라
day는 01~31일, month는 01~12월, year은 1000~2999년까지 있다고 가정한다
1, 2, 3 등 숫자 1개의 경우 앞에 0이 붙는다
문제에 나온 것처럼 각종 조건을 대괄호 [] 와 | 를 통해 or 관계를 표시해줬습니다.
2. 강력한 비밀번호 탐지하기
비밀번호 강력한지 확인해라
강력한 기준은 최소 길이가 8 이상이고, 대문자와 소문자를 포함해야 하며, 적어도 하나의 숫자가 있어야 한다
대문자 및 소문자는 모두 영어 기준이다
먼저, 전방탐색 개념을 이용했는데, 이는 조건을 만족하는 것이 있는지 확인하는 과정입니다. 전방탐색 구문운 ?= 로 시작하고 등호 다음에 일치할 텍스트가 오는 하위 표현식입니다. 즉 .*[A-Z]에 일치하는 텍스트가 있니? 라고 질문을 던지며 확인해보자는 것이죠.
위의 과정을 쪼개서 살펴보면 아래와 같은 단계로 나눌 수 있는데요.
(.*[A-Z]) -> 영어 대문자가 나오기 전에 어떠한 것이 와도 매치된다
. -> 모든 문자, 기호, 숫자
* -> 해당 문자, 기호, 숫자가 없거나 하나 이상 있거나
(.*[a-z]) -> 영어 소문자가 나오기 전에 어떠한 것이 와도 매치된다
(.*[a-z]) -> 숫자가 나오기 전에 어떠한 것이 와도 매치된다
.{n,} -> 전에 나온 토큰(패턴에 매치되는 문자열)에 n개 문자열 포함
아래의 경우 .{1}이기 때문에 숫자 뒤에 1개만 더 추가로 하여 매치됩니다. 따라서 처음 발견한 1 그리고 2라는 숫자를 1개 더한 12가 매치되고, 이후 새롭게 시작하는 3과 A라는 문자 1개를 더한 3A가 매치되는 것입니다.
이때 위의 답에서 나온 .{8,} 처럼 , 를 찍어주면 8개 "이상"이라는 뜻입니다. 쉽게 말해, .{8,} 전에 무엇이 매치되든 8개 이상 연속으로 매치되면 된다는 뜻이죠.
728x90
반응형
'문돌이 존버 > 코딩연습' 카테고리의 다른 글
git 기본 지식 쌓기(3) (0) | 2021.09.30 |
---|---|
파이썬 정규표현식(regexp) [], ^, |, 기호(+, ?, ., *) (0) | 2021.03.12 |
파이썬 selenium을 이용한 댓글 크롤링, feat. 네이버 tv (0) | 2021.03.08 |
파이썬 크롤링 requests vs urllib.request 차이는? (0) | 2021.03.08 |
AI가 예측하는 미스트롯2 진선미는 누구? (0) | 2021.03.03 |