regexr.com의 regex cheatsheet은 여기가 유용하다.
1) re.split()
특정 기호 그룹으로 문자열을 나눌 때 사용한다
# input: '100,200,300.400'
# output: '100 200 300 400'
import re
regex_pattern = r"[,.]"
s = '100,200,300.400'
' '.join(re.split(regex_patter, s))
2) re.group()
regex pattern에 매치되는 문자열 리스트를 얻고 싶을 때 사용한다.
import re
s = 'useful@python.codes'
m = re.match(r'(\w+)@(\w+)\.(\w+)', s)
print(m)
>>> <_sre.SRE_Match object; span=(0, 19), match='useful@python.codes'>
m.groups()
>>> ('useful', 'python', 'codes')
m.group() # entire match
>>>> 'useful@python.codes'
m.group(0) # entire match
>>> 'useful@python.codes'
m.group(1) # first match
>>> (useful)
m.group(1,2,3)
>>> ('useful', 'python', 'codes')
re.groupdict()는 매치되는 문자열에 key를 주고 리턴할 때 사용한다.
import re
s = 'useful@python.codes'
m = re.match(r'(?P<user>\w+)\@(?P<website>\w+)\.(?P<extension>\w+)', s)
m.groupdict()
>>>> {'user': 'useful', 'website': 'python', 'extension': 'codes'}
group의 중요한 두 가지 기능은 그룹과 캡쳐이다. 자세한 내용은 여기에 설명이 잘 되어 있다.
3) re.sub()
(regex pattern, 매치된 문자열에 적용할 함수, 문자열) 입력으로 받는다.
import re
def square(match):
number = int(match.group(0))
return str(number**2)
print(re.sub(r"\d+", square, "1 2 3 4 5 6 7 8 9"))
>>>> 1 4 9 16 25 36 49 64 81
s = "Can#%you*please@#open*the$#@%door?"
print(re.sub(r"\b[^a-zA-Z0-9?]+\b", r' ', s))
>>>> Can you please open the door?
4) findall()
조건에 해당하는 문자열들을 리스트로 리턴해준다.
import re
data = '제 47 기 회계일자는 2015.01.01 부터 2015.12.31 까지이다'
p = re.compile(r'(\d+.\d+.\d+)')
p.findall(data)
>>>> ['2015.01.01', '2015.12.31']
728x90
'python 메모' 카테고리의 다른 글
[python] First-Class Function과 Closure, Decorator (0) | 2021.06.01 |
---|---|
[matplotlib] subplot 그리기 (0) | 2021.05.19 |
[python] 봐두면 유용할 수도 있는 문자열 built-in functions (0) | 2021.05.06 |
[python] itertools (0) | 2021.05.06 |
[python] any(), all() (0) | 2021.05.06 |