책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > 프로그래밍 언어 기타
· ISBN : 9791185890456
· 쪽수 : 424쪽
· 출판일 : 2016-02-29
책 소개
목차
Chapter 1 [입문] 정규표현식: 메타 문자, 구문, 엔진 _ 1
1.1 정규표현식의 기본 3
1.2 문자열과 문자열 처리 8
1.3 정규표현식의 기본 3연산: 접합, 선택, 반복 16
1.4 정규표현식의 신택스 슈가 25
1.5 캡처와 치환: 정규표현식으로 문자열을 조작한다 34
1.6 정규표현식의 확장 기능: 전방 탐색/재귀/역참조 55
1.7 정규표현식 엔진의 기본 65
Chapter 2 정규표현식의 역사: 이론과 적용 관점을 모두 아우르는 _ 71
2.1 정규표현식의 기원: ‘계산’의 정형화 73
2.2 클레이니에 의한 통일 76
2.3 [적용편] 프로그래머의 친구 80
2.4 프로그래밍 언어와 정규표현식의 만남 86
2.5 최근의 정규표현식 엔진 현황 88
Chapter 3 프로그래머를 위한 고급 정규표현식: 단순한 정규표현식과 최신 엔진의 구조 비교 _ 97
3.1 단순한 정규표현식과 정규 언어 99
3.2 현대 정규표현식의 다양한 기능/구문/구현 111
3.3 읽기 쉬운 정규표현식 작성 120
3.4 현실적으로 타협하기 123
Chapter 4 DFA형 엔진: 유한 오토마타와 결정성 _ 129
4.1 정규표현식과 유한 오토마타 131
4.2 오토마타 구현 142
4.3 [구현 기술] On-the-Fly 구성법 154
4.4 DFA의 장점: 최소화와 동일성 판정 162
Chapter 5 VM형 엔진: 핵심은 ‘백트랙’ _ 167
5.1 기본적인 VM형 엔진 구현 169
5.2 실용적인 VM 구현 177
5.3 오니그모의 VM 구현 190
5.4 VM 이 외 부분 구현 211
5.6 정리 244
Chapter 6 정규표현식 엔진의 3대 기술 동향: JIT 컴파일, 고정 문자열 탐색, 비트 병렬 _ 245
6.1 JIT 컴파일: 자바스크립트와 정규표현식 엔진의 고속화 247
6.2 고정 문자열 탐색을 이용한 고속화 257
6.3 비트 병렬 기법을 이용한 일치 266
Chapter 7 정규표현식의 함정: 백트랙 증가, 일치 동작의 차이 _ 275
7.1 백트랙 증가에 의한 성능 저하와 해결책 276
7.2 일치에 대한 고찰 289
7.3 각기 다른 정규표현식 엔진 간의 동작 차이 296
Chapter 8 정규표현식을 넘어서: 작성하지 않기, 해석하기, 적합하지 않은 구문 알기_ 307
8.1 정규표현식 자동 생성 308
8.2 복잡한 정규표현식의 해석 314
8.3 구문 해석의 세계: 정규표현식보다 표현력이 높은 문법 사용하기 323
Appendix 부록 _ 335
A.1 정규와 비정규의 벽: 정규표현식의 수학적 배경 336
A.2 정규성의 매력: 정규 언어의 진보된 수학적 배경 358
찾아보기 388
리뷰
책속에서
초보자도 이 책을 통해 정규표현식을 마스터할 수 있도록 ‘정규표현식이란 무엇인가?’라는 기본부터 시작해서 책 전반에 걸쳐 이해하기 쉽게 설명하고자 많은 노력을 기울였다. 또한, 정규표현식의 역사/구조/이론은 물론 정규표현식 처리를 위한 VM 설계 방침이나 JIT를 이용한 최적화 방법까지 다루고 있어서, 매일 정규표현식을 업무에서 사용하는 프로그래머나 정규표현식을 깊이 있게 배우고자 하는 열혈 학습자 그리고 언어 처리 관련 개발에 관심 있는 독자들도 이 책을 즐길 수 있도록 구성했다. 이론에 관심 있는 독자들을 위해 정규표현식의 수학적 배경에 대해서는 별도의 부록으로 정리했다.
앞에서 본 ‘[0-9]’에서 ‘[’와 ‘]’가 특별한 의미를 지니는 메타 문자이고, 0과 9가 리터럴이다. 또한 ‘?d’도 특별한 의미를 지니므로 메타 문자다. 간단하게 말하면 ‘적혀 있는 그대로(문자 그대로)’ 일치되는 것이 리터럴이고, 그 외에는 메타 문자라고 생각하면 된다.
지금까지 정규표현식은 ‘패턴을 나타내는 것’이라고 설명했다. 이번 절에서는 단순히 패턴을 나타내는 데 그치지 않고, ‘문자열이 어떤 식으로 패턴에 일치하는가’라는 정보를 가지고 문자열을 조작하는 캡처(capture)와 치환에 대해 알아보겠다. 캡처와 치환을 사용하면 1.2절에서 소개한 모든 응용 문제를 정규표현식으로 처리할 수 있다. 프로그래머들이 정규표현식을 더 편리하게 사용할 수 있도록 추가된 기능이다.