[SK shiedlus Rookies 23]Python(5-2)_24.10.21

박소민·2024년 11월 1일

Python

목록 보기
13/23

정규식 (정규표현식)

개요

  • 대상 데이터 : 문자열 데이터/str
  • 용도 : 데이터 정제과정(데이터 클리닝의 과정)
  • 절차
    • 재료 : 문자열 데이터 + 작업내용(요구사항) 파악 + 정규식
    • 정규식 구성 -> 문자열 주입 -> 원하는 데이터만 추출(혹은 정제)

메인 패키지

Ex >

import re

정규식 항목 요약

메타 문자

  • 일반형 ➔ |, ^, $, *, +, ?, {}, (), [], -, ..

| = or, ~ 이거나 ~

[] = 문자 (클레스) 1개를 대변한다

  • [ 어떤 문자도 올 수 있다 ]
  • wt.여러 문자를 표현 ➤ 나열
ex) [a-z0-9A-Z]
  • wt.문자를 여러번 등장 ➤ *, +(와일드카드)를 붙이면 된다
    <*> 0 ~ 무한대 반복
    <+> 1 ~ 무한대 반복
ex) [a]*, [a]+

- [하이픈] = 문자 클레스 내, ([ .. ]) 두문자 사이의 범위를 표현

  • 문자는 "ascii코드" or "utf-8 인코딩" 해석
    ➔ 수치값을 가진다
  1. utf-8 (완성형 코드) / Ex> 한글 = 자음 + 모음 + 완성글자
자음 : ㄱ ~ ㅎ
모음 : ㅏ ~ ㅣ
완성글자 : 가 ~ 힣   ➔ ∴ 완성형 한글 범위 : ㄱ-힣
  1. ascii
영소 : a-z

.

  1. .[]의 바깥쪽에 사용할 때
    -모든 문자를 대표
             (*예외. \n:줄바뀜기호)
  2. [.] 문자 클레스 내부에 사용할 때
    -.이라는 문자 1개를 표현 (즉, 스스로 자기 자신 표현)

✅결론 >사용위치에 따라 해석이 다름 ⛔

Ex-1> [ . ]
Ex-2> .[ ]

^ [윗꺽쇠/서컴플렉스]

  1. [^문자] : 해당 문자를 배제(제외)하고
ex) [^a-zA-z]* : 알파벳(대소) "제외한 모든 문자" + 0~"무한대로" 올 수 있다

-re.sub()와 주로 같이 사용됨
^[문자]: match()와 맥락유사

ex ) 컴파일 옵션

Ex > [^문자]

$ [달러/달러사인]

  1. [ ]$ (문자열의 맨끝과 일치)
    -의미: ≠ ^(시작)

Ex-1>

                      🔽🔽🔽


non-match 해결> ^[0-9]+[a-z]+$

+, *

  1. +: + 바로 앞의 문자가 1 ~ 무한대 반복등장 가능
  2. *: * 바로 앞의 문자가 0 ~ 무한대 반복등장 가능

Ex-1 > + : 한번 또는 무한대 등장
Ex-1-1 >
Ex-2 > *
Ex-2-1 >

{} = 반복 횟수 지정 표현

  • 특정 문자가 몇번 반복되는가? -> 지정
    🔸ex. [ a{3} ]
    -문자 클레스내, 사용 X
    🔸ex. [ a ]{3} = a{3}
    -a라는 문자가 3번 반복
  • 내부 뛰어쓰기 주의 (사용 x)
           {3} : 3회 반복
           {2,3} : 2~3회 반복
         ⛔{2, 3} : 작동 X, 오류남

Ex> {2}

Ex> {2,3}

?

  • 해당 문자가 0회 or 1회 등장
         ⤷  (즉, 나오거나 안나오거나)

Ex >


⭐ 최종실습 ⭐ : 핸드폰 번호 정규식 생성

  • 규칙

    • xxx-xxxx-xxxx
    • xxx-xxx-xxxx
    • x : 0-9
    • 강제 규정
      • 시작문자(^) 맨앞에 xxx는 010으로 고정
      • 끝문자($) 0-9 문자로 4개
      • 가운데문자 0-9 문자로 3, 4개 나올수 있다
  • 언급되지 않는 조건은 가정

Answer>

0개의 댓글