[python]정규표현식(regular expression, re)[1/3] (수정중)

김은지·2022년 2월 20일
0

메모 및 노트

목록 보기
19/22

정의 및 쓰임

정규표현식은 규칙을 가진 문자열을 표현하는 방법이다.
정규표현식은
1. 문자열이 정해진 규칙에 맞는지 판단할 때
2. 복잡한 문자열 속에서 특정 규칙으로 된 문자열을 검색한 뒤 추출하거나 바꿀 때 사용한다.
예를들어, 이메일이나 비밀번호 등의 유효성 검사를 할 때 정규표현식을 이용한다.

문자열 판단하기!

  • re 모듈을 import해서 사용
  • match, search, findall, finditer를 사용하여 판단!
  • 각 함수의 return
    - match, search : 검색결과가 있으면 match object, 없으면 None
    • findall : 결과에 맞는 문자열을 [리스트]에 담아서 리턴한다. 없으면 빈 문자열 리턴
    • finditer : iterator object(반복가능한 객체)를 리턴하고 이 객제에는 match object가 담겨 있다!
    • return된 match객채는 group, start, end, span 등의 메서드를 사용할 수 있다

규칙!!

  • 해당 문자열로 시작하고 끝나는가
    ^'문자열' : 해당 문자열로 시작하는가
    '문자열'$ : 해당 문자열로 끝나는가

  • match와 search?
    * match : 문자열의 처음부터 매칭되는지 판단

    • search : 문자열 일부분이 매칭되는지 판단
  • []
    - [] 안에 숫자나 문자 범위를 넣는다

  • *, + (0개 이상, 1개 이상)
    - * 대괄호 안에 설정한 범위에 해당하는 문자(혹은 숫자)가 0개 이상 있는지

    • + 대괄호 안에 설정한 범위에 해당하는 문자(혹은 숫자)가 1개 이상 있는지
  • 문자가 한 개만 있는지 판단할 때
    * ? : 문자가 0개나 1개 인지 판단

    • . : 문자가 1개인지 판단
  • 개수를 판단할 때
    - h{3} : h가 3개 있는지 판단하는 정규식

    • (hello){3} : 'hello'가 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,}$'

0개의 댓글