정규표현식 질문 입니다.

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

    기타

    • 숫자 한글자는 \d 대신에 [0-9]로 표현해도 무방하며,
    • \s+는 연속된 공백문자열을 표시한 것으로 한글자를 띄어쓴 것이라면 공백한글자로 표현해도 상관없습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)