본문 바로가기
Web/Crawling

[Web] 웹 크롤링 , 스크래핑 Basic - 2. re , 정규표현식

by skwkiix 2023. 8. 6.
728x90

정규표현식 

정규표현식(Regular Expression)은 특정한 규칙을 가진 문자열의 패턴을 표현하는 데 사용되는 문자열 패턴 매칭 기술이다.
이를 사용하면 문자열 내에서 특정 패턴을 찾거나, 추출하거나, 대체하는 작업을 수행할 수 있다.

import re

정규 표현식 모듈 re 를 사용한다.

  • 구조
1. p = re.complie('정규표현식') 
2. m = p.match("비교할 문자열") # 주어진 문자열을 처음부터 일치하는지 확인
   m = p.search("비교할 문자열") # 주어진 문자열 중에 일치하는 것이 있는지 확인
   lst = p.findall("비교할 문자열") # 일치하는 모든 것을 "리스트" 형태로 반환
  •  예시)
import re
p = re.compile("s.n") # "s.n" 패턴을 컴파일하여 정규 표현식 객체 P 생성
m = p.match("sun") # "sun" 문자열과 패턴 "s.n"을 비교하여 처음부터 일치하는지 확인
print_match(m)

 

주요 메타 문자

  • . (s.n) : 하나의 문자를 의미 ex) sun, son (o)
  • ^ (^in) : 문자열의 시작 ex) install, inside(o)
  • $ ($ve) : 문자열의 끝 ex) save, curve (o)

1) match, search, findall 차이

  • match : 처음부터 일치하는지 확인
  • search : 주어진 문자열 중 일치하는게 있는지 확인
  • findall : 일치하는 모든 것을 "리스트" 형태로 반환
import re
​
p = re.compile("s.n")  
​
def print_match(m):
​
    if m:
        print(m.group())
    else:
        print('매칭되지 않음')
​
​
m = p.match("sun") # match : 처음부터 일치하는지 확인
print_match(m)
​
m = p.search("sunny") # search : 주어진 문자열 중에 일치하는게 있는지 확인
print_match(m)
​
lst = p.findall("sunny") # findall : 일치하는 모든 것을 리스트 형태로 반환
print(lst)

march, search 출력 결과
findall 출력결과

 

2) 문자열 반환

  • m.group() : 일치하는 문자열 반환
  • m.string : 입력받은 문자열 반환
  • m.start() : 일치하는 문자열의 시작 index
  • m.end() : 일치하는 문자열의 끝 index
  • m.span() : 일치하는 문자열의 시작 / 끝 index
import re
​
p = re.compile("s.n")  
# .(s.n) : 하나의 문자를 의미 ex) sun, son (o)
# ^(^in) : 문자열의 시작 ex) install, inside(o)
# $($ve) : 문자열의 끝 ex) save, curve (o)
​
def print_match(m):
​
    if m:
        print("m.group():" ,m.group()) # 일치하는 문자열 반환
        print("m.string():" ,m.string) # 입력받은 문자열 반환
        print("m.start():" ,m.start()) # 일치하는 문자열의 시작 index
        print("m.end():" ,m.end()) # 일치하는 문자열의 끝 index
        print("m.span():" ,m.span()) # 일치하는 문자열의 시작 / 끝 index
​
    else:
        print('매칭되지 않음')
​
​
# m = p.match("sun") # match : 처음부터 일치하는지 확인
# print_match(m)
​
m = p.search("sunny") # search : 주어진 문자열 중에 일치하는게 있는지 확인
print_match(m)

728x90