정규표현식 질문 입니다.


정규표현식으로 문자열 변경에 관해 질문 드립니다.

"7입니다. 12, 2016" 문자열을

"2016년 12월 7일"

로 변경하려면 어떻게 해야 할까요? re.sub함수를 쓰려고 하는데 정규표현식을 어떻게 짜야 하는지 궁금해 질문 드립니다.


조회수 132


1 답변


좋아요
1
싫어요
채택취소하기

간단하게는 숫자가 있는 부분을 매칭하면 될 것 같습니다.

import re

message = "7입니다. 12, 2016"
m = re.sub(r"(\d+)입니다.\s+(\d+),\s+(\d+)",r"\3년 \2월 \1일",message)
print(m)
  1. 숫자 한글자 \d로 표현하고, +는 1글자 이상,
  2. ()를 그룹 매칭하여 숫자부분을 둘러쌉니다.
  3. 그룹매칭이 된다면 (가 나타난 순서대로 1부터 매칭됩니다.
  4. 치환문은 1번째 (가 일자, 2번째 (가 월, 3번째 (가 연도가 됨으로 각각 '\1', '\2', '\3'으로 표현하여 r"\3년 \2월 \1일"로 치환문을 작성합니다.
  5. 정규식과 치환문 문자열은 꼭 r"..." 형태로 만듭니다.

기타

  • 숫자 한글자는 \d 대신에 [0-9]로 표현해도 무방하며,
  • \s+는 연속된 공백문자열을 표시한 것으로 한글자를 띄어쓴 것이라면 공백한글자로 표현해도 상관없습니다.
  • 2016년 10월 10일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close