[태그:] regex

  • 알아두면 편리한 정규표현식 모음 (계속 수정 예정)

    정규 표현식은 참 손에 안잡히는 주제중 하나죠. 이걸 꿰차면 상당히 프로그래밍 할때 막히는 부분이 줄어들겠지만 쉽게 이해 되지 않는 것도 사실입니다. 그래서 각 경우에 따른 표현식 모음을 작성하기로 해봤는데요. 앞으로도 작업하다가 마주치는 정규 표현식을 적어둘 예정입니다.

    1. 주소에서 맨 끝에 괄호 추가정보 제거하기

    네이버지도 API가 이전 및 유료화 되면서 대안으로 다음 지도 API 를 사용하면서 생긴 문제입니다.
    현재 주소를 저장할 때 1차, 2차로 나눠서 1차는 도로명주소로 저장하는데요. 정식 도로명 주소가 아직은 익숙하지 않기 때문에 맨뒤에 괄호'(…)’로 구분에 동이름이나 건물명등을 넣어 보완하고 있습니다.

    이렇게 저장한 1차 주소를 이용해 카카오지도로 연결하면 문제가 발생하는 경우가 있습니다. 웹버전의 카카오지도에서는 크게 문제 없이 바로 지도가 나오는데요. 모바일 카카오지도앱의 경우 정식 도로명주소 뒤에 추가정보가 붙으면 그냥 지도를 보여주지 않고 주소 선택하는 페이지가 먼저 뜹니다. 이게 은근히 불편하더라고요. 그래서 바로 지도를 보여줄 수 있도록 하기 위해서 맨뒤에 괄호 추가 정보를 제거하는 정규 표현식 입니다.

    // 예제 주소 문자열 : "제주특별자치도 제주시 첨단로 242 (영평동)"
    // 예상 결과 : "제주특별자치도 제주시 첨단로"
    
    // Javascript
    "제주특별자치도 제주시 첨단로 242 (영평동)".replace(/\s+\(.+\)$/g, '')
    
    // 주소 맨끝에 빈칸으로 구분한 괄호만을 찾기 위해 : \s+ 
    // 빈칸을 \s 로 표현했다. 뒤에 + 는 앞의 문자가 1개나 그이상 오는 것을 표현한다. 사실 이부분은 그다지 필요없는 부분이다.
    // 괄호 및 괄호내 내용 : \(.+\)
    // 괄호는 이스케이프 문자로 표현하고 괄호 안의 내용은 .+ 로 표현했다. 점(.)은 모든 문자 하나를 표현하고 + 는 앞 문자의 1개나 그이상의 문자를 표현한다.
    // 주소 맨끝의 괄호내용만 찾기위한 $
    // 문자열 전체 적용을 위한 플래그 g
    

    테스트하기 : https://regex101.com/r/9G7rLQ/3

    정규 표현식 관련 알기 쉽게 설명이 나온 글입니다 참조하시기 바랍니다 : https://medium.com/@originerd/정규표현식-좀-더-깊이-알아보기-5bd16027e1e0

    정규표현식 테스트 및 분석하기 좋은 사이트 : https://regex101.com/