이 포스팅은 Regular Expression 시리즈 12 편 중 4 번째 글 입니다.

  • Part 1 - 01: 개념잡기
  • Part 2 - 02: 간단한 메타문자
  • Part 3 - 03: re module
  • Part 4 - This Post
  • Part 5 - 05: Compile Option(컴파일 옵션)
  • Part 6 - 06: 파이썬 백슬래시 문제
  • Part 7 - 07: 다양한 메타문자
  • Part 8 - 08: Grouping(그루핑)
  • Part 9 - 09: 전방 탐색(Lookahead Assertions)
  • Part 10 - 10: 문자열 바꾸기
  • Part 11 - 11: Greedy 와 Non-Greedy
  • Part 12 - 자주쓰이는 정규표현식 초급 정리 - 1
▼ 목록 보기

목차

▼ 내리기

개요

앞의 글에서 우리는 컴파일 된 pattern 객체의 메서드를 공부했다. 이 메서드에는 match, search, findall, finditer가 있었다. 해당 메서드들은 검색이 된 경우 match 객체를 리턴했다.

하지만 우리가 원하는 결과는 이 match 객체 자체가 아니다. 우리는 다음과 같은 궁금증을 가지고 검색을 진행했을 것이다.

  • 어떤 문자열이 매치되었는가?
  • 매치된 문자열의 인덱스는 어디서부터 어디까지인가?

이러한 것들을 해결하기 위한 메서드를 소개한다.

method 목적
group() 매치된 문자열을 돌려준다.
start() 매치된 문자열의 시작 위치를 돌려준다.
end() 매치된 문자열의 끝 위치를 돌려준다.
span() 매치된 문자열의 (시작, 끝)에 해당하는 튜플을 돌려준다.
import re
p = re.compile('ab*')
m = p.match("python")

group()

매치된 문자열을 돌려준다.

>>> m.group()
'python'

start()

매치된 문자열의 시작 위치를 돌려준다.

>>> m.start()
0

end()

매치된 문자열의 끝 위치를 돌려준다.

>>> m.end()
6

span()

매치된 문자열의 (시작, 끝)에 해당하는 튜플을 돌려준다.

>>> m.span()
(0, 6)

위 경우는 match를 사용했기 때문에 시작 위치는 항상 0일 것이다. 염두하자.

Reference

07-2 정규 표현식 시작하기