Regex
Published:
Regex
서론
미루고 미루고 미뤄왔던 정규표현식 공부를 해보자.
정규표현식(=정규식)은 문자열이 특정 패턴과 일치하는지
검사하는 것이라고 생각하면 된다.
정규표현식은 텍스트 처리를 하는 어느 곳이든지 사용할 수 있다.
어디에 사용되는가?
- 비밀번호, 이메일, 전화번호 등 입력이 형식에 맞는지
- 크롤링 후 텍스트에서 필요한 부분만 추출
- 매칭되는 패턴 찾기(아래 사진처럼)
사실 세 항목 다 문자열이 특정 패턴과 일치하는지
보는 것이며, 본질은 같다.
아래 포스팅은 간단한 예제만 살펴볼 것이고, 정규표현식을 빠르고 쉽게 이해하려면 이 유튜브 영상을 보는걸 강추x100
본론
아래와 같은 요구사항을 정규표현식으로 해결해보자
- 패스워드에
대문자
,소문자
,숫자
,!#%&
를 제외한 다른 어떤 문자도 포함되면 안돼요 - 같은 문자가 4번 이상 연속하면 안돼요
비밀번호 정규식
, 이메일 정규식
등 검색만하면 일반적으로 많이 쓰이는 정규표현식이 나오지만, 위 요구사항처럼 custom한 정규표현식도 쓸 줄 알면 좋다.
첫번째 요구는 텍스트에서 a~z, A~Z, 0~9, !, #, %, & 이외의 글자가 하나라도 있는지 파악해보면 된다.
import re
def is_valid(input_string):
result = True
p = re.compile(r'[^a-zA-Z0-9!#%&]') # 텍스트에서 a~z, A~Z, 0~9, !, #, %, &를 제외한 character를 찾을때 사용
if p.search(input_string):
result = False
return result
두번째 요구도 마찬가지로 정규표현식으로 해결이 가능하다. 여기 참고했음
def is_valid(input_string):
result = True
p = re.compile(r'(.)\1{3,}')
if p.search(input_string):
result = False
return result
# (.) makes group from one char (any char)
# \1{3,} matches three or more characters from 1st group
맺으며
개인적으로 평~~~~~생쓰는 개념이라고 생각하니 꼭 익숙해지자.
Comments