[Python_WebScrapping]정규식

Ronie🌊·2021년 1월 11일
0

Python_WebScrapping🕵

목록 보기
1/2
post-thumbnail

git 바로가기


메타문자
정규식


메타문자

그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자를 말한다.

. ^ $ * + ? { } [ ] \ | ( )

문자 클래스 [ ]

  • [abc] : a,b,c중에 하나라도 들어 있는지 매치
    "a" : 매칭
    "before" : 매칭
    "dude" : 매칭실패

  • [0-9] : 문자클래스 안의 '-'하이픈은 두 사이의 범위

  • 자주사용하는 문자 클래스

    • \d - 숫자와 매치, [0-9]와 동일한 표현식이다.
    • \D - 숫자가 아닌 것과 매치, [^0-9]와 동일한 표현식이다.
    • \s - whitespace 문자와 매치, [\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_]와 동일한 표현식이다.

반복 (*)

ca*t

이 정규식에는 반복을 의미하는 * 메타 문자가 사용되었다. 여기에서 사용한 *은 * 바로 앞에 있는 문자 a가 0부터 무한대로 반복될 수 있다는 의미이다.

반복 (+)

ca+t

반복을 나타내는 또 다른 메타 문자로 +가 있다. +는 최소 1번 이상 반복될 때 사용한다. 즉 *가 반복 횟수 0부터라면 +는 반복 횟수 1부터인 것이다.

ca{2,5}t

"c + a(2~5회 반복) + t"

?

ab?c

"a + b(있어도 되고 없어도 된다) + c"


정규식

python 기본 라이브러리
import re

  • 정규식이란?
    정규표현식 (Regular expressions) 은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 복잡한 문자열의 검색과 치환을 위해 사용되며, Python 뿐만 아니라 문자열을 처리하는 모든 곳에서 사용된다.
  • 정규식 패턴을 입력으로 받아들여 정규식 객체를 리턴하기
    검색할 문자열 조건을 설정한다.
    p = re.compile("{조건}")
    • 조건
      • . (ca.e) : 하나의 문자 > care, cafe, case, cave (o) | caffe (x)
      • ^ (^de) : 문자열의 시작 > desk, destination (o) | fade (x)
      • $ (se$) : 문자열의 끝 > case, base (o) | face (x)
  • 주어진 문자열과 매칭해보기
    • p.match({매칭할 문자열}) # 첫 글자부터 매칭하는지 확인,
    • p.search({매칭할 문자열}) # 일치하는 게 있는지 확인
    • p.findall({매칭할 문자열}) # 일치하는 것 모두 리스트로 출력
p = re.compile("ca.e") 
def print_match(m):
    if m:
        print("m.group() : ", m.group()) 
        print("m.string : ", m.string) 
        print("m.start() : ", m.start()) 
        print("m.end() : ", m.end()) 
        print("m.span() : ", m.span()) 
    else:
        print("matching fail")

m = p.match("lesscare") 
print_match(m)

m = p.search("good care") 
print_match(m)

lst = p.findall("good care cafe") 
print(lst)
출력결과
m.group() :  care
m.string :  careless
m.start() :  0
m.end() :  4
m.span() :  (0, 4)
m.group() :  care
m.string :  good care
m.start() :  5
m.end() :  9

참조 https://wikidocs.net/4308

0개의 댓글