정규표현식 질문 입니다.
조회수 1913회
정규표현식으로 문자열 변경에 관해 질문 드립니다.
"7입니다. 12, 2016" 문자열을
"2016년 12월 7일"
로 변경하려면 어떻게 해야 할까요? re.sub함수를 쓰려고 하는데 정규표현식을 어떻게 짜야 하는지 궁금해 질문 드립니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
간단하게는 숫자가 있는 부분을 매칭하면 될 것 같습니다.
import re message = "7입니다. 12, 2016" m = re.sub(r"(\d+)입니다.\s+(\d+),\s+(\d+)",r"\3년 \2월 \1일",message) print(m)
- 숫자 한글자
\d
로 표현하고,+
는 1글자 이상, ()
를 그룹 매칭하여 숫자부분을 둘러쌉니다.- 그룹매칭이 된다면
(
가 나타난 순서대로 1부터 매칭됩니다. - 치환문은 1번째
(
가 일자, 2번째(
가 월, 3번째(
가 연도가 됨으로 각각 '\1', '\2', '\3'으로 표현하여r"\3년 \2월 \1일"
로 치환문을 작성합니다. - 정규식과 치환문 문자열은 꼭
r"..."
형태로 만듭니다.
기타
- 숫자 한글자는
\d
대신에[0-9]
로 표현해도 무방하며, \s+
는 연속된 공백문자열을 표시한 것으로 한글자를 띄어쓴 것이라면 공백한글자로 표현해도 상관없습니다.
- 숫자 한글자
댓글 입력