목차
옮긴이 머리말 x
베타리더 후기 xi
지은이·옮긴이 소개 xiv
시작하며 xvi
감사의 글 xviii
이 책에 대하여 xix
표지에 대하여 xxii
CHAPTER 1 이 책이 다루는 범위 1
01 정규표현식에 관해 4
02 프로그래밍 기계의 등장 5
03 의도적인 소프트웨어 개발 8
CHAPTER 2 수량자와 특별한 하위 패턴들 11
퍼즐 01 와일드카드 스코프 13
x로 시작하고 y로 끝나는 모든 단어를 매치하라 13
[저자 생각] 각 패턴은 무엇과 매치하는가? 14
[AI 생각] CodingNet 17
퍼즐 02 단어와 시퀀스 18
일부 단어들이 x로 시작하지 않더라도 매치하라 18
[저자 생각] 무엇이 단어 경계를 결정하는지 생각하라 19
[AI 생각] 트랜스포머 19
퍼즐 03 Endpoint 클래스 21
같은 문자 클래스의 시작과 끝이 다른 단어를 매치하라 21
[저자 생각] 정규표현식을 다듬어서 우리가 원하는 것과 매치하자 22
[AI 생각] 친구들은 전기로 움직이는가? 22
퍼즐 04 구성 포맷 26
정규표현식을 사용해서 구성 포맷을 파싱하라 26
[저자 생각] 형태는 경계선을 가진다는 것을 기억하라 27
[AI 생각] 사이버다인 볼트 노트 27
퍼즐 05 사람의 유전자 29
텔로미어로 끝나는 DNA 인코딩 시퀀스를 식별하라 29
[저자 생각] 분자생물학의 중심 원리를 기억하라 31
[AI 생각] 안드로이드는 전기양의 꿈을 꾸는가? 32
CHAPTER 3 함정과 톱니바퀴 속 모래 37
퍼즐 06 치명적인 백트래킹 39
정규표현식을 사용해 메시지 프로토콜을 빠르게 검증하라 39
[저자 생각] 파국을 피하기 위해 노력하라 41
[AI 생각] 기술적 특이점 43
퍼즐 07 도미노 플레이하기 45
ASCII로 표현되어 매치된 도미노들을 식별하라 45
[저자 생각] 첫 번째 생각보다 효율적인 방법을 시도하라 46
[AI 생각] 막대기와 돌멩이를 사용하는 전쟁 47
퍼즐 08 고급 도미노 49
유니코드의 코드 포인트로서 매치하는 도미노들을 식별하라 49
[저자 생각] 다이어그램에 관한 생각은 항상 즐겁다 51
[AI 생각] 얼마나 많은 독자가 튜링 테스트를 통과할 수 있을까? 51
퍼즐 09 센서 아트 54
상태 시퀀스에서 유효하게 인코딩된 신호들만 식별하라 54
[저자 생각] 매치 패턴이 존재한다면 찾아라 56
[AI 생각] 내 마음은 움직이고 있어. 나는 느낄 수 있어 57
CHAPTER 4 정규표현식을 사용해서 함수 생성하기 61
퍼즐 10 str.count() 재구현하기 63
정규표현식을 사용해 str.count()와 등가인 함수를 작성하라 63
[저자 생각] 정규표현식으로 어떻게 하위 문자열의 출현을 셀 수 있을까? 64
[AI 생각] 특별한 기계 64
퍼즐 11 str.count() 재구현하기(더욱 엄격하게) 67
숫자 변수를 사용하지 않고 str.count()에 해당하는 함수를 작성하라 67
[저자 생각] 주어진 제약을 만족하는 파이썬 함수를 작성하라 68
[AI 생각] HORAR의 전쟁 70
퍼즐 12 함수 이름 찾기 72
함수에 일반적인 이름이 아닌 의미 있는 이름을 지어라 72
[저자 생각] 코드는 처음 작성되었을 때보다 훨씬 더 많이 읽힌다 73
[AI 생각] 컴퓨터 과학에는 두 가지 어려운 문제가 있다 73
퍼즐 13 포커 플레이 1 74
앞으로 나올 퍼즐을 위해 적절하게 정규표현식을 사용하는 기능을 만들어라 74
[저자 생각] 함수들은 프로그램 규모가 클수록 도움이 된다 75
[AI 생각] 그는 내 포커페이스를 읽을 수 없다 76
퍼즐 14 포커 플레이 2 82
스트레이트 또는 플러시 카드 패를 식별하라 82
[저자 생각] 천 리 길도 한 걸음부터 82
[AI 생각] 불공평한 일에서 인간을 보호하는 사회 84
퍼즐 15 포커 플레이 3 88
포커 카드 패를 포 카드와 매치하라 88
[저자 생각] 이길 수 없다면 속이고 또 속여라 89
[AI 생각] 언젠가는 기계들도 숫자를 셀 수 있을 것이다 89
퍼즐 16 포커 플레이 4 91
포커 카드 패를 풀 하우스와 매치하라 91
[저자 생각] 불운을 감수하고 베팅해야 할 수도 있다 92
[AI 생각] 자유 의지는 공짜가 아니다 93
퍼즐 17 포커 플레이 5 96
포커 카드 패에서 트리플, 투 페어, 원 페어를 매치하라 96
[저자 생각] 3은 2보다 크지만 4보다 작다 97
[AI 생각] 2까지 세기 99
CHAPTER 5 쉽고, 어렵고, 불가능한 작업들 103
퍼즐 18 같은 카운트 식별하기 105
시작과 끝 기호의 균형을 맞추어라 105
[저자 생각] 수평적 사고가 답을 찾는 데 도움이 될 수 있다 105
[AI 생각] 여기 용들이 있다 106
퍼즐 19 단어가 중복되기 전에 매치하기 108
전체 문자열 안에서 중복되지 않는 초기 접두사를 매치하라 108
[저자 생각] 요구 사항을 만족시킬 패턴을 찾아라 109
[AI 생각] 촘스키 위계의 딥페이크 110
퍼즐 20 IPv4 주소 테스팅하기 113
IPv4 주소 형식을 실용적으로 매치하라 113
[저자 생각] 이 문제에 대해 정규표현식이 충분히 강력한지 질문하라 114
[AI 생각] 나는 기계가 되고 싶어 115
퍼즐 21 숫자 시퀀스 매치하기 117
연속해서 두 배가 되는 숫자를 나타내는 시퀀스를 매치하라 117
[저자 생각] 해결책이 될 수 없는 것을 배제하라 118
[AI 생각] 밀과 체스보드 119
퍼즐 22 피보나치 수 매치하기 122
피보나치 수를 나타내는 문자열을 매치하라 122
[저자 생각] 황금비 나선은 우아하게 피보나치 수를 일반화한다 123
[AI 생각] 자연의 프랙털 기하학 124
퍼즐 23 소수 매치하기 127
소수 시퀀스의 초기 유한 접두사를 나타내는 문자열을 매치하라 127
[저자 생각] 정수론의 기본 정리를 존중하라 128
[AI 생각] 상식과 비상식 129
퍼즐 24 상대 소수 매치하기 131
상대 소수(서로소)의 시퀀스를 나타내는 문자열을 매치하라 131
[저자 생각] 참과 거짓은 사람의 생각에 따라 결정된다 132
[AI 생각] 아침 식사 전에 불가능한 여섯 가지 일들 133
마치며 135
APPENDIX A 정규표현식 사용 방법 137
01 정규표현식을 사용하는 도구는 무엇인가? 140
02 초급: 텍스트의 패턴 매치하기 141
03 중급: 텍스트의 패턴 매치하기 149
04 고급: 정규표현식 확장 157
APPENDIX B 엔딩 크레디트 165
정규표현식 주요 패턴 171
찾아보기 173