[Python] 정규표현식(3) - match 객체의 메서드(group, start, end, span)

미남로그·2021년 9월 14일
1
post-custom-banner

저는 점프투파이썬 교재로 공부합니다. 이 교재를 바탕으로 공부한 걸 정리합니다.

정규 표현식 시리즈

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 객체의 메서드

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)
  • group이 매치된 문자열을 돌려줍니다.
  • start가 매치된 문자열의 시작 위치를 돌려줍니다.
  • end가 매치된 문자열의 끝 위치를 돌려줍니다.
  • span이 매치된 문자열의 시작 위치와 끝 위치를 돌려줍니다.

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 값이 바뀌었다는 것을 알 수 있습니다.

profile
미남이 귀엽죠
post-custom-banner

0개의 댓글