오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 파이썬에서의 re모듈 사용방법(1)을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것.



아래는 공부 인증 사진.


2022-06-21-Python-Photo1

2022-06-21-Python-Photo2



04. 파이썬 re 모듈 사용 방법(1)

1. re 모듈의 메서드

종류 기능 찾는 경우 없는 경우
match 문자열 처음부터 검색 match object 1개 None
search 문자열 전체를 검색 match object 1개 None
  • (regex, 문자열) 형태로 표현

종류 기능 찾는 경우 없는 경우
findall 문자열 전체를 검색 문자열 리스트 빈 리스트
finditer 문자열 전체를 검색 match object iterator None
  • findall ⇒ (’a’, ‘a’) 형태로 표현
  • finditer ⇒ iterator(순서가 있는)의 약어.

종류 기능 찾는 경우 없는 경우
fullmatch 패턴과 문자열이 남는 부분 없이 완벽하게 일치 match object 1개 None



2. match 객체의 메서드

종류 기능 반환 값 예시
group 매칭된 문자열을 반환 people
start 매칭된 문자열의 시작 위치 5
end 매칭된 문자열의 끝 위치 11
span 매칭된 문자열의 (시작, 끝) 튜플 (5,11)



3. 실습

import re

# 1. re 모듈의 메서드
str = 'love people around you, love your work, love yourself'

# 1) match
result = re.match('love', str)
print(result)

  • 실행 결과
➜  myvenv git:(master) ✗ /usr/local/bin/python3 /Users/usr/Documents/python_advanced/myvenv/Chapter06/01.정규표현식
1.py
<re.Match object; span=(0, 4), match='love'>

  • 맨 앞의 love를 지울 경우에는 어떻게 표시되는지 보자.
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)

  • 실행 결과
➜  myvenv git:(master) ✗ /usr/local/bin/python3 /Users/usr/Documents/python_advanced/myvenv/Chapter06/01.정규표현식
1.py
None

  • search 메서드를 사용해보자.
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)

  • 실행 결과
➜  myvenv git:(master) ✗ /usr/local/bin/python3 /Users/usr/Documents/python_advanced/myvenv/Chapter06/01.정규표현식
1.py
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(5, 11), match='people'>

  • findall 메서드를 사용해보자.
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)

  • 실행 결과
➜  myvenv git:(master) ✗ /usr/local/bin/python3 /Users/usr/Documents/python_advanced/myvenv/Chapter06/01.정규표현식
1.py
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(5, 11), match='people'>
['love', 'love', 'love']

  • finditer를 사용해보자.
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 in문을 사용한다.
for result in results:
    print(result)

  • 실행 결과
➜  myvenv git:(master) ✗ /usr/local/bin/python3 /Users/usr/Documents/python_advanced/myvenv/Chapter06/01.정규표현식
1.py
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(5, 11), match='people'>
['love', 'love', 'love']
<callable_iterator object at 0x108ea7fa0>
  • 순서가 있는 오브젝트를 출력할 때에는 for in문을 사용해야한다.

  • for in문을 사용해 finditer문의 결과를 다시 출력해보자.
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 in문을 사용한다.
for result in results:
    print(result)

  • 실행 결과
➜  myvenv git:(master) ✗ /usr/local/bin/python3 /Users/usr/Documents/python_advanced/myvenv/Chapter06/01.정규표현식
1.py
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(5, 11), match='people'>
<callable_iterator object at 0x108ea7fa0>
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(24, 28), match='love'>
<re.Match object; span=(40, 44), match='love'>

  • fullmatch도 사용해보자.
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 in문을 사용한다.
for result in results:
    print(result)

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

  • 실행 결과
➜  myvenv git:(master) ✗ /usr/local/bin/python3 /Users/usr/Documents/python_advanced/myvenv/Chapter06/01.정규표현식
1.py
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(5, 11), match='people'>
<callable_iterator object at 0x108ea7fa0>
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(24, 28), match='love'>
<re.Match object; span=(40, 44), match='love'>
<re.Match object; span=(0, 20), match='Hey Guys, read books'>

  • .* 로 표현해도 일치할 것이다.
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 in문을 사용한다.
for result in results:
    print(result)

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

  • 실행 결과
➜  myvenv git:(master) ✗ /usr/local/bin/python3 /Users/usr/Documents/python_advanced/myvenv/Chapter06/01.정규표현식
1.py
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(5, 11), match='people'>
<callable_iterator object at 0x108ea7fa0>
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(24, 28), match='love'>
<re.Match object; span=(40, 44), match='love'>
<re.Match object; span=(0, 20), match='Hey Guys, read books'>

3. search object의 메서드

  • .group() 메서드를 사용해보자.
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 in문을 사용한다.
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())

  • 실행 결과
➜  myvenv git:(master) ✗ /usr/local/bin/python3 /Users/usr/Documents/python_advanced/myvenv/Chapter06/01.정규표현식
1.py
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(5, 11), match='people'>
['love', 'love', 'love']
<callable_iterator object at 0x10c233fa0>
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(24, 28), match='love'>
<re.Match object; span=(40, 44), match='love'>
<re.Match object; span=(0, 20), match='Hey Guys, read books'>
people

  • .start() 메서드도 사용해보자.
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 in문을 사용한다.
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())

  • 실행 결과: 매칭된 문자열의 시작 위치(5)를 반환한다.
➜  myvenv git:(master) ✗ /usr/local/bin/python3 /Users/usr/Documents/python_advanced/myvenv/Chapter06/01.정규표현식
1.py
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(5, 11), match='people'>
['love', 'love', 'love']
<callable_iterator object at 0x10c233fa0>
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(24, 28), match='love'>
<re.Match object; span=(40, 44), match='love'>
<re.Match object; span=(0, 20), match='Hey Guys, read books'>
people
5

  • .end() 메서드를 사용해보자.
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 in문을 사용한다.
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())

  • 실행 결과
➜  myvenv git:(master) ✗ /usr/local/bin/python3 /Users/usr/Documents/python_advanced/myvenv/Chapter06/01.정규표현식
1.py
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(5, 11), match='people'>
['love', 'love', 'love']
<callable_iterator object at 0x10c233fa0>
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(24, 28), match='love'>
<re.Match object; span=(40, 44), match='love'>
<re.Match object; span=(0, 20), match='Hey Guys, read books'>
people
5
11

  • .span() 메서드를 사용해보자.
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 in문을 사용한다.
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())

  • 실행 결과
➜  myvenv git:(master) ✗ /usr/local/bin/python3 /Users/usr/Documents/python_advanced/myvenv/Chapter06/01.정규표현식
1.py
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(5, 11), match='people'>
['love', 'love', 'love']
<callable_iterator object at 0x10c233fa0>
<re.Match object; span=(0, 4), match='love'>
<re.Match object; span=(24, 28), match='love'>
<re.Match object; span=(40, 44), match='love'>
<re.Match object; span=(0, 20), match='Hey Guys, read books'>
people
5
11
(5, 11)



이번 포스팅에서는 강의의 파트 2의 re모듈 사용방법(1))을 알아보았다. 다음 포스팅에서는 파이썬 re모듈 사용방법(2)에 대해 알아보도록 하자.


본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.



#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #캐시백챌린지 #캐시백 #환급챌린지 #한번에끝내는파이썬웹개발초격차패키지Online