__ 마이클 피츠제럴드
이 책은 예제를 적극 활용해서 정규표현식을 설명한다. 이는 정규표현식을 가능한 쉽게 익히도록 하기 위함이다. 정규표현식에 대한 개념도 예제를 통해 설명하기 때문에, 직접 따라 해보면서 쉽게 이해할 수 있을 것이다.
정규표현식이란 텍스트에서 원하는 패턴을 찾는 도구다. 좀 더 정확하게 말하면 문서나 파일에 나오는 문자열의 집합에서 원하는 패턴을 찾기 위해 특별히 인코딩한 문자열이 바로 정규표현식이다.
정규표현식의 개념은 이미 1940년대 초에 나왔지만, 1952년 수학자 스테판 클리니가 집필한 『Introduction to Metamathematics』(뉴욕, 반 노스트랜드)의 초판이 발행되면서 부각되기 시작했다. 그리고 1970년대 초, 유닉스 운영체제(브라이언 커니건, 데니스 리치, 켄 톰슨, AT&T 벨 연구소의 사람들이 만듦)와 sed, grep 같은 유닉스 유틸리티의 출현과 더불어 컴퓨터 공학자들에게 광범위하게 퍼지게 되었다.
정규표현식은 컴퓨터 애플리케이션에도 등장하기 시작했는데, QED 문서 편집기가 그 중 한 예다. QED는 Quick Editor의 약자로 Scientific Data Systems SDS 940에서 실행되는 버클리 시분할 시스템을 위해 개발되었다. 이 문서 편집기는 1970년에 켄 톰슨이 MIT의 호환 시분할 시스템의 편집기를 수정해서 만든 것으로, 컴퓨팅 분야에 정규표현식을 적용한 초창기 시도 중 하나다(부록의 [표 A-1]의 QED의 정규표현식 참고).
이 책에서는 다양한 프로그램을 사용하여 예제를 풀어보기 때문에, 각 프로그램이 얼마나 쓸모 있고 유용한지를 자연스럽게 배울 수 있다. 그 중 어떤 프로그램은 여러분의 윈도우 시스템에서 쉽게 구할 수 없다는 이유로 유용하지 않다고 속단할 수도 있다. 물론 여러분이 불필요하다고 생각하거나 관심이 가지 않는다면 사용하지 않아도 상관없다. 하지만 컴퓨팅 업계에서 제대로 경력을 쌓고 싶다면 유닉스 기반 환경에서 정규표현식을 배우라고 권하고 싶다. 나는 25년 동안 유닉스 환경에서 일을 해왔지만 아직도 매일 새로운 것을 배우고 있다.
“유닉스를 이해하지 못하는 사람은 유닉스를 다시 발명할 운명에 처할 것이다” ? 헨리 스펜서
이 책에서 선보일 몇 가지 프로그램은 웹 브라우저에서 실행할 수 있기 때문에 대부분의 독자가 쉽게 사용할 수 있을 것이다. 그 밖의 몇몇 프로그램은 명령어나 셸 프롬프트에서, 그리고 한두 가지는 데스크톱에서 실행해야 한다. 만약 해당 프로그램을 가지고 있지 않다면 내려받기를 권한다. 대부분 무료이거나 아주 저렴하다.
이 책은 전문 용어를 많이 쓰지 않는다. 필요하다면 올바른 용어가 무엇인지 설명하지만 그렇게 많지 않다. 전문 용어가 오히려 학습에 장애물이 될 수 있다는 점을 깨달은 다음부터 이렇게 해왔다. 다시 말해서 정규표현식을 딱딱한 언어로 설명해서 독자들이 당황하는 일이 없도록 노력할 것이다.
정규표현식은 수없이 많은 부분에서 사용된다. 가장 쉽게 찾을 수 있는 곳은 vi(vim), grep, sed 등과 같은 유닉스 명령행 도구다. 또한 Perl(당연히), 자바, 자바스크립트, C#, 루비 등 수많은 프로그래밍 언어에서도 정규표현식이 사용되며, XSLT 2.0 같은 선언형 언어에서도 볼 수 있다.
각 경우에서 유사점과 차이점이 있다. 이 책에서 모든 내용을 다루지는 못하지만 중요한 부분에 대해서는 짚고 넘어갈 것이다. 모든 경우에 대한 차이점을 다 설명하다가는 병원 신세를 져야 할지도 모른다. 이 책에 그런 부분을 자세히 설명하느라 지면을 낭비하지 않았다. 그러니 책 제목처럼 입문서를 기대하고 있다면 제대로 고른 것이다.
---「저자 서문」 중에서
캘리포니아 산라몬에서 이수진, 이성희
정규표현식은 HTML5나 모바일 프로그래밍 같이 요즘 인기 있는 신기술이 아니다. 심지어 1970년대에 등장한 오래된 기술이다. 그런데 아직도 배워야 할까? 그렇다. 업이 컴퓨터와 관련 있는 사람이라면 누구나 배워야 한다. 특히 유닉스나 리눅스 시스템을 다루는 사람이라면 더더욱 잘 알아야 한다. 왜 그럴까? 시스템 관리나 프로그래밍 업무에는 텍스트를 처리해야 하는 경우가 엄청나게 많은데, 정규표현식은 이를 위한 최고의 도구이기 때문이다.
정규표현식을 처음 접하면 너무 생소해서 어렵게만 느껴진다. 무슨 암호 같아서 이해가 가질 않는다. 그런데 노련한 베테랑 개발자나 시스템 관리자들이 정규표현식을 자유자재로 쓰면서 눈 깜짝할 사이에 많은 일을 하는 것을 보면 부럽지 않은가? 여러분도 그렇게 할 수 있다. 이 책이 정규표현식을 시작하려는 여러분에게 좋은 길라잡이가 될 것이다.
이 책은 정규표현식을 처음 배우는 독자를 위한 입문서다. 개념부터 설명하지 않고 이해하기 쉽도록 예제부터 보여준다는 점이 이 책의 가장 큰 특징이다. 가장 많이 사용되는 정규표현식을 예로 들고, 거기에 나온 정규표현식을 하나씩 설명해 가는 방식이다. 따라서 이해하기 쉽고 재미있다. 이 책의 내용을 모두 익히고 나면 정규표현식이 더 이상 낯설지 않을 것이다. 거기에 만족하지 말고 저자가 소개하는 다음 단계의 책을 읽고 정규표현식의 고수가 되기 바란다.
마지막으로 조희진 씨를 비롯한 한빛미디어 담당자 분들과 베타리더 서준우 씨에게 감사드린다. 그리고 번역 기간 내내 잘 참고 도와준 재원, 재우에게 고맙고 사랑한다는 말을 전하고 싶다.
---「옮긴이 서문」 중에서