IT/프로그래밍

[파이썬] re 모듈 사용방법 [패스트 캠퍼스 챌린지 44일]

뜻밖의 행복 2022. 3. 8. 21:50
반응형

 

 

안녕하세요? 뜻밖의 행운입니다.

패스트 캠퍼스 도전 44일차 이제 정말 얼마 남지 않았습니다. 

그리고 놀라운 것은 글을 쓰는 시점 저는 휴가지에 와 있는데

이곳에서도 계속해서 하고 있다는 것입니다.

정말 자비없는 패스트 캠퍼스 도전이네요 

그래도 44일 동안 하루도 빠짐 없이 기를 모아서 했는데 

이제 와서 그만둘 수 없죠 잘 해보도록 하겠습니다.

 

오늘은 지금까지 배운 정규표현식을 파이썬에서 잘 사용해보는 방법에 대해서 배웠습니다.

오늘 배운 내용을 요약하면 우선 re 모듈의 주요 매서드에 대해서 배웠습니다.

그리고 match 객체의 매서드에서도 배웠습니다.

 

 

실제로 어떻게 동작하는지 살펴보도록 하겠습니다.

 

import re

# 1. re 모듈의 메서드

str = 'love people around you, love your work, love yourself'

# 1) match : 문자열의 처음부터 검색 (결과 : 1개의 match 객체)
result = re.match('love', str)
print(result)

# 2) search : 문자열의 전체를 검색 (결과 : 1개의 match 객체)
result = re.search('people', str)
print(result)

# 3) findall : 문자열의 전체를 검색 (결과 : 문자열 리스트)
results = re.findall('love', str)
print(results)

# 4) finditer : 문자열의 전체를 검색 (결과 : match 객체 이터레이터)
results = re.finditer('love', str)
print(results)

for result in results:
    print(result)

# 5) fullmatch 패턴과 문자열이 완벽하게 일치하는지 검사
str2 = 'Hey Guys, read books'
result = re.fullmatch('.*', str2)
print(result)

# 2. match object의 메서드
result = re.search('people', str)

# 1) group() : 매칭된 문자열을 반환
print(result.group())

# 2) start() : 매칭된 문자열의 시작 위치 반환
print(result.start())

# 3) end() : 매칭된 문자열의 끝 위치 반환
print(result.end())

# 4) span() : 매칭된 문자열의 (시작, 끝) 위치 튜플을 반환
print(result.span())

각각 내용을 간략하게 보면

 

아래 str 변수에 예문을 담고 그 예문으로 계속 re 모듈을 결과를 보겠습니다.

str = 'love people around you, love your work, love yourself'

# 1) match : 문자열의 처음부터 검색 (결과 : 1개의 match 객체)
result = re.match('love', str)
print(result)

love가 처음부터 나오기 때문에 span 0, 4가 나오는 것을 볼 수있습니다. 

 

# 2) search : 문자열의 전체를 검색 (결과 : 1개의 match 객체)
result = re.search('people', str)
print(result)

네 people 위치하는 5, 11이 나오는 것을 볼 수 있습니다.

 

str = 'love people around you, love your work, love yourself'

# 3) findall : 문자열의 전체를 검색 (결과 : 문자열 리스트)
results = re.findall('love', str)
print(results)

예문에서 love만 추출 되어서 나왔습니다.

 

str = 'love people around you, love your work, love yourself'

# 4) finditer : 문자열의 전체를 검색 (결과 : match 객체 이터레이터)
results = re.finditer('love', str)
print(results)

기존의 위치나 문자가 나오는 것이 아니라 특이한 값이 나오는 것을 볼 수 있습니다.

 

알아볼 수 있는 내용으로 보려고 하면 for 로 받아서 하나하나 출력을 해줘야 합니다.

 

보이죠? 예문에 love가 3번이 들어갔고 각각 어디에서 있었는지 나옵니다.

역시나 배우는 내용들이 점점 크롤링 프로젝트를 진행 할것 같은 느낌이 빡 옵니다.

 

 

반응형