ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [나도 코딩] 웹 스크래핑 5. 정규식 기본 1
    Programing Language/Python 2020. 11. 4. 18:14
    반응형

    웹 스크래핑

    정규식 기본


    이 글은 나도코딩님의 [파이썬 코딩 무료 강의 (활용편3)]을 보고 공부한 내용입니다. 

    1. 정규식 이해하기

    정규식(regular expression)이란?

    • 정해진 형태를 의미
    • 약어로 re라고 함
    • ex1) 주민등록번호의 정규식: 앞 숫자 6 - 뒤 숫자 7
      • 111111-0300303 (O) -> 올바른 정규식
      • dfdfdf-dofiudo (X) -> 올바르지 않은 정규식
    • ex) gmail 이메일 주소 정규식: id@gmail.com
      • datassung18@gmail.cpm (O) -> 올바른 정규식
      • dfdfdf@dfdfdfs@gmailcom (X) -> 올바르지 않은 정규식

     

    2. 정규식 실습

    • 특정한 패턴의 정규식을 찾을 때 활용함

     

    정규식 기본 문법

    • compile : 정규식을 특정 문자열에 담을 때 사용하는 함수
    • match : 주어진 문자열의 처음부터 일치하는지 매칭하는 함수

    . (ca.e)

    하나의 문자를 의미

    ex) care, cafe, case (O) vs caffe (X)

    ^ (^de)

    문자열의 시작을 의미

    ex) desk, dear, destinaton (O)
    vs fade (X)

    $ (se$)

    문자열의 끝을 의미

    ex) case, base (O) vs face (X)

     

    정규식 기본 실습

    • Ex) 차가 사람을 치고 도망갔음. 나는 경찰에 신고하면서 도망가는 차 번호를 외웠음. 
          경찰에서 목격자 진술을 할 때, 차량 번호를 말하려는데 
      차량 번호가 다 기억나지 않음.
      • 차량번호 정규식: ascd, nkok, dfds
      • 내가 기억하는 차량번호: ca?e
      • 경찰은 정규식 활용

    Step 1. 정규식을 P에 담기

    # 정규식 표현식의 re 모듈 불러오기
    import re
    
    # 정규식을 p에 담기
    p = re.compile("ca.e") # 하나의 문자를 찾기

    Step2. 정규식(p)을 주어진 식(m)과 매칭하고 확인하기

    • ca.e(정규식)과 주어진 식(care)이 매칭이 되므로 care 출력!
    ## 매칭되는 경우
    # 정규식에 주어진 식 매칭하기
    m = p.match("care")
    
    # 결과 보기!
    print(m.group()) # care 출력! 
    • ca.e(정규식)과 주어진 식(caffe)이 매칭이 되지 않으므로 에러 발생!
    ## 매칭되지 않는 경우
    # 정규식에 주어진 식을 매칭하기
    m = p.match("caffe")
    
    # 결과 보기!
    print(m.group()) # 에러 발생!

     

    매칭결과 

    매칭 O (정규식(p)이 주어진 식(m)과 매치가 됨)

    주어진 식(p) 출력

    매칭 X (정규식(p)이 주어진 식(m)과 매치가 되지 않음)

    에러 발생

     

     

    정규식 활용해보기

    • 매칭여부 함수 만들어 활용하기
    # 정규식 매칭 여부를 함수로 만들기
    import re
    def print_match(m):
    	if m:
        	print(m.group())
        else:
        	print("매칭되지 않습니다.")        
    • case1
      • 매칭 되는 경우 -> cabe 출력!
    p = re.compile("ca.e") 
    m = p.match("cabe")
    print_match(m)

     

    •  case2
      • 매칭 안 되는 경우 -> 매칭 되지 않습니다. 출력!
    p = re.compile("ca.e")
    m = p.match("cat")
    print_match(m) 

     

    •  case3
      • 매칭 안 되는 경우 -> 매칭되지 않습니다. 출력!
    p = re.compile("ca.e")
    m = p.match("good care")
    print_match(m)

     

    • case4
      • 매칭 되는 경우 -> care 출력!
      • ca.e까지는 앞에서부터는 일치하기 때문에, 그 이후의 문자열의 형태는 상관이 없음
    p = re.compile("ca.e")
    m = p.match("careless")
    print_match(m)

    case 1,2,3,4 결과

     

     

    이 글은 나도코딩님의 [파이썬 코딩 무료 강의 (활용편3)]을 보고 공부한 내용입니다. 

     

    반응형

    댓글

Designed by Tistory.