정규식은 문자열 함수의 한계를 보완합니다.
로드 모듈
import re
일치(패턴, 문자열, 플래그)
작성한 패턴으로 문자열이 시작하는지 확인
반복자 유형을 반환하여 위치를 확인할 수 있습니다.
print(re.match('a', 'ab'))
print(re.match('a', 'ab'))
print(re.match('a', 'bba'))
print(re.match('a', 'ba'))
# <re.Match object; span=(0, 1), match="a">
# <re.Match object; span=(0, 1), match="a">
# None
# None
검색(패턴, 문자열, 플래그)
문자열에서 패턴과 일치하는 첫 번째 문자를 찾아 반복자로 반환합니다.
print(re.search('a', 'ab'))
print(re.search('a', 'aba'))
print(re.search('a', 'bba'))
print(re.search('a', 'ba'))
# <re.Match object; span=(0, 1), match="a">
# <re.Match object; span=(0, 1), match="a">
# <re.Match object; span=(2, 3), match="a">
# <re.Match object; span=(1, 2), match="a">
파인더(패턴, 문자열, 플래그)
문자열에서 패턴과 일치하는 모든 문자를 찾아 반복자 형식으로 반환합니다.
re_iter = re.finditer('a', 'baa')
for s in re_iter:
print(s)
# <re.Match object; span=(1, 2), match="a">
# <re.Match object; span=(2, 3), match="a">
findall(패턴, 문자열, 플래그)
문자열의 패턴과 일치하는 모든 문자를 찾아 목록으로 반환합니다.
print(re.findall('a', 'a'))
print(re.findall('a', 'aba'))
print(re.findall('a', 'baa'))
print(re.findall('aaa', 'aaaaa'))
print(re.findall('aaa', 'aaaaaa'))
print(re.findall('\d', '숫자123이 이렇게56 있다8')) # \d는 정수
print(re.findall('\d+', '숫자123이 이렇게56 있다8')) # +는 한 개 이상
# ('a')
# ('a', 'a')
# ('a', 'a')
# ('aaa')
# ('aaa', 'aaa')
# ('1', '2', '3', '5', '6', '8')
# ('123', '56', '8')
split(패턴, 문자열, 최대 분할 수, 플래그)
문자열의 패턴이 일치하면 이를 기반으로 목록으로 분할됩니다.
print(re.split('a', 'abaabca'))
print(re.split('a', 'abaabca', 2))
# ('', 'b', '', 'bc', '')
# ('', 'b', 'abca')
sub(패턴, 바꿀 문자열, 문자열, 최대 교체 수, 플래그)
일치하는 패턴 찾기 및 바꾸기
print(re.sub('a', 'z', 'ab'))
print(re.sub('a', 'zxc', 'ab'))
print(re.sub('a', 'z', 'aaaab'))
print(re.sub('a', 'z', 'aaaab', 1))
# zb
# zxcb
# zzzzb
# zaaab
subn(패턴, 바꿀 문자열, 문자열, 최대 교체 수, 플래그)
연산은 sub()와 같지만 반환 결과는 (string, matching count) 형태로 반환된다.
print(re.subn('a', 'z', 'ab'))
print(re.subn('a', 'zxc', 'ab'))
print(re.subn('a', 'z', 'aaaab'))
print(re.subn('a', 'z', 'aaaab', 1))
# ('zb', 1)
# ('zxcb', 1)
# ('zzzzb', 4)
# ('zaaab', 1)
