최근 한 달여 동안 침대에서 이 책과 함께 잠이들곤 했다.
이 책은 정규표현식을 다루는 최고의 명서이다.
인터넷을 둘러보다 보면 정규 표현식을 설명하는 많은 문서들에서 언제나 빠짐없이 등장하는 단 한권의 책이다.
-거의 모든 문서들에서 많은 정규식 책들 중 오직 이 책만을 추천하고 있을 정도로 이 책의 위상은 독보적이다.
이 책은 3판(2006)까지 나와있는데, 우리말로 되어있는 것은 2판(2002)이다.
이 책의 저자는 정규 표현식 분야의 권위자이며, 실제로 정규 표현식의 발전에 많은 기여를 했다.
다음은 이 책(2판)의 목차이다. -3판에는 PHP가 추가되어있다.
1장. 정규 표현식 소개
2장. 기초 예제
3장. 정규 표현식의 기능과 종류
4장. 정규 표현식 처리 원리
5장. 실용 정규 표현식 기법
6장. 효율적인 정규 표현식 사용
7장. 펄
8장. 자바
9장. 닷넷
정규식을 처음 접하는 사람이 이 책의 1장과 2장을 보고 나면,
"이제 나는 정규 표현식의 달인이야. 이제 이 책은 더 이상 안봐도 되겠어. 나머지는 실전으로 익히자." 라는 욕망에 사로잡히게 될지도 모른다.
나는 실제로 그랬는데, 아마 저자는 이미 그런 마음을 잘 알고 있었나보다.
부디 책을 끝까지 정독하라는 충고를 곳곳에서 해주지 않았더라면 나는 분명히 이 책을 다 읽지 않았을 것이다.
그럼 이렇게 배워둔 정규 표현식을 어디에 써먹을 것인가?
정규식을 써야하는 곳은 수도 없이 많다. 아는만큼 보인다는 말이있다.
심지어 이 책의 저자는 책의 오류를 찾기 위해 정규식을 사용하기도 했는데, 이것은 정규식을 모르는 사람들은 상상도 할 수 없는 기발한 생각이다.
이런 유틸리티 목적만으로도 우리의 삶을 충분히 편하게 해주지만,
우리는 프로그램에서도 멋진 식들을 활용해보길 원한다.
프로그래밍 코드에서 정규식을 사용해야하는 가장 잦은 부분, 그리고 중요한 부분은 아마도 입력값 검증일 것이다.
Writing Secure Code에서 마이클 하워드는 입력값 검증의 중요성을 무던히도 강조하는데,
그는 항상 모든 입력값을 정규식으로 완벽하게 체크하는 좋은 습관을 보여주었다.
이 책에서 저자는 정규식을 테스트 하기위해 perl 과 egrep을 많이 사용하는데,
내가 좋아하는 툴은 바로 vim이다.
나는 그동안 vim에서 정규식으로 매치를 해보고 치환을 할 때, 매치했던 표현식을 다시 재사용하는 방법을 몰라서 다시 힘들게 타이핑 하곤했는데 오늘 KLDP에서 좋은 답변을 얻었다.
vim에서 정규식으로 문자열을 치환하기 위해
/^some[regular]expression(.*)$ 와 같은 식을 만들어 먼저 원하는 문자열이 잘 매치되는지 확인을 해봅니다.
이제 :%s/the expression/replace string/g 를 통해 문자열을 바꾸고 싶은데,
위에서 썼던 식을 복사하고 붙여넣는 방법을 몰라서 다시 머리를 싸매며 타이핑하곤 합니다.
간단하게 할 수 있는 방법이 있습니까?
:%s//replace string/g
이 책은 번역이 아주 잘되어 있고 꽤나 신경을 써서 만들어진 흔적이 엿보인다.
단지 흠이 있다면, 몇몇 정규표현식에서의 오타와 예제 문자열들에서 있어야할 밑줄이 상당수 빠져있는 것인데, 내용을 이해하는데 있어서 그렇게 불편한 정도는 아니다.
이런 부분들의 교정과 함께 3판 또한 출간된다면 나는 아주 기쁠 것 같다.
의외로 이책을 본 프로그래머들을 별로 보지 못했다.
물론 타 프로그래머들이 작성해 놓은 정규표현식을 보고 내린 결론이다.
말이 필요없는 책이다.
경우에 따라서 자신의 프로그램코드를 대폭 줄여줄것이고, 불가능을 가능으로 바꿔줄 책이다.
물론 익히고, 활용하는 과정까지는 쉽진 않았지만,
계속 프로그램을 할 생각이라면, 좀 힘들고 지루해도 꼭 익혀놓는게 큰 도움이 될거라 생각한다.
어느날 우연히 이 책을 만나서 2003년 11월 이책을 구입했습니다.
처음에는 좀 더 확장된 와일드 문자 정도로 생각하고 읽기 시작했는데, 와일드 문자하고는 격이 틀리더군요. 이후에 각 언어의 도움말이나 문법책 같은 곳에서 정규식에 관한 설명을 봤는데 대부분 활용부분에 관해서 짧은 예제를 설명해 놓은 것에 불과합니다. 이 책은 정규식의 개념과 원리 그리고 예제에 대해서 자세하게 설명이 되어 있습니다. 아직까지 국내에서 나온책 중에서 이 책에 견줄만한 책은 못 봤습니다.(사실 관련 서적은 거의 없습니다.)
다만, 정규식을 처음 접하시는 분들은 아마도 2번정도 읽어야지 많은 부분이 이해가 될 것입니다.
내용 자체가 어찌보면 좀 지루할 수도 있고 대부분 Perl 언어를 기반으로 설명이 되어 있어서 펄을 전혀 모르시는 분들은 펄에도 살짝 적응을 하셔야 합니다. 물론 펄을 몰라도 큰 문제는 없습니다.
이 말씀을 책장사들이 흔히 하는 말처럼 드리는 건 아닙니다. 저 역시 펄을 사용하지 않는 개발자입니다. ^^; 하지만, 텍스트 처리에서는 확실히 펄이 강력하고 비교적 간단한 문법을 제공합니다.
1장부터 6장까지는 일반적으로 통용되는 정규 표현식에 대한 설명들이구요 나머지는 펄, 자바, 닷넷에 특화된 내용들로 되어 있습니다. 물론 펄에 관한 내용이 가장 많습니다. 그 이유는 이책을 읽어보시면 자연스럽게 아시게 됩니다. ^^
별이 4개인 이유는 번역 자체는 매끄러운 편이나 단순 오타와 정규표현식 예제에서 틀린 부분이 다수 존재하기 때문입니다. 한빛 미디어 홈페이지에 가셔서 이책을 검색하시면 정오표가 있습니다. 대부분 제가 찾아서 등록해 놓은 건데 대락 4,5장까지만 찾다가 지쳐서 포기했습니다.
이런 점이 정규표현식 책에서는 치명적인 문제입니다만 항상 의심하는 자세로 보시면 실력 향상에 많은 도움이 됩니다. -_-;;
저도 배우는 입장에서 실무에 많이 적용하지는 못했습니다만, 확실히 텍스트 처리에서는 정규표현식을 아는 것과 모르는 것에서 효율차이가 엄청납니다. 텍스트 작업시 찾기/바꾸기 기능만으로 처리할 수 없는 수많은 투콤보(Ctrl C Ctfl V) 작업을 효과적으로 제거해 주죠. ^^
발췌: 강컴서평중
내용은 훌륭하다고 생각합니다..
그러나 쉴 새 없는 오탈자로 인해 읽는 이의 리듬을 끊는 것이 아쉽습니다..
행여 다는 독자들이 필자나 역자의 예제 및 정답, 혹은 명령어에 오류가 있지 않을까 하는 의구심이 들지 않게 다음 개정판은 신경 써 주시리라 믿습니다..
Perl언어를 어지간히 공부했다고 해도...
정규표현식은 정말 다양하고 재미있고 쉽고도 어려운 분야인것 같습니다.
이제까지 잘 이해가 되지 않았던 부분을 기초부터 고난이도까지 가려운곳을 콕콕 찝어서 긁어주는 시원함을 느끼면서 이책의 매력에 푹 빠져 있습니다. ^^
그동안 정규 표현식만을 다룬 책은 오렐리의 원서 말고는 구경해본 적이 없었다.
다른 유닉스 관련 서적에서 조금씩 다루는 것이 전부였었는데 이번에 한빛에서 번역서가 나오게
되어 정말 반가웠다. 책 표지의 맨 위에 써있는 "문자열 처리의 팔방미인" 이라는 글귀가 가장 인상적이었다.
정규표현식은 정말 막강한 도구이다. 이것이 없다면 문자열 처리 작업은 수많은 시간과 노동을 착취하는 지루한 작업이 되겠지만 간단한 정규표현식 사용으로 너무나 쉽게 처리 할 수도 있는 것이다.
유닉스 환경이나 다른 수많은 프로그래밍 언어에서 사용할 수 있으므로 배워두면 하나도 손해볼 것이 없는 좋은 도구임에 틀림 없다.
게다가 개정판에서는 자바와 닷넷 등의 최근 개발 환경에서 정규표현식을 다룬 것도 추가되었다. 자바 개발자나 닷넷 개발자들에게는 아주 환영받을 부분이다.
여러분도 같이 동참하여 삽으로 땅을 파기 보다는 포크레인으로 땅을 파는 기분을 느껴보았으면 한다.