한 권으로 끝내는 정규표현식
잰 고이바에르츠 외 지음, 김지원 옮김 / 한빛미디어 / 2010년 9월
평점 :
절판


책의 내용:
정규식은 매력적인 도구입니다. 단, 만능해법은 아니며 복잡도에 따른 연산시간 증가를 반드시 고려해야만 합니다.

참고로 다음부분은 저의 경험담입니다. HTML 페이지에서 원하는 텍스트만 얻기 위해 나름대로 파싱코드를 짰으나 그 결과는 제가 의도한대로 동작하지 않았습니다. HTML 태그의 너무나도 다양한 각 속성과 값의 사용방식이 예외적인 상황을 일으키는 변수로 작용했던 것이지요. 옆에서 같이 작업하던 후배와 이야기 하던 중 알게된 것이 바로 정규식의 효과였습니다. 단 한줄의 정규표현식을 사용한 메소드 호출(String.ReplaceAll("regex"))은 저의 몇십줄 코드보다 뛰어난 성능을 내고 있던 것입니다. 정규식... 그 당시에는 아무리 봐도 도저히 이해가 가지 않았습니다. 당시 그 학기에 전공 과목 중에서 컴파일러를 수강하기도 했으나 강의내용 중에서 중요한 부분인 정규식이 프로그램에서 사용되는 정규표현식과 동일하다는 사실도 미쳐 모르고 있었습니다.
프로젝트에서 문자열 분석을 주로 해야 했기 때문에 로직을 간편하게하기 위해 정규식 사용이 절실히 필요해져서 이후에 위키디피아 등으로 POSIX 작성규칙을 보고 따라했으나 결코 쉽지 않았습니다. 프로그래밍 언어별로 모든 사항들이 적용되는게 아니었고 책에서(47 페이지) 초보자가 흔히 하는 실수 중 하나인 이스케이프 처리 남용은 저 또한 반복하던 실수였습니다.
이스케이프 시퀀스라는 용어는 다른번역서 등에서 탈출문자, 확장열이라고 번역되어 사용되었기 때문에 정확한 의미도 모르고 사용하고 있었습니다. 그런데 책에서(49페이지) 정확히 해설을 해주어서 이번기회에 알게 되었습니다.
책에서 예제로 제시한 모든 프로그래밍 언어를 숙지하고 있지 않았기 때문에 당장 필요한 자바와 자바스크립트 위주로 정규표현식 예제를 활용했습니다.
번역본이다 보니 어느정도 "나태한" 등의 매끄럽지 않은 번역체 느낌을 주기도 합니다. 오타가 거의 없습니다.
정규식과 관련해 유니코드에 대한 자세한 설명과 유니코드의 표기법, 언어별 분류인 부록, 스크립트의 의미에 대해서도 정말 자세히 알게되었습니다.

책의 구성:
책의 초반부에서는 정규표현식 작성 및 테스트를 위한 다양한 툴을 소개합니다. 웹 애플리케이션이나 데스트탑용 애플리케이션을 소개 하고 있으며, 유료와 무료여부도 구분을 해놓았습니다.
편집기 프로그램 등에서 찾기 또는 바꾸기 기능을 사용하기 위해 해당 기능을 실행하면 다이얼로그에 정규식을 사용할 것인지, 대소문자구분은 어떻게 할것인지, 어떻게 매칭시킬것인지 등을 체크할 수 있습니다. 이 옵션에 대한 설명도 책에서 다루고 있습니다. 예를 들면, 특정 정규식을 적용할 때 대소문자는 구분하지 않는다고 미리 기술해 놓고 있습니다.
책의 전체적인 구성은 다음과 같습니다.
각 챕터는 소단원 또는 주제를 나열하는 방식으로 구성이 되어있습니다. 그 주제는 문제(실세계에서 겪게되는 문자열 처리에 관한 문제)-해결책(8개의 프로그래밍 언어 각각에 대해 모범답안을 제시합니다)-토의(제시한 모범답안의 정규표현식이 왜 저렇게 작성되고 어떻게 작동하는지 정말 자세하게 설명을 해줍니다) 여러가지 문제들을 제시하며 어떻게 해결할 수 있는지 사례기반으로 그 해법과 설명을 제시합니다. 이점이 다른 책과의 가장 큰 차이점 입니다.
부분문자열을 찾는 문제부터 이메일주소 검사하기, 전화번호 검사하기, 날짜와 시간 검사하기, 우편번호 검사하기, 숫자(정규식은 숫자의 경우도 모두 문자로 처리하기 때문에 주의해야 합니다) 처리하는 방법, URL 유효성 검사, HTML 태그에서 원하는 부분만 추출하는 방법, XML 태그에서 원하는 부분만 추출하는 방법 등 다양한 사례를 제시하고 있고, 최대 8개의 프로그래밍 언어별로 구현방법을 제시하고 있다는 것이 가장 큰 장점입니다.
설명방식이 약간은 지루하고 딱딱할 수도 있습니다만, 문자열 파싱 시 원하는 결과를 얻기 위해 적당한 사례를 찾는 방식으로 이 책을 활용한다면 그 효과는 몇배가 될 것입니다.
그리고, 초반부의 내용을 잘 숙지해야 이후에 제시되는 사례기반의 정규표현식 해법들을 이해하기 용이하며, 프로그래밍에 적용해서 원하는 결과를 얻기 위해서는 수많은 연습을 꼭 하셔야 합니다.

댓글(0) 먼댓글(0) 좋아요(1)
좋아요
북마크하기찜하기 thankstoThanksTo