정규식 문자열 변환관련 질문드립니다

조회수 870회

서비스, 석션, 수비드, ... 등의 ㅅ이 포함된 문자열에서 단모음앞에 있는 ㅅ만 ㅆ으로 변환하고 싶습니다. 한글 자모는 이미 풀어쓰기가 되어있는 상태인데 패턴을 포함한 채로 문자열 변환할 수 있는 방법이 없나요 re.sub(r”/s?(ㅅ)[ㅏㅓㅗㅜㅡㅣㅐㅔ]”, ???, str). <=== 물음표 부분을 모르겠습니다. sub method로 불가능하다면 match를 이용해서 그룹을 나눠서 바꿔야 하는걸까요...

1 답변

  • 정규식으로는 못 할 것 같고 유니코드 번호를 찾아 직접 바꿔줘야 할 것 같습니다 유니코드 체계는 완성형 한글이지만 조합형 분해가 용이하도록 체계를 만든 것으로 압니다 음절의코드번호 =a×중성의수×종성의수+b×종성의수+c 위와 같은 형식으로요... '사'의 유니코드번호는 C0AC 이고 '싸'의 번호는 C2F8 인데 위식을 고려하면 ㅅ과 ㅆ이 포함된 전 문잠에서 동일한 오프셋이 될 것 같습니다 Chr 과 ord를 이용해서 ㅅ이 포함된 문자를 일정한 값으로 오프셋 시키면 될 것 같습니다

    유니코드에서 한글의 배정영역은 인터넷에 많이 올라와 있습니다

    더 쉬운 방법이 있을 수도 있겠지만 저는 이 정도 아이디어밖에 생각나지 않네요

    • (•́ ✖ •̀)
      알 수 없는 사용자

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

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

(ಠ_ಠ)
(ಠ‿ಠ)