한국 주소는 지번 주소, 도로명 주소 두 개의 체계를 쓰고 있다.

“체계” 라는 것이 있다면 정규식으로 해결될 것이라는 망상을 난 해보았다.

앞서 여러 개발자분들이 호응해주셨더라.

새로 만든 도로명 주소는 지번 주소의 문제점을 해결하지도 못했고, 공무원들은 사용자는 생각하지 않은 예외 케이스를 쉽게 쉽게 만들었으며 본인들이 만든 주소 체계가 본인들도 이해가 되지 않는지 무시하고 사용하고 있다.

이러니 일반 사용자는 어떻겠나 더 개판이지.

그래서 법정동, 행정동 정보를 알려주는 사이트를 찾았다. 이걸로 검증을 하면 어떨까 싶었다.

그런데 댓글에 예외케이스가 있나보다 몇 개 동이 누락되거나 파일의 지역이 뒤바뀌어있단다. 그럼 바꾸면 되는데 가히 공무원의 답변은 역시나였다.

본인들은 각 지자체가 제공한 데이터를 모아서 올린 것이라 수정할 수 없다고 한다.

저 데이터의 신뢰성도 없다.

내가 할 수 있는 한 잡으려고 했고 특정 사람의 구체적인 주소를 잡아내는 것이 아니라면 잡지 않았다. 내가 다 잡아내지도 못했지만 그나마 해 본 정규식을 공유한다.


# 지번주소 + 도로명 주소
pattern = "(?:[\uAC00-\uD7AF]+(?:시|도)\s+)?(?:[\uAC00-\uD7AF]+(?:구|군|시)\s+)?[\uAC00-\uD7AF]+(?:동|읍|면|리|가동)(\s?\d{1,2}가)?\s*\d{1,4}(?:-\d{1,4})?,?\s*[\uAC00-\uD7AF]*\s*\d*동?\s*\d*층?\s*\d*호?|" \
            + "(?:[\uAC00-\uD7AF]+(?:시|도)\s+)?(?:[\uAC00-\uD7AF]+(?:구|군|시)\s+)?[\uAC00-\uD7AF]+(\s?\d{1,2})?(?:동|읍|면|리|가동)\s*\d{1,4}(?:-\d{1,4})?,?\s*[\uAC00-\uD7AF]*\s*\d*동?\s*\d*층?\s*\d*호?|" \
            + "(?:[\uAC00-\uD7AF]+(?:시|도)\s+)?(?:[\uAC00-\uD7AF]+(?:구|군|시)\s+)?[\uAC00-\uD7AF]+(?:로|길)\s*\d{1,5}\s?(?:로|길)?(?:-\d{1,5})?,?\s*(?:\([\uAC00-\uD7AF]+(?:동|가)\),?\s*)?\d*동?\s*\d*층?\s*\d*호?"

분노의 글을 썼는데 여기에 완벽을 기대하고 시간을 쏟은게 아까워서 그랬습니다. 주소를 완전히 잡으려고 하시는 분이 있다면 두 손 붙잡고 말리고 싶네요.