1) match
2) search
3) findall
4) finditer
5) fullmatch
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로 시작하는 웹 프로그래밍