컴퓨터가 일상의 큰 부분을 차지하는 오늘날, 정규표현식을 배제하고는 컴퓨터 기반의 작업을 논할 수 없다. 컴퓨터로 작업하는 일상의 어느 순간에든 무의식적으로나마 정규표현식이 사용되지 않는 곳이 있을까? 흔히들 사용하는 문서 편집기에서 어떤 문서를 수정할 때, 삭제하거나 교체할 부분이 적다면 수동으로 고쳐도 되겠지만 많은 부분에 걸쳐 어느 정도의 공통분모를 지닌 문자열을 수정해야 할 때는 그런 노가다 대신 편집기 메뉴의 ‘찾아바꾸기’ 같은 기능을 이용하는 것이 일반적이고 편리하다. 눈에 띄지는 않지만 브라우저의 렌더링이나 프로그래밍 언어에도 정규표현식이 사용된다. 이렇듯, 컴퓨터 상에서 무슨 작업을 하든 정규표현식은 알게 모르게 적용되고 있다.
하지만 각종 작업에서 이렇듯 주요 역할을 하는 정규표현식에 대해 우리는 얼마나 알며 관심을 갖고 있을까? 기껏해야 필요할 때 웹 사이트를 배회하며 본인이 원하는 정규표현식은 어디에 있는지 찾느라 시간을 허비한다. 운이 좋으면 본인에게 필요한 정규표현식과 근접한 것을 찾을 수는 있지만, 충족해야 할 조건이 조금이라도 까다로워지면 비슷한 것조차 찾기 힘들다. 심지어 만약 필요한 사항을 만족하는 정규표현식을 발견했다 하더라도 그 문법이 본인의 사용 언어나 툴에 내장된 정규표현식 기능과 호환되지 않아 문제 해결을 위해 골머리를 앓게 되는 상황이 흔히 발생한다. 그렇게 해서 검색한 정규표현식을 한 번 사용하더라도, 근본 원리를 모른 채 넘어가서 이후에 다른 종류의 정규표현식을 작성해야 할 때 또다시 웹 사이트를 기웃거리며 시간을 보내곤 한다. 본 교재는 그러한 악순환을 끊고 일상과 불가분의 관계에 있는 정규표현식의 명확한 문법을 각종 툴이나 언어가 의존하는 각 정규표현식 엔진의 문법 스타일별 차이점과 함께 빠짐없이 공부하여, 향후 정규표현식이 필요해질 때마다 어느 누구의 도움도 받지 않고 본인이 직접 작성하여 사용할 수 있는 능력을 갖추고자 하는 이들을 위해 심혈을 기울여 완성되었다.
나는 이 책을 번역하는 과정에서 직접 각 정규표현식을 작성해 보면서, 기본 문법만 습득한 것이 아니라 어떠한 문제에 직면했을 때는 어떤 식으로 작성하면 되겠다는 응용력까지 갖추게 되었다. 그건 이 책의 완성도와 체계적인 구성으로 인해 가능했다. 번역 작업의 초반에는 언제나 문서 변환 작업을 거치게 되는데, 기존에 나는 정규표현식을 잘 몰랐기에 두 개의 연속 빈칸을 한 개의 빈칸으로 바꾸는 등의 간단한 작업은 가능했지만 각 행 앞의 쓸데없는 빈칸이나 영문이나 숫자와 한글 사이의 탭들만 제거하기 위해 일일이 수동으로 제거했다. 하지만 정규표현식에 눈을 뜬 후에는 더 이상 그런 원시적인 방법은 사용하지 않게 됐다. 서버 측 스크립트로 웹 사이트 로그인을 구현할 때에도 사용자 입력 암호의 유효 인식 길이를 복잡한 소스 코드가 아니라 단 한 줄의 정규표현식을 사용해서 제한할 수 있다. 복잡하고 정교한 후처리는 소스 코드를 통해서 구현해야겠지만, 터무니 없는 사용자 입력을 미연에 방지하는 데에는 정규표현식이 적격이다.
일반적인 문서 작업이든 프로그램 소스 코드 작업이든 간에 값이나 문자열 데이터의 처리가 절반 이상의 비중을 차지하므로, 정규표현식의 능수능란한 응용력만 있으면 복잡해질 수 있는 작업도 단 몇 줄로 처리할 수 있고 작업이나 코드의 효율성도 높아진다. 정규표현식이라는 핵무기를 이용할 것인지 말 것인지는 본인의 선택에 달렸다. 한가지 분명한 것은, 이 빈틈 없는 핵무기를 제대로 이해하고 활용하기로 마음 먹는 순간부터 여러분의 삶은 한 층 나아지고 여유로워질 것이라는 점이다.
이 책은 Java, Ruby, Python, Perl, JavaScript, PHP, .NET, C#, VB.NET을 이용해 개발하는 프로그래머나 EditPlus, MS 오피스, 한컴 오피스를 비롯한 각종 문서 편집기에서 작업하는 사용자 모두에게 맞춤화된 해결책을 쥐어줄 것이다. 시중에 좋은 정규표현식 교재가 몇 권 존재하지만, 이 모든 언어와 툴의 차이점을 다루고 실례를 통해 일관된 결과를 얻을 수 있는 방법을 상세히 설명하는 책은 바로 이 교재뿐이다. 자, 평생을 정규표현식의 껍데기만 핥으며 임시방편으로 웹을 전전하며 살아가든지 이 책의 지식을 흡수해서 정규표현식을 정복한 능력자가 되든지, 이제 결정은 각자의 몫이다.







