저는 점프투파이썬 교재로 공부합니다. 이 교재를 바탕으로 공부한 걸 정리합니다.
1️⃣ 정규표현식이란? 문자 클래스, Dot(.), 반복(*), 반복(+), 반복({m,n}, ?)
2️⃣ 정규 표현식(2) - 문자열 검색(match, search, findall, finditer)
3️⃣ 정규표현식(3) - match 객체의 메서드(group, start, end, span)
4️⃣ 정규표현식(4) - COMPILE 옵션 - (DOTALL, IGNORECASE, MULTILINE, VERBOSE)
5️⃣ 정규 표현식(5) - 백슬래시 문제('\n')
6️⃣ 정규 표현식(6) 메타 문자 - |, ^, $, \A, \Z, \b, \B
7️⃣ 정규표현식(7) 그루핑, 전방 탐색, 문자열 바꾸기, Greedy vs Non-Greedy
match 메서드와 search 메서드를 수행한 결과로 돌려준 match 객체에 대해 알아보겠습니다.
match 객체의 메서드를 사용하면 이 같은 궁금증을 해결할 수 있다.
메서드 | 목적 |
---|---|
group() | 매치된 문자열을 돌려준다. |
start() | 매치된 문자열의 시작 위치를 돌려준다. |
end() | 매치된 문자열의 끝 위치를 돌려준다. |
span() | 매치된 문자열의 (시작, 끝)에 해당하는 튜플을 돌려준다. |
import re
p = re.compile('[a-z]+')
m = p.match("python")
print(m.group())
print(m.start())
print(m.end())
print(m.span())
python
0
6
(0, 6)
match 객체의 start()의 결괏값은 항상 0일 수밖에 없습니다. 왜냐하면 match의 특징 중 하나가 문자열의 시작점부터 조사하기 때문입니다.
그렇다면 문자열 전체를 조회하는 search는 어떻게 결과가 나올까요?
import re
p = re.compile('[a-z]+')
m = p.search("3 python")
print(m.group())
print(m.start())
print(m.end())
print(m.span())
python
2
8
(2, 8)
start 값이 바뀌었다는 것을 알 수 있습니다.