본문 바로가기
python/webscraping

[Python webscraping] #2 RegExp(정규식)

by ohojee 2022. 12. 16.
전체 소스코드
import re

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()) # 일치하는 문자열의 시작 index
        print("m.end :", m.end()) # 일치하는 문자열의 끝 index
        print("m.span :", m.span()) # 일치하는 문자열의 시작과 끝 index
    else:
        print("매칭되지 않음")

# m = p.match("good care") # 매칭된 값을 m 변수에 저장
#                     # 주어진 문자열의 처음부터 일치하는지 확인, 그래서 뒤에 다른게 있어도 상관 x
# print_match(m)

# m = p.search("good care") # 주어진 문자열 중에 일치하는게 있는지 확인
# print_match(m)

# lst = p.findall("good carecasecccafe") # 일치하는 모든 것을 리스트 형태로 반환
# print(lst)

 

정규식

주민등록번호, 이메일, 차량번호와 같은 것은 정해진 규칙이 있다

주민등록번호는 앞에 6자리 숫자, - 기호, 7자리 숫자

이메일은 앞에 이름, @ 기호, 도메인 이름

차량번호는 숫자 2~3개, 문자 1개, 4자리 숫자

이런 형태를 체크할 때 정규식을 사용한다

 

import re
p = re.compile("ca.e") 
 

정규식을 쓰려면 정규식 라이브러리가 필요하다

import re를 써주면 정규식을 사용할 수 있다

p라는 변수는 패턴을 의미하고 보통 re.complie()은 p로 받는다

. : 하나의 문자를 의미
^ : 문자열의 시작
$ : 문자열의 끝

가장 간단한 정규식 기호이다

1. p = re.compile("정규식")

보통 p라는 변수로 받음

2. m = p.match("비교할 문자열")

 

일치하는지 확인하기
 
.match
주어진 문자열의 처음부터 일치하는지 확인,
뒤에 다른 문자가 있어도 상관 x
.search
주어진 문자열 중에 일치하는게 있는지 확인
.findall
일치하는 모든 것을 리스트 형태로 반환

 

.match는

good care은 매칭되지 않고, careless는 매칭된다

lst = p.findall("good carecasecccafe")를 실행한다면

lst에 ["care", "case", "cafe"]가 저장된다

 

결과 출력 방법
 
.group()
일치하는 문자열만 반환,
매치되지 않으면 에러 발생, 매칭되면 매칭된 값 출력
.start()
일치하는 문자열의 시작 index
.end()
일치하는 문자열의 끝 index
.span()
일치하는 문자열의 시작과 끝 index
string
입력받은 문자열 반환, 함수가 아니고 변수라 ()없이 사용

 

 

 

'python > webscraping' 카테고리의 다른 글

[Python webscraping] #4 BeautifulSoup  (0) 2022.12.16
[Python webscraping] #3 User agent  (0) 2022.12.16
[Python webscraping] #1 Requests  (0) 2022.12.16

댓글