re 모듈

JoyJuhee·2022년 11월 4일
0

Python

목록 보기
17/22
post-thumbnail

re 모듈의 메서드

1) match

  • 문자열 처음부터 검색
  • (regex, 문자열)
  • 반환 : match object 1 개
  • 없는 경우 : None

2) search

  • 문자열 전체를 검색
  • 반환 : match object 1개
  • 없는 경우 : None

3) findall

  • 문자열 전체를 검색
  • 반환 : 문자열 리스트
  • 없는 경우 : 빈 리스트

4) finditer

  • 문자열 전체를 검색
  • 반환 : match object iterator
  • 없는 경우 : None

5) fullmatch

  • 패턴과 문자열이 남는 부분없이 완벽하게 일치
  • 반환 : match object 1개
  • 없는 경우 : None

match 객체의 메서드

1) group : 매칭된 문자열을 반환 (people)
2) start : 매칭된 문자열의 시작위치 (5)
3) end : 매칭된 문자열의 끝 위치 (11)
4) span : 매칭된 문자열의 (시작, 끝) 튜플 (5,11)

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('Hey Guys, read books', str2)
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())
import re

# 1. Group 그룹

# 1) 매칭되는 문자열 한개
str1 = '010-2343-3333'
result = re.match('\d{2,3}-\d{3,4}-(\d{4})$', str1)
print(result.group(1)) # ()로 묶인 그룹의 1번째를 반환

# 2) 매칭되는 문자열 여러개
str2 = '010-2343-7888,010-2343-1234,010-2343-5678,010-2343-9999,010-2343-2222'
results = re.finditer('\d{3}-\d{4}-(\d{4})(?=,|$)', str2)

# for result in results:
#     print(result.group(1))

for idx, result in enumerate(results, 1):
    print(f'{idx}. {result.group(1)}')

# 2. Substitution (교체)

str3 = '010-2343-3333'
result = re.sub('(?<=\d{3}-\d{4}-)\d{4}', '****', str3) # 후방탐색할때는 {}범위가 고정적이어야 한다. 
print(result)

출처 : 패스트캠퍼스 Python & Django로 시작하는 웹 프로그래밍

0개의 댓글