정규표현식 001. 맛보기

조회 수 8362 추천 수 0 2012.01.02 09:52:06

현대인에게 있어 최고의 장난감은 뭐니뭐니해도 컴퓨터입니다. 요즘 너도나도 스마트폰을 애용하시지만 따지고 보면 스마트폰도 결국은 컴퓨터입니다.


그렇다면 컴퓨터로 할 수 있는 최고의 놀이는 무엇일까요? 필자더러 꼽으라고 한다면 단연 정규표현식입니다.


“웃기고 있네, 당근 게임이지. 혹은 웹서핑이지” 하시는 분들... 물론 계십니다. 하지만 정규표현식에는 이들과 다른, 매우 강력한 특징이 있습니다. 바로 지적인 유희를 가능케 한다는 점입니다.


“컴퓨터로 하는 최고의 지적인 작업이라면 프로그래밍이잖아” 하신다면 잘 보셨습니다. 정규표현식도 일종의 프로그래밍이니까요. 물론 C나 자바 등의 일반 언어와 비교할 수는 없겠지만 적어도 문법을 익히고 로직을 세워야 한다는 점에서는 프로그래밍적인 요소가 있다는 얘기입니다.


이쯤에서 슬슬 궁금증이 밀려오기 시작할 것 같네요. 도대체 정규표현식이 뭐길래 하고 말이죠. 프로그래밍의 세계에서는 백마디 말보다 한줄의 예제가 훨씬 빨리 다가오는 법, 일단 샘플을 보겠습니다.


1998-09-23

03-27/2003

09/27/2010


보다시피 연도들입니다. 표현 방법이 각각 다르죠? 웹 사이트들을 돌면서 위와 같은 연도들을 죽 긁어다가 에디터에 붙여놓았다 치고 이제 이 연도들을 하나의 포맷으로 통일시키려고 합니다. 그 포맷은 맨 위줄의 ‘연도-월-일’로 정하겠습니다.


여러분 같으면 어떻게 하시겠습니까? 그냥 맨손으로? 그렇게 대답하신 분은 퇴장입니다. 컴퓨터를 돌도끼 대신 휘두르시는 분은 이 글을 읽을 자격이 없습니다. T_T


사실 이런 문제는 워드프로세서나 에디터에 있는 찾기/바꾸기 기능 갖고는 해결이 어렵습니다. 아니, 어려운 게 아니라 불가능합니다. 그렇다면? 그렇죠. 바로 정규표현식입니다.


정규표현식을 실제로 구동하는 방법은 여러 가지가 있는데 일단 울트라 에디트에 들어 있는 ‘바꾸기’ 기능을 사용해서 설명해 보겠습니다.


울트라 에디트를 실행한 뒤 위의 연도들을 긁어다 붙입니다. 또는 직접 입력합니다. 메인 메뉴의 ‘검색’에서 ‘바꾸기’를 선택합니다. 컨트롤 키와 R을 함께 눌러도 마찬가지입니다. 교체라는 제목의 팝업 창이 뜹니다. 여기서 ‘정규식’ 체크 박스를 켭니다. 그리고 ‘고급’ 버튼을 눌러 ‘정규식 엔진’ 가운데 ‘펄’을 체크합니다.


이제 일반적인 찾기/바꾸기가 아닌, 정규표현식에 의한 찾기/바꾸기가 실행됩니다. 먼저 ‘검색할 대상’에 다음과 같이 입력합니다. 직접 입력하면 안 된다는 거, 아시죠? 정규표현식은 괴상하게 생겨서 오타가 나기 쉽거든요. 물론 문법에 익숙해지면 덜합니다만... 암튼 아래 줄을 복사해다가 붙이세요.


(\d{2})(-|/)(\d{2})(-|/)(\d{4})


그리고 ‘교체할 대상’에 아랫줄을 입력합니다.


\5-\3-\1


자, 이제 마지막 단계입니다. ‘모두 교체’ 버튼을 사알짝 눌러줍니다. 어떤 일이 벌어질까요? 결과는 다음과 같습니다.


1998-09-23

2003-27-03

2010-27-09


필이 팍 꽂히시나요? 신기하지 않습니까? “아니, 어떻게 연도와 월이 저절로 바뀌지?” 하는 감탄이 들려오는 듯합니다.?


하지만 사실 위의 검색식은 완전하지 않답니다. 가령 ‘2011/10/23’으로 되어 있는 연도는 위의 검색식으로 바꿀 수 없습니다. 또 월이나 일이 한 자리로 되어 있는 경우도 마찬가지입니다. 물론 위의 식을 수정해서 가능케 할 수는 있습니다만 상당히 복잡해집니다. 우선은 위의 식 정도부터 서서히 알아가도록 하죠. 언제? 다음 회부터입니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
9 정규표현식 009. 메타문자 4 머니북 2012-01-10 6585
8 정규표현식 008. 메타문자 3 머니북 2012-01-09 7680
7 정규표현식 007. 메타문자 2 마라톤맨 2012-01-08 12457
6 정규표현식 006. 메타문자 1 마라톤맨 2012-01-07 9063
5 정규표현식 005. 근데 어디다 쓰는 것인고? 마라톤맨 2012-01-06 6750
4 정규표현식 004. 정규표현식이란? 마라톤맨 2012-01-05 7507
3 정규표현식 003. 맛보기 울트라 수퍼 심화 단계 마라톤맨 2012-01-04 6653
2 정규표현식 002. 맛보기 심화 단계 마라톤맨 2012-01-03 6765
» 정규표현식 001. 맛보기 마라톤맨 2012-01-02 8362