작성일자
카테고리 디자인툴/서브라임 텍스트

이번에 서브라임 텍스트 서적을 출간하면서 서브라임 텍스트에 있는 정규 표현식 기능에 대해 적당히 넘어가려고 했지만 출판사의 요청으로 정규 표현식을 사용하는 방법을 넣게 됐습니다. 우리나라 말로 정규 표현식이라고 번역을 하지만 원어로는 Regular Expression이라고 합니다. 이 용어를 기준으로 정의를 내리자면 "불규칙적인 패턴에서 규칙적인(Regular) 패턴을 찾아내 일치시키는 표현(Expression)식"이라고 할 수 있습니다. 


(?:\.) {2,}(?=[A-Z])


프로그래밍 언어를 배우다보면 이런 암호와 같은 글자가 가끔 나옵니다. 하지만 정규 표현식은 알게 모르게 일상 생활과 밀접합니다. 일상 생활과 밀접하다는 것은 문서 작성이나 인터넷 검색과 같이 컴퓨터 사용과 관련된 일입니다. 인터넷에서 검색을 하자면 검색어를 입력하고 이를 검색 엔진이 서버에서 찾아 원하는 데이터를 나열해주죠. 이때도 정규표현식이 없으면 해결을 못합니다. 회원 가입에도 일정한 형태의 이메일 주소가 맞게 들어갔는지 인증 절차를 거치는데 여기에도 정규표현식이 사용됩니다.



문서작성에도 특정한 글자를 찾아 다른 글자로 바꾸는 작업을 정규표현식에 의해 하게 됩니다. 즉 검색이 있는 곳에는 정규표현식이 있다고 보면 됩니다. 위 그림은 워드에서 바꾸기를 선택했을 때 나오는 화면입니다. 옵션을 클릭하면 일부 정규표현식에서 사용되는 기능이 포함돼있습니다. 정규 표현식의 일부 기능만 있기 때문에 전체 기능을 사용하려면 텍스트 편집기를 이용하는 것이 좋습니다. 문서를 텍스트 편집기로 복사해서 작업하는 것이죠. 대부분의 텍스트 편집기에는 정규 표현식을 전체 사용할 수 있도록 돼있습니다.



이번에 워드프레스와 우커머스로 쇼핑몰을 만들면서 해외 배송비를 입력해줘야 하는 부분이 있었는데 배송회사가 EMS라서 국가의 Zone별로 별도로 입력해줘야 했습니다. EMS와 EMS Premium에 대해 Zone을 만들다보니 40여개나 되고 이들 구역에 수십 개의 비용 테이블을 직접 입력해야 되는 플러그인을 사용했습니다. 단순 작업이지만 정확한 수치를 입력해야 하므로 꽤 시간이 걸리는 작업이죠. 생각하다가 데이터베이스에 직접 수치를 입력하는 방법을 찾아냈습니다.



의뢰인이 보내온 파일은 hwp 파일, 표에는 원화와 달러가 동시에 표시돼있습니다. 이것을 엑셀로 전환해야 하고 달러부분만 추출해야 합니다. 다시 엑셀로 달러 부분만 만들어달라고 요구할 수도 없죠. 위처럼 몇 줄의 행만 있으면 원화 부분을 제거하는데 문제가 없겠지만 수십, 수백 개의 행에서 원하는 부분만 추출하려면 정규표현식을 이용합니다.



엑셀 전환이야 쉽게 할 수 있지만 문제는 달러부분만 추출해야 하는데 위는 원화 아래는 달러입니다. 이를 구분하자면 서로 다른 부분이 있습니다. 콤마가 있는 부분이 원화이므로 텍스트 편집기의 찾기에서 정규표현식을 사용한다는 버튼을 클릭한 다음 정규 표현식을 입력합니다. dot은 줄바꿈을 제외한 모든 글자나 기호, 숫자를 일치시킵니다. 여기에 플러스 기호를 추가하면 여러 개가 일치됩니다 콤마를 추가하면 콤마가 있는 행만 일치됩니다. 이제 모두 찾기 버튼을 클릭한 다음 제거하면 달러부분만 남게 됩니다. 정규 표현식을 이용하지 않고 단순히 제거만 했다면 수백 개의 컬럼에서 상당히 시간이 많이 걸리는 작업이 됐을 겁니다.


http://www.regexr.com/


정규 표현식을 배우기 좋은 도구가 있습니다. 샘플 텍스트도 있고 정규 표현식의 각종 기호가 하는 역할을 바로 알 수 있습니다.



설명이 영어로 돼있지만 기호에 대해 파악하는데는 별 지장이 없습니다. 책에서도 우선 위 도구를 이용해 기호에 대한 설명을 하고 서브라임 텍스트로 HTML 문서를 대상으로 실제로 어떻게 작업하는지 보여줍니다. 


프로그래밍이나 웹디자인, 웹개발에 입문한다면 정규 표현식을 미리 배워두는 것이 좋습니다. 기호의 역할만 알면 되고 많이 알아야 하는 것도 아닙니다. 몇 가지만 알고 있어도 코드 편집이 아주 편해집니다.



저작자 표시 비영리 변경 금지
신고

티스토리 툴바