#14 정규식-1

박종규·2021년 7월 24일
1

TIL

목록 보기
15/22

정규식을 사용하는 이유

정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식언어이다.
복잡하게 주어진 문자열에서 특정 형식을 찾아내고 그룹핑하며 교체도 가능하다.

ex) 이메일 주소가 ㅁ@ㅁ.ㅁ 형식으로 구성되어있는지,
비밀번호가 8자리 이상이고 문자, 숫자 등의 1개 이상 포함되어 있는지

re 모듈 사용

p = re.compile(r"\d")
print(p.search("whereisnumb3r"))

예시는 문장에서 숫자를 찾는 방법이다.

컴파일 한 내용을 여러 번 사용할 경우, 위와 같이 변수를 사용하는게 적합하지만
대부분의 경우, 아래와 같이 한줄로 표현하는 것이 깔끔해보인다.

print(re.search(r"\d","whereisnumb3r"))

True 면 정규표현식 매치 객체가 반환되지만,
False면 아무 것도 반환되지 않는다. (is None)

함수의 종류

re.match("패턴", "문자열")           : 문자열 처음부터 패턴이 매칭되면 매치 객체로 반환함
re.search("패턴", "문자열")          : 문자열 내 어디서든 패턴이 매칭되면 매치 객체로 반환함
re.findall("패턴", "문자열")	  : 해당 패턴에 매칭되는 모든 것을 리스트로 반환함
re.sub("패턴", "바꿀문자열", "문자열")  : 문자열 내 패턴이 매칭되면 바꿀문자열로 변환해서 반환함

패턴

Password Validation (숫자,소문자,대문자 포함 및 8자리 이상)
re.match(r"^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$", 문자열)

Email Validation (ㅁ@ㅁ.ㅁ 형식으로 구성되어있는지)
re.match(r"^[a-zA-Z0-9+._-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9-.]{2,4}$", 문자열)

패턴 작성 방식

파이썬 정규식은 r"정규식" 형식으로 작성한다.
^A : 특정 문자열이 맨 앞에 오는지 판단함
A$ : 특정 문자열이 맨 뒤에 오는지 판단함

[] 대괄호 내에 있을 경우, 안에 있는 문자가 하나라도 있는지 판단함
[a-zA-Z0-9] 같이 -를 이용해서 묶을 수 있음

(?=표현식)  : 전방탐색, 특정한 문자 앞에 일치하는 문자만 찾는다.
(?<=표현식) : 후방탐색, 특정한 문자 뒤에 일치하는 문자만 찾는다.

\d는 모든 숫자를 의미한다.
\.은 .을 의미

.는 모든 글자를 의미하고,
*는 패턴 앞에 문자가 없을 수도, 있을 수도 있다는 의미이다.

{숫자,숫자} : 해당 문자열의 개수를 판단한다. {숫자,} 또는 {,숫자} 형태로도 사용가능.

Password Validation 해석해보기

(?=.*[A-Za-z])

해당 문자열에 대소문자 알파벳이 하나 이상 있는지

(?=.*\d) 

해당 문자열에 숫자가 하나 이상 있는지

(?=.*[$@$!%*#?&]) 

해당 문자열에 @@!%*#?& 개 이상 포함되어있는지를 검사해본다.

[A-Za-z\d$@$!%*#?&]{8,}

모두 있을 경우, 상기 문자들로 이루어져 있는지, 8글자 이상인지를 판별한다.

상기 조건을 모두 만족할 경우, 매치객체를 반환하고 그렇지 않을 경우 None이다.

Email Validation 해석해보기

[a-zA-Z0-9+._-] 

소대문자, 숫자, +._-로 이루어져 있는지

+@[a-zA-Z0-9]

위에 패턴 이후 @가 오고 그 뒤로 소대문자, 숫자로 이루어져 있는지

+\.[a-zA-Z0-9-.]{2,4}

. 이후, 2~4글자로 구성되어있는지 판단한다.

Password와 마찬가지로 해당 내용 만족할 경우 매치객체, 그렇지 않을 경우 None.

이 외에도 더 많은 패턴 표현방식이 있다.
이후에도 블로깅해서 정리할 예정

(참고 - https://regexr.com/ , https://dojang.io/)

2개의 댓글

comment-user-thumbnail
2021년 7월 26일

👍🏼👍🏼👍🏼 유익한 포스트 감사합니다

1개의 답글