TIL 정규표현식(Regular Expressions)

finelinefe·2020년 10월 28일
0

PYTHON

목록 보기
6/6

정규표현식

복잡한 문자열을 처리할 때 사용하는 기법으로, 파이썬만의 고유 문법이 아니라 문자열을 처리하는 모든 곳에서 사용한다.

([^\s]+(\.(?i)(jpg|png|gif|bmp))$)

// 정규표현식 해석

(            # 그룹 1의 시작
  [^\s]+     #   공백을 제외한 하나 또는 그 이상의 문자열이 존재하여야 한다는 조건
    (        #     그룹 2의 시작
      \.     #       '.' 문자
      (?i)   #       이후의 문자들에 대해서 대/소문자를 무시
      (      #       그룹 3의 시작
        jpg  #         'jpg' 문자 포함
        |    #         또는
        png  #         'png' 문자 포함
        |    #         또는
        gif  #         'gif' 문자 포함
        |    #         또는
        bmp  #         'bmp' 문자 포함
      )      #       그룹 3의 종료
    )        #     그룹 2의 종료 
  $          #   문자열 종료
)       

메타문자

. ^ $ * + ? {} [] | \ ()   :   정규표현식에서 사용하는 메타문자

정규표현식을 사용하기 이전에는 시작과 끝을 나타내는 문자가 다른 것을 몰랐는데 사용되는 표를 보니 간단하고 효율적으로 작성하기 위해서 왜 이것을 사용하는지 알게 됐다 😊


❗️ 자주 사용하는 문자클래스

  • \d : 숫자와 매치, [0-9]와 동일한 표현식이다.

  • \D : 숫자가 아닌 것과 매치, [^0-9]와 동일한 표현식이다.

  • \s : whitespace 문자(space나 tab처럼 공백을 표현하는 문자)와 매치, [ \t\n\r\f\v] 와 동일한 표현식이다. 맨 앞의 빈칸은 공백 문자(space)를 의미한다.

  • \S : whitespace 문자가 아닌 것과 매치, [^ \t\n\r\f\v] 와 동일한 표현식이다.

  • \w : 문자+숫자(alphanumeric)와 매치, [a-zA-Z0-9_] 와 동일한 표현식이다.

  • \W : 문자+숫자(alphanumeric)가 아닌 문자와 매치, [^a-zA-Z0-9_]와 동일한 표현식이다


❗️ 정규식을 사용한 문자열 검색 메소드 종류

  • match() : 문자열의 처음부터 정규식과 매치되는지 조사한다.

  • search() : 문자열 전체를 검색하여 정규식과 매치되는지 조사한다.

  • findall() : 정규식과 매치되는 모든 문자열(substring)을 리스트로 돌려준다.

  • finditer() : 정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체로 돌려준다.


비밀번호와 관련된 정규식 정리


 ** 특수문자, 문자, 숫자 포함 형태의 8~15자리 이내의 암호 조건일 때
^.*(?=^.{8,16}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&+=]).*$


** 숫자와 문자 포함 형태의 6~12자리 이내의 암호 조건일 때
^[A-Za-z0-9]{6,12}$;


** 시작을 숫자 3개로하며 중간에 하이픈 -  하나 존재 숫자가 3~4개 존재하며 하이픈 하나 존재 숫자 4개로 끝남 
전화번호 - /^\d{3}-\d{3,4}-\d{4}$/


** 핸드폰번호 01로 시작하며 그 후에 0,1,6,7,8,9 중에 하나가 나올수도 있으며 하이픈 - 하나 존재할수도 있으며 숫자 3~4개 이어지고 - 하나 존재할수도 있으며 숫자 4개가 이어짐
핸드폰 번호 - /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/


❗️ ^ 기호 유의사항

일반적으로 시작기호로 ^가 앞에 붙지만 [^~] 처럼 문자 클래스 안에서부터 시작하는 경우는 NOT 의미를 가진다. 예를 들어 [^0-9] 인 경우 숫자가 아닌 문자만 매칭된다(0-9 모든 숫자가 아닌 것)


그외 정규식 내용 작성 참고 관련 벨로그 및 다른 사이트

정규식테스트사이트
정규식 블로그
파이썬 정규표현식 사용법 블로그
파이썬 정규표현식 모듈 블로그
정규표현식 벨로그
정규표현식 블로그
HAMA 블로그
예제 블로그

profile
Backend Developer

0개의 댓글