return to the main page Mastering Regular Expressions
Third Edition, August 2006
By Jeffrey Friedl

Full Index
(use your browser's find function to search)

\(...\)   137
\<...\>   21, 25, 50, 133-134, 150
\<...\>, egrep   15
\<...\>, Emacs   101
\<...\>, mimicking in Perl   341-342
\+   141
\\\\   190, 380, 444
\?   141
`\+'   history 87
\0   117-118
\1   138, 300, 303
\1, Perl   41
\A   112, 129-130
\A, optimization   246
\a   115-116
\B   134
\b   65, 115-116, 134
\b, backspace and word boundary   44, 46
\b, Java   368
\b, Perl   286
\b, PHP   442
\b\B   240
\C   120
\C, PHP   442
\D   49, 120
\d   49, 120
\d, Perl   288
\d, PHP   442
\E   290
\E, Java   368, 395, 403
\e   79, 115-116
\f   115-116
\f, introduced   44
\G   130-133, 212, 315-316, 362, 447
\G, advanced example   132, 399
\G, .NET   408
\G, optimization   246
\G, optimization, \kname   (see named capture)
\l   290
\L...\E   290
\L...\E, inhibiting   292
\n   49, 115-116
\n, introduced   44
\n, machine-dependency   115
\N{LATIN SMALL LETTER SHARP S}   290
\N{name}   290
\N{name}, inhibiting   292
\p{^...}   288
\p{...}   121, 288
\p{...}, Java   368-369, 402-403
\p{...}, Perl   125
\p{All}   125
\p{All}, Perl   288
\p{all}   369
\p{Any}   125, 442
\p{Any}, Perl   288
\p{Arrows}   124
\p{Assigned}   125-126
\p{Assigned}, Perl   288
\p{Basic_Latin}   124
\p{Box_Drawing}   124
\p{C}   122
\p{C}, Java   369
\p{Cc}   123
\p{Cf}   123
\p{Cherokee}   122
\p{Close_Punctuation}   123
\p{Cn}   123, 125-126, 369, 408
\p{Cn}, Java   369
\p{Co}   123
\p{Connector_Punctuation}   123
\p{Control}   123
\p{Currency}   124
\p{Currency_Symbol}   123
\p{Cyrillic}   122, 124
\p{Dash_Punctuation}   123
\p{Decimal_Digit_Number}   123
\p{Dingbats}   124
\p{Enclosing_Mark}   123
\p{Final_Punctuation}   123
\p{Format}   123
\p{Gujarati}   122
\p{Han}   122
\p{Hangul_Jamo}   124
\p{Hebrew}   122, 124
\p{Hiragana}   122
\p{InArrows}   124
\p{InBasic_Latin}   124
\p{InBox_Drawing}   124
\p{InCurrency}   124
\p{InCyrillic}   124
\p{InDingbats}   124
\p{InHangul_Jamo}   124
\p{InHebrew}   124
\p{Inherited}   122
\p{Initial_Punctuation}   123
\p{InKatakana}   124
\p{InTamil}   124
\p{InTibetan}   124
\p{IsCherokee}   122
\p{IsCommon}   122
\p{IsCyrillic}   122
\p{IsGujarati}   122
\p{IsHan}   122
\p{IsHebrew}   122
\p{IsHiragana}   122
\p{IsKatakana}   122
\p{IsLatin}   122
\p{IsThai}   122
\p{IsTibetan}   124
\p{javaJavaIdentifierStart}   369
\p{Katakana}   122, 124
\pL   PHP 442
\p{L}   121-122, 133, 368, 395
\p{L&}   122-123, 125, 442
\p{L&}, Java   369
\p{L&}, Perl   288
\p{Latin}   122
\p{Letter}   122, 288
\p{Letter_Number}   123
\p{Line_Separator}   123
\p{Ll}   123, 406
\p{Lm}   123, 406
\p{Lo}   123, 406
\p{Lowercase_Letter}   123
\p{Lt}   123, 406
\p{Lu}   123, 406
\p{M}   120, 122
\p{Mark}   122
\p{Math_Symbol}   123
\p{Mc}   123
\p{Me}   123
\p{Mn}   123
\p{Modifier_Letter}   123
\p{Modifier_Symbol}   123
\p{N}   122, 395
\pN   PHP 442
\p{Nd}   123, 368, 406
\p{Nl}   123
\p{No}   123
\p{Non_Spacing_Mark}   123
\p{Number}   122
\p{Open_Punctuation}   123
\p{Other}   122
\p{Other_Letter}   123
\p{Other_Number}   123
\p{Other_Punctuation}   123
\p{Other_Symbol}   123
\p{P}   122
\p{Paragraph_Separator}   123
\p{Pc}   123, 406
\p{Pd}   123
\p{Pe}   123
\p{Pf}   123
\p{Pf}, Java   369
\p{Pi}   123
\p{Pi}, Java   369
\p{Po}   123
\p{Private_Use}   123
\p{Ps}   123
\p{Punctuation}   122
\p{S}   122
\p{Sc}   123-124
\p{Separator}   122
\p{Sk}   123
\p{Sm}   123
\p{So}   123
\p{Space_Separator}   123
\p{Spacing_Combining_Mark}   123
\p{Symbol}   122
\p{Tamil}   124
\p{Thai}   122
\p{Tibetan}   124
\p{Titlecase_Letter}   123
\p{Unassigned}   123, 125
\p{Unassigned}, Perl   288
\p{Uppercase_Letter}   123
\p{Z}   121-122, 368, 407
\pZ   PHP 442
\p{Zl}   123
\p{Zp}   123
\p{Zs}   123
\Q   Java 368, 395, 403
\Q...\E   290
\Q...\E, inhibiting   292
\r   49, 115-116
\r, machine-dependency   115
\S   49, 56, 121
\s   49, 121
\s, Emacs   128
\s, introduction   47
\s, Perl   288
\s, PHP   442
\t   49, 115-116
\t, introduced   44
\U   117
\u   117, 290, 406
\U...\E   290
\U...\E, inhibiting   292
\v   115-116, 364
\V   364
\w   49, 65, 120
\w, Emacs   129
\w, Java   368
\w, many different interpretations   93
\w, Perl   288
\w, PHP   442
\W   49, 121
\x   117, 406
\x, Perl   286
\X   108, 120
\Z   112, 129-130
\Z, Java   370
\Z, optimization   246
\z   112, 129-130, 316, 447
\z, optimization   246
\z, PHP   442
//   322
/c   131-132, 315
/e   319-321
/g   61, 132, 307, 311-312, 315, 319
/g, introduced   51
/g, with regex object   354
/i   135
/i, introduced   47
/i, with study   359
/m   135
/o   352-353
/o, with regex object   354
/osmosis   293
/s   135
/x   135, 288
/x, history   90
/x, introduced   72
-Dr   363
-i   as -y 86
-y   old grep 86
<>   54
<>, and $_   79
<br/>   481
!~   309
$&   299-300
$&, checking for   358
$&, mimicking   302, 357
$&, naughty   356
$&, .NET   424
$&, OK for debugging   331
$&, pre-match copy   355
$+   300-301, 345
$+, example   202
$+, .NET   202, 424
$`   300
$`, checking for   358
$`, mimicking   357
$`, naughty   356
$`, .NET   424
$`, OK for debugging   331
$`, pre-match copy   355
$*   362
$/   35, 78
$/, Perl   35
$'   300
$', checking for   358
$', mimicking   357
$', naughty   356
$', .NET   424
$', OK for debugging   331
$', pre-match copy   355
$$   .NET 424
$   112-113, 130, 447
$, escaping   77
$, Java   370
$, optimization   246
$, Perl interpolation   289
$, PHP   442
$_   79, 308, 311, 314, 318, 322, 353-354, 359
$_, .NET   424
$_, .NET, $+[0]   (see @+)
$0   300
$0, Java   380
$0, PHP   459
$0, PHP, $-[0]   (see @-)
${0}   459
$1   137-138, 300, 303
$1, introduced   41
$1, Java   380
$1, .NET   424
$1, in other languages   138
$1, pre-match copy   355
$all_matches   455
$ARGV   79
$HostnameRegex   76, 137, 303, 351
$HttpUrl   303, 305, 345, 351
$LevelN   330, 343
$matches   450
$^N   300-301, 344-346
${name}   409
${name~}   424
$NestedStuffRegex   339, 346
$^R   302, 327
$^W   297
%   Perl interpolation 289
(?!)   241, 333, 335, 340-341
(?#...)   99, 136, 420
(?1), Java   402
(?1), PCRE   476
(?1), PHP   476
(?1)   PHP 482
[(?-i)]   446
[(?i)]   446
(?n)   408
(?P<...>)   451-452, 457
(?R)   475
(?R), PCRE   475
(?R), PHP   475
(?R), PHP, (?s)   (see: dot-matches-all mode; mode modifier)
(?R), PHP, (?s:...)   (see mode-modified span)
(?R), PHP, (?x:...)   (see mode-modified span)
(?R), PHP, (?x)   (see: comments and free-spacing mode; mode modifier)
(?R), PHP, *+   (see possessive quantifiers)
(?R), PHP, *   (see star)
(?R), PHP, +   (see plus)
++   483
++, (see also possessive quantifiers), ".*"   (see double-quoted string example)
.*, introduced   55
.*, mechanics of matching   152
.*, optimization   246
.*, warning about   56
.NET   xvii, 405-438
.NET, $+   202
.NET, after-match data   138
.NET, benchmarking   237
.NET, character-class subtraction   406
.NET, code example   219
.NET, flavor overview   92
.NET, JIT   410
.NET, line anchors   130
.NET, literal-text mode   136
.NET, MISL   410
.NET, object model   417
.NET, \p{...}   125
.NET, regex approach   96-97
.NET, regex flavor   407
.NET, search and replace   414, 423-424
.NET, URL example   204
.NET, version covered   405
.NET, word boundaries   134
=~   308-309, 318
=~, introduced   38
=~, introduced, ?   (see question mark)
?...?   308
@"..."   103
@-   300, 302, 339
@+   300, 302, 314
@   Perl interpolation 289
[=...=]   128
[:...:]   127
[:<:]   91
[.....]   128
^   112-113, 130
^, Java   370
^, optimization   246
^Subject: example   94, 151-152, 154, 242-243, 245, 289
^Subject: example, Java   95
^Subject: example, .NET   96
^Subject: example, Perl   55
^Subject: example, Perl debugger   361
^Subject: example, PHP   97
^Subject: example, Python   97
{min,max}   20, 141
$+   .NET 202
\0   117-118
$0   300
$0, Java   380
$0, PHP   459
(?1), Java   402
(?1), PCRE   476
(?1), PHP   476
\1   138, 300, 303
\1, Perl   41
$1   137-138, 300, 303
$1, introduced   41
$1, Java   380
$1, .NET   424
$1, in other languages   138
$1, pre-match copy   355
(?1)   PHP 482
8859-1 encoding   29, 87, 106, 108, 123
\a   115-116
@   escaping 77
\A   112, 129-130
\A, optimization   246
after-match data, Java   138
after-match data, .NET   138
after-match data, PHP   138
after-match variables, Perl   299
after-match variables, pre-match copy   355
Aho, Alfred   86, 180
\p{all}   369
\p{All}   125
\p{All}, Perl   288
$all_matches   455
$all_matches, collated   455
$all_matches, vs. $matches   454
$all_matches, stacked   456
alternation   139-140
alternation, and backtracking   231
alternation, efficiency   222, 231
alternation, greedy   174-175
alternation, hand tweaking   261
alternation, introduced   13-14
alternation, order of   175-177, 223, 260, 482
alternation, order of, for correctness   28, 189, 197
alternation, order of, for efficiency   224
alternation, and parentheses   13
analogy, backtracking, bread crumbs   158-159
analogy, backtracking, stacking dishes   159
analogy, ball rolling   262
analogy, building a car   31
analogy, charging batteries   179
analogy, engines   143-147
analogy, first come, first served   153
analogy, gas additive   150
analogy, learning regexes, Pascal   36
analogy, learning regexes, playing rummy   33
analogy, regex as a language   5, 27
analogy, regex as filename patterns   4
analogy, regex as filename patterns, regex-directed match   (see NFA)
analogy, regex as filename patterns, text-directed match   (see DFA)
analogy, transmission   148-149, 228
analogy, transparencies (Perl's local)   298
analogy, transparencies (Perl's local), anchor   (see also: word boundaries; enhanced line-anchor mode)
analogy, caret   129
analogy, dollar   129
analogy, end-of-line optimization   246
analogy, exposing   256
analogy, line   87, 112-113, 150
analogy, overview   129
anchored(...)   362
anchored `string'   362
anchoring bounds   388
anchoring bounds, Java   388
AND   class set operations 125-126
ANSI escape sequences   79
\p{Any}   125, 442
\p{Any}, Perl   288
\p{Any}, Perl, any character   (see dot)
appendReplacement method   380
appendTail method   381
$ARGV   79
\p{Arrows}   124
ASCII encoding   29, 106-107, 115, 123
Asian character encoding   29
AssemblyName   435
\p{Assigned}   125-126
\p{Assigned}, Perl   288
\p{Assigned}, Perl, asterisk   (see star)
\p{Assigned}, Perl, atomic grouping   (see also possessive quantifiers)
\p{Assigned}, details   170-172
\p{Assigned}, for efficiency   171-172, 259-260, 268-270
\p{Assigned}, essence   170-171
\p{Assigned}, introduced   139
atomic grouping example   198, 201, 213, 271, 330, 340-341, 346
AT&T Bell Labs   86
author email   xxiii
auto-lookaheadification   410
automatic possessification   251
awk, after-match data   138
awk, gensub   182
awk, history   87
awk, search and replace   100
awk, version covered   91
awk, word boundaries   134
\b   65, 115-116, 134
\b, backspace and word boundary   44, 46
\b, Java   368
\b, Perl   286
\b, PHP   442
\B   134
\b\B   240
<B>...</B>   165-167
<B>...</B>, unrolling   270
backreferences   118, 137
backreferences, DFA   150, 182
backreferences, introduced with egrep   20-22
backreferences, vs. octal escape   412-413
backreferences, remembering text   21
backreferences, remembering text, backspace   (see \b)
backtracking   163-177
backtracking, and alternation   231
backtracking, avoiding   171-172
backtracking, computing count   227
backtracking, counting   222, 224
backtracking, detecting excessive   249-250
backtracking, efficiency   179-180
backtracking, essence   168-169
backtracking, exponential match   226
backtracking, global view   228-232
backtracking, introduction   157-163
backtracking, LIFO   159
backtracking, of lookaround   173-174
backtracking, neverending match   226
backtracking, non-match example   160-161
backtracking, POSIX NFA example   229
backtracking, saved states   159
backtracking, simple example   160
backtracking, simple lazy example   161
balanced constructs   328-331, 340-341, 436, 475-478, 481
balancing regex issues   186
Barwise, J.   85
base character   107, 120
Basic Regular Expressions   87-88
\p{Basic_Latin}   124
\b\B   240
benchmarking   232-239
benchmarking, comparative   249
benchmarking, compile caching   351
benchmarking, Java   235-236
benchmarking, for naughty variables   358
benchmarking, .NET   237, 410
benchmarking, with neverending match   227
benchmarking, Perl   360
benchmarking, PHP   234-235
benchmarking, pre-match copy   356
benchmarking, Python   238-239
benchmarking, Ruby   238
benchmarking, Tcl   239
Berkeley   86
Better-Late-Than-Never   236
<B>...</B>   165-167
<B>...</B>, unrolling   270
blocks   124, 288, 369, 402, 407
BLTN   236
BLTN, Java   236
BOL   362
\p{Box_Drawing}   124
Boyer-Moore   245, 247
bracket expressions   127
BRE   87-88
bread-crumb analogy   158-159
<br/>   481
bugs   Java 365, 368-369, 387, 392, 399, 403
Bulletin of Math. Biophysics   85
bump-along, avoiding   210
bump-along, distrusting   215-218
bump-along, introduction   148-149
bump-along, optimization   255
bump-along, in overall processing   242
Byington, Ryan   xxiv
byte   matching 120, 442, 452-453, 456
¢   124
\p{C}   122
\p{C}, Java   369
\C   120
\C, PHP   442
\C, PHP, C#   (see also .NET)
\C, strings   103
/c   131-132, 315
C comments, matching   272-276
C comments, unrolling   275-276
caching   242-245
caching, benchmarking   351
caching, compile   242-245
caching, Emacs   244
caching, integrated   243
caching, Java   478
caching, .NET   432
caching, object-oriented   244
caching, Perl   350-352
caching, PHP   478
caching, procedural   244
caching, Tcl   244
caching, unconditional   350
callback   PHP 463, 465
Capture   437
CaptureCollection   438
capturing parentheses   Java 377
car analogy   83-84
caret anchor   introduced 8
carriage return   109, 370
case   title 110
case folding   290, 292
case folding, inhibiting   292
case-insensitive mode   110
case-insensitive mode, egrep   14-15
case-insensitive mode, /i   47
case-insensitive mode, introduced   14-15
case-insensitive mode, Ruby   110
case-insensitive mode, with study   359
cast   294-295
\p{Cc}   123
CDATA   483
\p{Cf}   123
chaining (of methods)   389
character, base   120
character, classes   xvii
character, combining   107, 120
character, combining, Inherited script   122
character, vs. combining characters   107
character, control   117
character, initial character discrimination   245-248, 252, 257-259, 332, 361
character, machine-dependent codes   115
character, multiple code points   108
character, as opposed to byte   29
character, separating with split   322
character, shorthands   115-116
character class   118
character class, vs. alternation   13
character class, vs. dot   119
character class, elimination optimization   248
character class, introduced   9-10
character class, and lazy quantifiers   167
character class, mechanics of matching   149
character class, negated, must match character   11-12
character class, negated, and newline   119
character class, negated, Tcl   112
character class, positive assertion   119
character class, of POSIX bracket expression   127
character class, range   9, 119
character class, as separate language   10
character class, set operations   125-127
character class, subtraction   406
character class, subtraction (set)   126
character class, subtraction (simple)   125
character equivalent   128
character-class subtraction   .NET 406
CharBuffer   373, 376, 387
charnames pragma   290
CharSequence   365, 373, 382, 397
CheckNaughtiness   358
\p{Cherokee}   122
Chinese text processing   29
chr   420
chunk limit, Java   396
chunk limit, Perl   323
chunk limit, PHP   466
CJKV Information Processing   29
class   xvii
class, initial class discrimination   245-248, 252, 257-259, 332, 361
Click, Cliff   xxiv
client VM   236
clock clicks   239
\p{Close_Punctuation}   123
closures   339
\p{Cn}   123, 125-126, 369, 408
\p{Cn}, Java   369
\p{Co}   123
code example, Java   81, 209, 217, 235, 371, 375, 378-379, 381-384, 389
code example, .NET   219
code point, beyond U+FFFF   109
code point, introduced   107
code point, multiple   108
code point, unassigned in block   124
coerce   294-295
cold VM   236
collated data   455
collating sequences   128
combining character   107, 120
combining character, Inherited script   122
commafying a number example   64-65
commafying a number example, introduced   59
commafying a number example, without lookbehind   67
COMMAND.COM   7
comments   99, 136
comments, Java   98
comments, matching of C comments   272-276
comments, matching of Pascal comments   265
comments, .NET   420
comments, XML   483
comments and free-spacing mode   111
Communications of the ACM   85
Compilation failed   474
compile, caching   242-245
compile, once (/o)   352-353
compile, on-demand   351
compile, regex   410-411
compile method   372
Compiled (.NET)   237, 408, 410, 420, 427-428, 435
Compilers -- Principles, Techniques, and Tools   180
CompileToAssembly   433, 435
conditional   140-141
conditional, with embedded regex   327, 335
conditional, mimicking with lookaround   140
conditional, .NET   409-410
Config module   290, 299
conflicting metacharacters   44-46
\p{Connector_Punctuation}   123
Constable, Robert   85
Constable, Robert, contorting, Perl   294
Constable, Robert, forcing   310
Constable, Robert, metacharacters   44-46
Constable, Robert, regex use   189
continuation lines   178, 186-187
continuation lines, unrolling   270-271
contorting an expression   294-295
\p{Control}   123
control characters   117
Conway, Damian   339
cooking for HTML   68, 414
correctness   vs. efficiency 223-224
www.cpan.org   358
CR   109, 370
create_function   463, 465
CR/LF   370
Cruise, Tom   51
crummy analogy   158-159
CSV parsing example, Java   217, 401
CSV parsing example, .NET   435
CSV parsing example, Perl   213-219
CSV parsing example, PHP   480
CSV parsing example, unrolling   271
CSV parsing example, VB.NET   219
\p{Currency}   124
currency, \p{Currency}   124
currency, \p{Currency_Symbol}   123
currency, \p{Sc}   123
currency, Unicode block   123-124
\p{Currency_Symbol}   123
current location   Java 374, 383, 398, 400
currentTimeMillis()   236
\p{Cyrillic}   122, 124
\D   49, 120
\d   49, 120
\d, Perl   288
\d, PHP   442
Darth   197
dash in character class   9
\p{Dash_Punctuation}   123
date_default_timezone_set   235
DBIx::DWIW   258
debugcolor   363
debugging   361-363
debugging, with embedded code   331-332
debugging, regex objects   305-306
debugging, run-time   362
\p{Decimal_Digit_Number}   123
default regex   308
define-key   101
delegate   423-424
delimited text   196-198
delimited text, standard formula   196, 273
delimiter, with shell   7
delimiter, with substitution   319
delimiters   PHP 445, 448
description   Java 365
Devel::FindAmpersand   358
Devel::SawAmpersand   358
DFA, acronym spelled out   156
DFA, backreferences   150, 182
DFA, boring   157
DFA, compared with NFA   224, 227
DFA, efficiency   179
DFA, implementation ease   183
DFA, introduced   145, 155
DFA, lazy evaluation   181
DFA, longest-leftmost match   177-179
DFA, testing for   146-147
dialytika   108
\p{Dingbats}   124
dish-stacking analogy   159
dollar   for Perl variable 37
dollar anchor   129
dollar anchor, introduced   8
dollar value example   24-25, 51-52, 167-170, 175, 194-195
DOS   7
dot   119
dot, vs. character class   119
dot, introduced   11-12
dot, Java   370
dot, mechanics of matching   149
dot, Tcl   113
dot   370
dot modes   Java 111, 370
.NET   xvii, 405-438
.NET, $+   202
.NET, after-match data   138
.NET, benchmarking   237
.NET, character-class subtraction   406
.NET, code example   219
.NET, flavor overview   92
.NET, JIT   410
.NET, line anchors   130
.NET, literal-text mode   136
.NET, MISL   410
.NET, object model   417
.NET, \p{...}   125
.NET, regex approach   96-97
.NET, regex flavor   407
.NET, search and replace   414, 423-424
.NET, URL example   204
.NET, version covered   405
.NET, word boundaries   134
dot-matches-all mode   111-112
double-quoted string example, allowing escaped quotes   196
double-quoted string example, egrep   24
double-quoted string example, final regex   264
double-quoted string example, makudonarudo   165, 169, 228-232, 264
double-quoted string example, sobering example   222-228
double-quoted string example, unrolled   262, 268
double-word finder example   81
double-word finder example, description   1
double-word finder example, egrep   22
double-word finder example, Emacs   101
double-word finder example, Java   81
double-word finder example, Perl   35, 77-80
-Dr   363
dragon book   180
DWIW (DBIx)   258
dynamic regex   327-331
dynamic regex, sanitizing   337
dynamic scope   295-299
dynamic scope, vs. lexical scope   299
\E   290
\E, Java   368, 395, 403
\e   79, 115-116
/e   319-321
earliest match wins   148-149
EBCDIC   29
ECMAScript (.NET)   406, 408, 412-413, 421, 427
ed   85
ed, and backtracking   179-180
ed, correctness   223-224
ed, Perl   347-363
ed, Perl-specific issues   347-363
ed, PHP   478-480
ed, regex objects   353-354
ed, unlimited lookbehind   134
egrep, after-match data   138
egrep, backreference support   150
egrep, case-insensitive match   15
egrep, doubled-word solution   22
egrep, example use   14
egrep, flavor overview   92
egrep, flavor summary   32
egrep, history   86-87
egrep, introduced   6-8
egrep, metacharacter discussion   8-22
egrep, regex implementation   183
egrep, version covered   91
egrep, word boundaries   134
electric engine analogy   143-147
Emacs, after-match data   138
Emacs, control characters   117
Emacs, flavor overview   92
Emacs, re-search-forward   101
Emacs, search   100
Emacs, strings as regexes   101
Emacs, syntax class   128
Emacs, version covered   91
Emacs, word boundaries   134
email   of author xxiii
email address example   70-73, 98
email address example, Java   98
email address example, .NET   99
embedded code, local   336
embedded code, my   338-339
embedded code, regex construct   327, 331-335
embedded code, sanitizing   337
embedded string check optimization   247, 257
Embodiments of Mind   85
Empty   433
empty-element tag   481
\p{Enclosing_Mark}   123
\p{Enclosing_Mark}, ASCII   29, 106-107, 115, 123
\p{Enclosing_Mark}, introduced   29
\p{Enclosing_Mark}, issues overview   105
\p{Enclosing_Mark}, Latin-1   29, 87, 106, 108, 123
\p{Enclosing_Mark}, UCS-2   107
\p{Enclosing_Mark}, UCS-4   107
\p{Enclosing_Mark}, UTF-16   107
\p{Enclosing_Mark}, UTF-8   107, 442, 447
END block   358
end method   377
end-of-string anchor optimization   246
engine, analogy   143-147
engine, hybrid   182, 239, 243
engine, implementation ease   183
engine, introduced   27
engine, testing type   146-147
engine, testing type, with neverending match   227
engine, type comparison   156-157, 180-183
English module   357
English vs. regex   275
enhanced line-anchor mode   112-113
enhanced line-anchor mode, introduced   69
ERE   87-88
ereg suite   439
errata   xxiii
Escape   432
escape, introduced   22
escape, term defined   27
essence, atomic grouping   170-171
essence, greediness, laziness, and backtracking   168-169
essence, greediness, laziness, and backtracking, NFA   (see backtracking)
eval   319
example, atomic grouping   198, 201, 213, 271, 330, 340-341, 346
example, commafying a number   64-65
example, commafying a number, introduced   59
example, commafying a number, without lookbehind   67
example, CSV parsing, Java   217, 401
example, CSV parsing, .NET   435
example, CSV parsing, Perl   213-219
example, CSV parsing, PHP   480
example, CSV parsing, unrolling   271
example, CSV parsing, VB.NET   219
example, dollar value   24-25, 51-52, 167-170, 175, 194-195
example, double-quoted string, allowing escaped quotes   196
example, double-quoted string, egrep   24
example, double-quoted string, final regex   264
example, double-quoted string, makudonarudo   165, 169, 228-232, 264
example, double-quoted string, sobering example   222-228
example, double-quoted string, unrolled   262, 268
example, double-word finder   81
example, double-word finder, description   1
example, double-word finder, egrep   22
example, double-word finder, Emacs   101
example, double-word finder, Java   81
example, double-word finder, Perl   35, 77-80
example, email address   70-73, 98
example, email address, Java   98
example, email address, .NET   99
example, filename   190-192, 444
example, five modifiers   316
example, floating-point number   194
example, form letter   50-51
example, gr[ea]y   9
example, hostname   22, 73, 76, 98-99, 137-138, 203, 260, 267-268, 304, 306, 450-451
example, hostname, egrep   25
example, hostname, Java   209
example, hostname, plucking from text   71-73, 206-208
example, hostname, in URL   74-77
example, hostname, validating   203-205
example, hostname, VB.NET   204
example, HREF   452
example, HTML   443-444, 459, 461, 464, 481, 484
example, HTML, conversion from text   67-77
example, HTML, cooking   68, 414
example, HTML, encoding   414
example, HTML, <HR>   194
example, HTML, link   201-203
example, HTML, optional   140
example, HTML, paired tags   165
example, HTML, parsing   132, 315, 321, 399
example, HTML, tag   9, 18-19, 26, 200-201, 326, 357
example, HTML, URL   74-77, 203, 206-208, 303, 450-451
example, HTML, URL-encoding   320
example, HTTP response   467
example, image tags   397
example, IP   5, 187-189, 267-268, 311, 314, 348-349
example, Jeffs   61-64
example, lookahead   61-64
example, mail processing   53-59
example, makudonarudo   165, 169, 228-232, 264
example, pathname   190-192
example, population   59
example, possessive quantifiers   198, 201
example, postal code   209-212
example, regex overloading   341-345
example, stock pricing   51-52, 167-168
example, stock pricing, with alternation   175
example, stock pricing, with atomic grouping   170
example, stock pricing, with possessive quantifier   169
example, temperature conversion, Java   382
example, temperature conversion, .NET   425
example, temperature conversion, Perl   37, 283
example, temperature conversion, PHP   444
example, text-to-HTML   67-77
example, this|that   133, 139, 243, 245-247, 252, 255, 260-261
example, unrolling the loop   270-271, 477
example, URL   74-77, 201-204, 208, 260, 303-304, 306, 320, 450-451
example, URL, egrep   25
example, URL, Java   209
example, URL, plucking   206-208
example, username   73, 76, 98
example, username, plucking from text   71-73
example, username, in URL   74-77
example, variable names   24
example, XML   481-484
example, ZIP code   209-212
exception, IllegalArgumentException   373, 380
exception, IllegalStateException   376-377
exception, IndexOutOfBoundsException   375-376, 380
exception, IOException   81
exception, PatternSyntaxException   371, 373
Explicit (Option)   415
ExplicitCapture (.NET)   408, 420, 427
exponential match   222-228, 330, 340
exponential match, avoiding   264-266
exponential match, discovery   226-228
exponential match, explanation   226-228
exponential match, non-determinism   264
exponential match, short-circuiting   250
exponential match, solving with atomic grouping   268
exponential match, solving with possessive quantifiers   268
expose literal text   255
expression, context   294-295
expression, contorting   294-295
Extended Regular Expressions   87-88
\f   115-116
\f, introduced   44
\f, introduced, Fahrenheit   (see temperature conversion example)
failure, atomic grouping   171-172
failure, forcing   241, 333, 335, 340-341
FF   109, 370
file globs   4
file-check example   2, 36
filename, patterns (globs)   4
filename, prepending to line   79
filename example   190-192, 444
Filo, David   397
\p{Final_Punctuation}   123
find method   375
find method, region   384
FindAmpersand   358
Fite, Liz   33
five modifiers example   316
flags method   394
flavor, Perl   286-293
flavor, superficial chart, general   92
flavor, superficial chart, Java   367
flavor, superficial chart, .NET   407
flavor, superficial chart, PCRE   441
flavor, superficial chart, Perl   285, 287
flavor, superficial chart, PHP   441
flavor, superficial chart, POSIX   88
flavor, term defined   27
flex   version covered 91
floating `string'   362
floating-point number example   194
forcing failure   241, 333, 335, 340-341
foreach vs. while vs. if   320
form letter example   50-51
\p{Format}   123
freeflowing regex   277-281
Friedl, Alfred   176
Friedl, brothers   33
Friedl, Fumie   v, xxiv
Friedl, Fumie, birthday   11-12
Friedl, Jeffrey   xxiii
Friedl, Stephen   xxiv, 458
fully qualified name   295
functions   related to regexes in Perl 285
\G   130-133, 212, 315-316, 362, 447
\G, advanced example   132, 399
\G, .NET   408
\G, optimization   246
/g   61, 132, 307, 311-312, 315, 319
/g, introduced   51
/g, with regex object   354
garbage collection   Java benchmarking 236
gas engine analogy   143-147
gensub   182
George, Kit   xxiv
GetGroupNames   427-428
GetGroupNumbers   427-428
gettimeofday   234
Gill, Stuart   xxiv
global vs. private   Perl variables 295
globs   filename 4
GNU awk, after-match data   138
GNU awk, gensub   182
GNU awk, version covered   91
GNU awk, word boundaries   134
GNU egrep, after-match data   138
GNU egrep, backreference support   150
GNU egrep, doubled-word solution   22
GNU egrep, -i bug   21
GNU egrep, regex implementation   183
GNU egrep, word boundaries   134
GNU egrep, word boundaries, GNU Emacs   (see Emacs)
GNU grep, shortest-leftmost match   182
GNU grep, version covered   91
GNU sed, after-match data   138
GNU sed, version covered   91
GNU sed, word boundaries   134
Gosling, James   89
GPOS   362
Greant, Zak   xxiv
greatest weakness   Perl 286
gr[ea]y example   9
gr[ea]y example, alternation   174-175
gr[ea]y example, and backtracking   162-177
gr[ea]y example, deference to an overall match   153, 274
gr[ea]y example, essence   159, 168-169
gr[ea]y example, favors match   167-168
gr[ea]y example, first come, first served   153
gr[ea]y example, global vs. local   182
gr[ea]y example, introduced   151
gr[ea]y example, vs. lazy   169, 256-257
gr[ea]y example, localizing   225-226
gr[ea]y example, quantifier   141
gr[ea]y example, swapping   447
gr[ea]y example, too greedy   152
green dragon   180
grep   Perl 324
grep, as an acronym   85
grep, flavor overview   92
grep, history   86
grep, regex flavor   86
grep, version covered   91
grep, -y option   86
group method   377
Group object (.NET)   418
Group object (.NET), Capture   437
Group object (.NET), creating   429
Group object (.NET), Index   430
Group object (.NET), Length   430
Group object (.NET), Success   430
Group object (.NET), ToString   430
Group object (.NET), using   430
Group object (.NET), Value   430
GroupCollection   429, 438
groupCount method   377
grouping   and capturing 20-22
GroupNameFromNumber   427-428
GroupNumberFromName   427-428
Groups   Match object method 429
\p{Gujarati}   122
Gutierrez, David   xxiv
\p{Han}   122
hand tweaking, alternation   261
hand tweaking, caveats   253
\p{Hangul_Jamo}   124
hasAnchoringBounds method   388
HASH(0x80f60ac)   257
hasTransparentBounds method   387
Hazel, Philip   xxiv, 91, 440
\p{Hebrew}   122, 124
height attribute   Java example 397
hex escape   117-118
hex escape, Perl   286
highlighting   with ANSI escape sequences 79
\p{Hiragana}   122
history, `\+'   87
history, AT&T Bell Labs   86
history, awk   87
history, Berkeley   86
history, ed trivia   86
history, egrep   86-87
history, grep   86
history, lex   87
history, Perl   88-90, 308
history, PHP   440
history, of regexes   85-91
history, sed   87
history, underscore in \w   89
history, /x   90
hitEnd method   389-392
hostname example   22, 73, 76, 98-99, 137-138, 203, 260, 267-268, 304, 306, 450-451
hostname example, egrep   25
hostname example, Java   209
hostname example, plucking from text   71-73, 206-208
hostname example, in URL   74-77
hostname example, validating   203-205
hostname example, VB.NET   204
$HostnameRegex   76, 137, 303, 351
hot VM   236
HREF example   452
HTML, cooking   68, 414
HTML, matching tag   200-201
HTML example   443-444, 459, 461, 464, 481, 484
HTML example, conversion from text   67-77
HTML example, cooking   68, 414
HTML example, encoding   414
HTML example, <HR>   194
HTML example, link   201-203
HTML example, optional   140
HTML example, paired tags   165
HTML example, parsing   132, 315, 321, 399
HTML example, tag   9, 18-19, 26, 200-201, 326, 357
HTML example, URL   74-77, 203, 206-208, 303, 450-451
HTML example, URL-encoding   320
htmlspecialchars   461
HTTP   newlines 115
HTTP response example   467
HTTP URL example   25, 74-77, 201-204, 206-209, 260, 303-304, 306, 320, 450-451
http://regex.info/   xxiii, 7, 345, 471
$HttpUrl   303, 305, 345, 351
hybrid regex engine   182, 239, 243
hyphen in character class   9
/i   135
/i, introduced   47
/i, with study   359
-i   as -y 86
identifier   matching 24
if   vs. while vs. foreach 320
IgnoreCase (.NET)   96, 99, 408, 419, 427
IgnorePatternWhitespace (.NET)   99, 408, 419, 427
IllegalArgumentException   373, 380
IllegalStateException   376-377
image tags   Java example 397
image tags example   397
implementation of engine   183
implicit   362
implicit anchor optimization   246
Imports   413, 415, 434
\p{InArrows}   124
\p{InBasic_Latin}   124
\p{InBox_Drawing}   124
\p{InCurrency}   124
\p{InCyrillic}   124
Index, Group object method   430
Index, Match object method   429
IndexOutOfBoundsException   375-376, 380
\p{InDingbats}   124
indispensable   TiVo 3
\p{InHangul_Jamo}   124
\p{InHebrew}   124
\p{Inherited}   122
initial class discrimination   245-248, 252, 257-259, 332, 361
\p{Initial_Punctuation}   123
\p{InKatakana}   124
\p{InTamil}   124
integrated handling   94
integrated handling, compile caching   243
interpolation   288-289
interpolation, caching   351
interpolation, introduced   77
interpolation, mimicking   321
interpolation, PHP   103
INTERSECTION   class set operations 126
interval   141
interval, introduced   20
interval, [X{0,0}]   141
\p{InTibetan}   124
introduced encoding   29
introduction   Perl 37-38
IOException   81
IP example   5, 187-189, 267-268, 311, 314, 348-349
Iraq   11
Is vs. In   121, 124-125
Is vs. In, Java   369
Is vs. In, .NET   407
Is vs. In, Perl   288
\p{IsCherokee}   122
\p{IsCommon}   122
\p{IsCyrillic}   122
\p{IsGujarati}   122
\p{IsHan}   122
\p{IsHebrew}   122
\p{IsHiragana}   122
isJavaIdentifierStart   369
\p{IsKatakana}   122
\p{IsLatin}   122
IsMatch (Regex object method)   421
ISO-8859-1 encoding   29, 87, 106, 108, 123
issues overview encoding   105
\p{IsThai}   122
\p{IsTibetan}   124
Japanese, text processing   29
“japhy”   246
Java   95-96, 365-403
Java, after-match data   138
Java, anchoring bounds   388
Java, benchmarking   235-236
Java, BLTN   236
Java, bugs   365, 368-369, 387, 392, 399, 403
Java, code example   81, 209, 217, 235, 371, 375, 378-379, 381-384, 389
Java, CSV parsing example   401
Java, description   365
Java, dot modes   111, 370
Java, doubled-word example   81
Java, JIT   236
Java, line anchors   130, 370, 388
Java, line terminators   370
Java, match modes   368
Java, match pointer   374, 383, 398, 400
Java, matching comments   272-276
Java, method chaining   389
Java, method index   366
Java, Mustang   401
Java, object model   371-372
Java, \p{...}   125
Java, regex flavor   366-370
Java, region   384-389
Java, search and replace   378-383
Java, split   395-396
Java, strings   102
Java, transparent bounds   387
Java, Unicode   369
Java, URL example   209
Java, version covered   365
Java, version history   365, 368-369, 392, 401
Java, VM   236
Java, word boundaries   134
java properties   369
\p{javaJavaIdentifierStart}   369
java.lang.Character   369
java.util.Scanner   390
Jeffs example   61-64
JfriedlsRegexLibrary   434-435
JIT, Java   236
JIT, .NET   410
JRE   236
\p{Katakana}   122, 124
keeping in sync   210-211
Keisler, H. J.   85
Kleene, Stephen   85
The Kleene Symposium   85
Korean text processing   29
Kunen, K.   85
£   124
\l   290
\p{L&}   122-123, 125, 442
\p{L&}, Java   369
\p{L&}, Perl   288
\p{L}   121-122, 133, 368, 395
\p{L}, character class   10, 13
\p{L}, identifiers   24
\p{Latin}   122
Latin-1 encoding   29, 87, 106, 108, 123
lazy   166-167
lazy, essence   159, 168-169
lazy, favors match   167-168
lazy, vs. greedy   169, 256-257
lazy, optimization   248, 257
lazy, quantifier   141
lazy evaluation   181, 355
\L...\E   290
\L...\E, inhibiting   292
lc   290
lcfirst   290
leftmost match   177-179
Length, Group object method   430
Length, Match object method   429
length-cognizance optimization   245, 247
\p{Letter}   122, 288
\p{Letter_Number}   123
$LevelN   330, 343
lex   86
lex, $   112
lex, dot   111
lex, history   87
lex, and trailing context   182
lexer   132, 389, 399
lexer, building   315
lexical scope   299
LF   109, 370
LIFO backtracking   159
limit, backtracking   239
limit, preg_split   466-467
limit, recursion   249-250
limit, recursion, line   (see also string)
limit, anchor optimization   246
limit, vs. string   55
line anchor   112-113
line anchor, mechanics of matching   150
line anchor, variety of implementations   87
line anchors, Java   130, 370, 388
line anchors, .NET   130
line anchors, Perl   130
line anchors, PHP   130
line feed   109, 370
LINE SEPARATOR   109, 123, 370
line terminators   109-111, 129-130, 370
line terminators, with $ and ^   112
line terminators, Java   370
\p{Line_Separator}   123
link, matching   201
link, matching, Java   209
link, matching, VB.NET   204
list context   294, 310-311
list context, forcing   310
literal string   initial string discrimination 245-248, 252, 257-259, 332, 361
literal text, exposing   255
literal text, introduced   5
literal text, mechanics of matching   149
literal text, pre-check optimization   245-248, 252, 257-259, 332, 361
literal-text mode   113, 136, 290
literal-text mode, inhibiting   292
literal-text mode, .NET   136
\p{Ll}   123, 406
\p{Lm}   123, 406
\p{Lo}   123, 406
local   296, 341
local, in embedded code   336
local, vs. my   297
locale   127-128
locale, overview   87
locale, \w   120-121
localizing   296-297
localtime   294, 319, 351
locking in regex literal   352
“A logical calculus of the ideas imminent in nervous activity”   85
longest match   finding 334-335
longest-leftmost match   148, 177-179
lookahead   133
lookahead, auto   410
lookahead, introduced   60
lookahead, mimic atomic grouping   174
lookahead, mimic optimizations   258-259
lookahead, negated, <B>...</B>   167
lookahead, positive vs. negative   66
lookahead example   61-64
lookaround, backtracking   173-174
lookaround, conditional   140-141
lookaround, and DFAs   182
lookaround, doesn't consume text   60
lookaround, introduced   59
lookaround, mimicking class set operations   126
lookaround, mimicking word boundaries   134
lookaround, Perl   288
lookbehind   133
lookbehind, Java   368
lookbehind, .NET   408
lookbehind, Perl   288
lookbehind, PHP   134, 443
lookbehind, positive vs. negative   66
lookbehind, unlimited   408
lookingAt method   376
Lord, Tom   183
\p{Lowercase_Letter}   123
LS   109, 123, 370
\p{Lt}   123, 406
\p{Lu}   123, 406
Lunde, Ken   xxiv, 29
\p{M}   120, 122
m/.../   introduced 38
/m   135
machine-dependent character codes   115
MacOS   115
mail processing example   53-59
makudonarudo example   165, 169, 228-232, 264
\p{Mark}   122
match   306-318
match, actions   95
match, context   294-295, 309
match, context, list   294, 310-311
match, context, scalar   294, 310, 312-316
match, DFA vs. NFA   224
match, efficiency   179
match, example with backtracking   160
match, example without backtracking   160
match, lazy example   161
match, leftmost-longest   335
match, longest   334-335
match, m/.../, introduced   38
match, m/.../, introduced, mechanics   (see also: greedy; lazy)
match, m/.../, .*   152
match, m/.../, anchors   150
match, m/.../, capturing parentheses   149
match, m/.../, character classes and dot   149
match, m/.../, consequences   156
match, m/.../, greedy introduced   151
match, m/.../, literal text   149
match, modes   110-113
match, modes, Java   368
match, negating   309
match, neverending   222-228, 330, 340
match, neverending, avoiding   264-266
match, neverending, discovery   226-228
match, neverending, explanation   226-228
match, neverending, non-determinism   264
match, neverending, short-circuiting   250
match, neverending, solving with atomic grouping   268
match, neverending, solving with possessive quantifiers   268
match, NFA vs. DFA   156-157, 180-183
match, of nothing   454
match, of nothing, position   (see pos)
match, POSIX, Perl   335
match, shortest-leftmost   182
match, side effects   317
match, side effects, intertwined   43
match, side effects, Perl   40
match, speed   181
match, in a string   27
match, tag-team   132
match, viewing mechanics   331-332
Match   Empty 433
match modes   Java 368
Match (.NET)   Success 96
Match object (.NET)   417
Match object (.NET), Capture   437
Match object (.NET), creating   421, 429
Match object (.NET), Groups   429
Match object (.NET), Index   429
Match object (.NET), Length   429
Match object (.NET), NextMatch   429
Match object (.NET), Result   429
Match object (.NET), Success   427
Match object (.NET), Synchronized   430
Match object (.NET), ToString   427
Match object (.NET), using   427
Match object (.NET), Value   427
match pointer   Java 374, 383, 398, 400
Match (Regex object method)   421
“match rejected by optimizer”   363
match results   Java 376
MatchCollection   422
Matcher, appendReplacement   380
Matcher, appendTail   381
Matcher, end   377
Matcher, find   375
Matcher, group   377
Matcher, groupCount   377
Matcher, hasAnchoringBounds   388
Matcher, hasTransparentBounds   387
Matcher, hitEnd   389-392
Matcher, lookingAt   376
Matcher, matches   376
Matcher, pattern   393
Matcher, quoteReplacement   379
Matcher, region   384-389
Matcher, region   386
Matcher, regionEnd   386
Matcher, regionStart   386
Matcher, replaceAll   378
Matcher, replaceFirst   379
Matcher, replacement argument   380
Matcher, requireEnd   389-392
Matcher, reset   392-393
Matcher, start   377
Matcher, text   394
Matcher, toMatchResult   377
Matcher, toString   393
Matcher, useAnchoringBounds   388
Matcher, usePattern   393, 399
Matcher, useTransparentBounds   387
Matcher object   373
Matcher object, reusing   392-393
$matches   450
$matches, vs. $all_matches   454
matches, unexpected   194-195
matches, viewing all   332
matches method   376, 395
Matches (Regex object method)   422
MatchEvaluator   423-424
matching, delimited text   196-198
matching, HTML tag   200
matching, longest-leftmost   177-179
matching comments   Java 272-276
MatchObject object (.NET)   creating 422
\p{Math_Symbol}   123
Maton, William   xxiv, 36
mb_ereg suite   439
MBOL   362
\p{Mc}   123
McCloskey, Mike   xxiv
McCulloch, Warren   85
\p{Me}   123
mechanics   viewing 331-332
metacharacter, conflicting   44-46
metacharacter, differing contexts   10
metacharacter, first-class   87, 92
metacharacter, introduced   5
metacharacter, vs. metasequence   27
metasequence   defined 27
method chaining   389
method chaining, Java   389
method index   Java 366
mimic, $'   357
mimic, $`   357
mimic, $&   302, 357
mimic, atomic grouping   174
mimic, class set operations   126
mimic, conditional with lookaround   140
mimic, initial-character discrimination optimization   258-259
mimic, named capture   344-345
mimic, POSIX matching   335
mimic, possessive quantifiers   343-344
mimic, variable interpolation   321
mimic, word boundaries   66, 134, 341-342
minlen length   362
minus in character class   9
MISL   .NET 410
“missing” functions   PHP 471
\p{Mn}   123
mode modifier   110, 135-136
mode-modified span   110, 135-136, 367, 392, 407, 446
modes   introduced with egrep 14-15
\p{Modifier_Letter}   123
modifiers   372
modifiers, combining   69
modifiers, example with five   316
modifiers, /g   51
modifiers, /i   47
modifiers, “locking in”   304-305
modifiers, notation   99
modifiers, /osmosis   293
modifiers, Perl   292-293
modifiers, Perl core   292-293
modifiers, with regex object   304-305
modifiers, unknown   448
\p{Modifier_Symbol}   123
Morse, Ian   xxiv
motto   Perl 348
multi-character quotes   165-166
Multiline (.NET)   408, 419-420, 427
multiple-byte character encoding   29
MungeRegexLiteral   342-344, 346
Mustang   Java 401
my, binding   339
my, in embedded code   338-339
my, vs. local   297
MySQL, after-match data   138
MySQL, DBIx::DWIW   258
MySQL, version covered   91
MySQL, word boundaries   134
\p{N}   122, 395
\n   49, 115-116
\n, introduced   44
\n, machine-dependency   115
$^N   300-301, 344-346
(?n)   408
named capture   138
named capture, mimicking   344-345
named capture, .NET   408-409
named capture, numeric names   451
named capture, PHP   450-452, 457, 476-477
named capture, with unnamed capture   409
naughty variables   356
naughty variables, OK for debugging   331
\p{Nd}   123, 368, 406
negated class, introduced   10-11
negated class, and lazy quantifiers   167
negated class, Tcl   112
negated class, Tcl, negative lookahead   (see lookahead, negative)
negated class, Tcl, negative lookbehind   (see lookbehind, negative)
NEL   109, 370, 407
nervous system   85
nested constructs, .NET   436
nested constructs, Perl   328-331, 340-341
nested constructs, PHP   475-478, 481
$NestedStuffRegex   339, 346
.NET   xvii, 405-438
.NET, $+   202
.NET, after-match data   138
.NET, benchmarking   237
.NET, character-class subtraction   406
.NET, code example   219
.NET, flavor overview   92
.NET, JIT   410
.NET, line anchors   130
.NET, literal-text mode   136
.NET, MISL   410
.NET, object model   417
.NET, \p{...}   125
.NET, regex approach   96-97
.NET, regex flavor   407
.NET, search and replace   414, 423-424
.NET, URL example   204
.NET, version covered   405
.NET, word boundaries   134
neurophysiologists   early regex study 85
neverending match   222-228, 330, 340
neverending match, avoiding   264-266
neverending match, discovery   226-228
neverending match, explanation   226-228
neverending match, non-determinism   264
neverending match, short-circuiting   250
neverending match, solving with atomic grouping   268
neverending match, solving with possessive quantifiers   268
New Regex   96, 99, 416, 421
newline   and HTTP 115
NEXT LINE   109, 370, 407
NextMatch (Match object method)   429
NFA, acronym spelled out   156
NFA, and alternation   174-175
NFA, compared with DFA   156-157, 180-183
NFA, control benefits   155
NFA, efficiency   179
NFA, efficiency, essence   (see backtracking)
NFA, first introduced   145
NFA, freeflowing regex   277-281
NFA, and greediness   162
NFA, implementation ease   183
NFA, introduction   153
NFA, nondeterminism   265
NFA, nondeterminism, checkpoint   264-265
NFA, POSIX efficiency   179
NFA, testing for   146-147
NFA, theory   180
\p{Nl}   123
\N{LATIN SMALL LETTER SHARP S}   290
\N{name}   290
\N{name}, inhibiting   292
\p{No}   123
No Dashes Hall Of Shame   458
no re 'debug'   361
no_match_vars   357
nomenclature   27
non-capturing parentheses   45, 137-138
non-capturing parentheses, (see also parentheses), Nondeterministic Finite Automaton   (see NFA)
None (.NET)   421, 427
nonillion   226
nonparticipation   parentheses 450, 453-454, 469
nonregular sets   180
\p{Non_Spacing_Mark}   123
“normal”   263-266
NUL   117
NUL, with dot   119
NULL   454
\p{Number}   122
/o   352-353
/o, with regex object   354
Obfuscated Perl Contest   320
object model, Java   371-372
object model, .NET   416-417
Object Oriented Perl   339
object-oriented handling   95-97
object-oriented handling, compile caching   244
octal escape   116, 118
octal escape, vs. backreference   412-413
octal escape, Perl   286
offset   preg_match 453
on-demand recompilation   351
oneself example   332, 334
\p{Open_Punctuation}   123
operators   Perl list 285
optimization   240-252
optimization, automatic possessification   251
optimization, BLTN   236
optimization, with bump-along   255
optimization, end-of-string anchor   246
optimization, excessive backtrack   249-250
optimization, hand tweaking   252-261
optimization, implicit line anchor   191
optimization, initial character discrimination   245-248, 252, 257-259, 332, 361
optimization, JIT   236, 410
optimization, lazy evaluation   181
optimization, lazy quantifier   248, 257
optimization, leading [.*]   246
optimization, literal-string concatenation   247
optimization, need cognizance   252
optimization, needless class elimination   248
optimization, needless parentheses   248
optimization, pre-check of required character   245-248, 252, 257-259, 332, 361
optimization, simple repetition, discussed   247-248
optimization, small quantifier equivalence   251-252
optimization, state suppression   250-251
optimization, string/line anchors   149, 181
optimization, super-linear short-circuiting   250
option, -0   36
option, -c   361
option, -Dr   363
option, -e   36, 53, 361
option, -i   53
option, -M   361
option, -Mre=debug   363
option, -n   36
option, -p   53
option, -w   38, 296, 326, 361
Option (.NET)   415
Option (.NET), whitespace   18
Options (Regex object method)   427
OR   class set operations 125-126
Oram, Andy   5
ordered alternation   175-177
ordered alternation, pitfalls   176
osmosis   293
/osmosis   293
\p{Other}   122
\p{Other_Letter}   123
\p{Other_Number}   123
\p{Other_Punctuation}   123
\p{Other_Symbol}   123
our   295, 336
overload pragma   342
\p{...}, Java   125
\p{...}, .NET   125
\p{...}, PHP   125
\p{P}   122
\p{^...}   288
\p{All}   125
\p{All}, Perl   288
\p{all}   369
panic: top_env   332
\p{Any}   125, 442
\p{Any}, Perl   288
Papen, Jeffrey   xxiv
PARAGRAPH SEPARATOR   109, 123, 370
\p{Paragraph_Separator}   123
parentheses, as \(...\)   86
parentheses, and alternation   13
parentheses, balanced   328-331, 340-341, 436, 475-478, 481
parentheses, balanced, difficulty   193-194
parentheses, capturing   137, 300
parentheses, capturing, and DFAs   150, 182
parentheses, capturing, introduced with egrep   20-22
parentheses, capturing, mechanics   149
parentheses, capturing, Perl   41
parentheses, capturing only   152
parentheses, counting   21
parentheses, elimination optimization   248
parentheses, elimination optimization, grouping-only   (see non-capturing parentheses)
parentheses, limiting scope   18
parentheses, named capture   138, 344-345, 408-409, 450-452, 457, 476-477
parentheses, nested   328-331, 340-341, 436, 475-477, 481
parentheses, non-capturing   45, 137-138
parentheses, non-participating   300
parentheses, nonparticipation   450, 453-454, 469
parentheses, with split, .NET   409, 426
parentheses, with split, Perl   326
\p{Arrows}   124
parser   132, 389, 399
parsing   regex 410
participate in match   140
Pascal   36, 59, 183
Pascal, matching comments of   265
\p{Assigned}   125-126
\p{Assigned}, Perl   288
patch   88
pathname example   190-192
Pattern, CANON_EQ   108, 368
Pattern, CASE_INSENSITIVE   95, 110, 368, 372
Pattern, CASE_INSENSITIVE bug   392
Pattern, COMMENTS   99, 219, 368, 401
Pattern, compile   372
Pattern, DOTALL   368, 370
Pattern, flags   394
Pattern, matcher   373
Pattern, matches   395
Pattern, MULTILINE   81, 368, 370
Pattern, MULTILINE bug   387
Pattern, pattern   394
Pattern, quote   395
Pattern, split   395-396
Pattern, toString   394
Pattern, UNICODE_CASE   368, 372
Pattern, UNIX_LINES   368, 370
pattern argument   472
pattern argument, array order   462, 464
pattern arguments   PHP 444, 448
pattern method   393-394
pattern modifier, A   447
pattern modifier, D   442, 447
pattern modifier, e   459, 465, 478
pattern modifier, m   442
pattern modifier, S   259, 447, 460, 467, 478-480
pattern modifier, u   442, 447-448, 452-453
pattern modifier, U   447
pattern modifier, unknown errors   448
pattern modifier, x   443, 471
pattern modifier, X   447
pattern modifiers   PHP 446-448
PatternSyntaxException   371, 373
\p{Basic_Latin}   124
\p{Box_Drawing}   124
\p{C}   122
\p{C}, Java   369
\p{Pc}   123, 406
\p{Cc}   123
\p{Cf}   123
\p{Cherokee}   122
\p{Close_Punctuation}   123
\p{Cn}   123, 125-126, 369, 408
\p{Cn}, Java   369
\p{Co}   123
\p{Connector_Punctuation}   123
\p{Control}   123
PCRE   91, 440
PCRE, “extra stuff”   447
PCRE, flavor overview   441
PCRE, lookbehind   134
PCRE, recursive matching   475-478
PCRE, study   447
PCRE, version covered   440
PCRE, \w   120
PCRE, web site   91
PCRE, X pattern modifier   447
pcre_study   259
\p{Currency}   124
\p{Currency_Symbol}   123
\p{Cyrillic}   122, 124
\p{Pd}   123
\p{Dash_Punctuation}   123
\p{Decimal_Digit_Number}   123
\p{Dingbats}   124
\p{Pe}   123
PeakWebhosting.com   xxiv
\p{Enclosing_Mark}   123
people, Aho, Alfred   86, 180
people, Barwise, J.   85
people, Byington, Ryan   xxiv
people, Click, Cliff   xxiv
people, Constable, Robert   85
people, Conway, Damian   339
people, Cruise, Tom   51
people, Filo, David   397
people, Fite, Liz   33
people, Friedl, Alfred   176
people, Friedl, brothers   33
people, Friedl, Fumie   v, xxiv
people, Friedl, Fumie, birthday   11-12
people, Friedl, Jeffrey   xxiii
people, Friedl, Stephen   xxiv, 458
people, George, Kit   xxiv
people, Gill, Stuart   xxiv
people, Gosling, James   89
people, Greant, Zak   xxiv
people, Gutierrez, David   xxiv
people, Hazel, Philip   xxiv, 91, 440
people, Keisler, H. J.   85
people, Kleene, Stephen   85
people, Kunen, K.   85
people, Lord, Tom   183
people, Lunde, Ken   xxiv, 29
people, Maton, William   xxiv, 36
people, McCloskey, Mike   xxiv
people, McCulloch, Warren   85
people, Morse, Ian   xxiv
people, Oram, Andy   5
people, Papen, Jeffrey   xxiv
people, Perl Porters   90
people, Pinyan, Jeff   246
people, Pitts, Walter   85
people, Reinhold, Mark   xxiv
people, Sethi, Ravi   180
people, Spencer, Henry   88, 182-183, 243
people, Thompson, Ken   85-86, 111
people, Tubby   265
people, Ullman, Jeffrey   180
people, Wall, Larry   88-90, 140, 363
people, Zawodny, Jeremy   258
people, Zmievski, Andrei   xxiv, 440
Perl, \p{...}   125
Perl, $/   35
Perl, $/, context   (see also match, context)
Perl, $/, contorting   294
Perl, efficiency   347-363
Perl, flavor overview   92, 287
Perl, greatest weakness   286
Perl, history   88-90, 308
Perl, introduction   37-38
Perl, line anchors   130
Perl, modifiers   292-293
Perl, motto   348
Perl, option, -0   36
Perl, option, -c   361
Perl, option, -Dr   363
Perl, option, -e   36, 53, 361
Perl, option, -i   53
Perl, option, -M   361
Perl, option, -Mre=debug   363
Perl, option, -n   36
Perl, option, -p   53
Perl, option, -w   38, 296, 326, 361
Perl, regex operators   285
Perl, search and replace   318-321
Perl, Unicode   288
Perl, version covered   283
Perl, warnings   38
Perl, warnings, ($^W variable)   297
Perl, warnings, use warnings   326, 363
Perl Porters   90
perladmin   299
\p{Pf}   123
\p{Pf}, Java   369
\p{Final_Punctuation}   123
\p{Format}   123
\p{Gujarati}   122
\p{Han}   122
\p{Hangul_Jamo}   124
\p{Hebrew}   122, 124
\p{Hiragana}   122
PHP   439-484
PHP, after-match data   138
PHP, benchmarking   234-235
PHP, callback   463, 465
PHP, CSV parsing example   480
PHP, efficiency   478-480
PHP, flavor overview   441
PHP, history   440
PHP, line anchors   130
PHP, lookbehind   134, 443
PHP, “missing” functions   471
PHP, \p{...}   125
PHP, pattern arguments   444, 448
PHP, recursive matching   475-478
PHP, regex delimiters   445, 448
PHP, search and replace   458-465
PHP, single-quoted string   444
PHP, strings   103-104
PHP, str_replace   458
PHP, study   447
PHP, Unicode   442, 447
PHP, version covered   440
PHP, \w   120
PHP, word boundaries   134
\p{Pi}   123
\p{Pi}, Java   369
\p{InArrows}   124
\p{InBasic_Latin}   124
\p{InBox_Drawing}   124
\p{InCurrency}   124
\p{InCyrillic}   124
\p{InDingbats}   124
\p{InHangul_Jamo}   124
\p{InHebrew}   124
\p{Inherited}   122
\p{Initial_Punctuation}   123
\p{InKatakana}   124
\p{InTamil}   124
\p{InTibetan}   124
Pinyan, Jeff   246
\p{IsCherokee}   122
\p{IsCommon}   122
\p{IsCyrillic}   122
\p{IsGujarati}   122
\p{IsHan}   122
\p{IsHebrew}   122
\p{IsHiragana}   122
\p{IsKatakana}   122
\p{IsLatin}   122
\p{IsThai}   122
\p{IsTibetan}   124
Pitts, Walter   85
\p{javaJavaIdentifierStart}   369
\p{Katakana}   122, 124
\p{L}   121-122, 133, 368, 395
\p{L&}   122-123, 125, 442
\p{L&}, Java   369
\p{L&}, Perl   288
\pL   PHP 442
\p{Latin}   122
(?P<...>)   451-452, 457
\p{Letter}   122, 288
\p{Letter_Number}   123
\p{Line_Separator}   123
\p{Ll}   123, 406
\p{Lm}   123, 406
\p{Lo}   123, 406
\p{Lowercase_Letter}   123
\p{Lt}   123, 406
\p{Lu}   123, 406
plus, as \+   141
plus, backtracking   162
plus, greedy   141, 447
plus, introduced   18-20
plus, lazy   141
plus, possessive   142
\p{M}   120, 122
\p{Mark}   122
\p{Math_Symbol}   123
\p{Mc}   123
\p{Me}   123
\p{Mn}   123
\p{Modifier_Letter}   123
\p{Modifier_Symbol}   123
\pN   PHP 442
\p{N}   122, 395
\p{Nd}   123, 368, 406
\p{Nl}   123
\p{No}   123
\p{Non_Spacing_Mark}   123
\p{Number}   122
\p{Po}   123
\p{Open_Punctuation}   123
population example   59
pos   130-133, 313-314, 316
pos, (see also \G), positive lookahead   (see lookahead, positive)
pos, (see also \G), positive lookbehind   (see lookbehind, positive)
POSIX, [.....]   128
POSIX, [:...:]   127
POSIX, Basic Regular Expressions   87-88
POSIX, bracket expressions   127
POSIX, character class   127
POSIX, character class and locale   127
POSIX, character equivalent   128
POSIX, collating sequences   128
POSIX, dot   119
POSIX, empty alternatives   140
POSIX, Extended Regular Expressions   87-88
POSIX, superficial flavor chart   88
POSIX, locale   127
POSIX, locale, overview   87
POSIX, longest-leftmost rule   177-179, 335
POSIX NFA, backtracking example   229
POSIX NFA, testing for   146-147
possessive quantifier   477, 483
possessive quantifiers   142, 172-173, 477, 483
possessive quantifiers, automatic   251
possessive quantifiers, for efficiency   259-260, 268-270, 482
possessive quantifiers, mimicking   343-344
possessive quantifiers, optimization   250-251
possessive quantifiers example   198, 201
postal code example   209-212
\p{Other}   122
\p{Other_Letter}   123
\p{Other_Number}   123
\p{Other_Punctuation}   123
\p{Other_Symbol}   123
£   124
\p{P}   122
\p{Paragraph_Separator}   123
\p{Pc}   123, 406
\p{Pd}   123
\p{Pe}   123
\p{Pf}   123
\p{Pf}, Java   369
\p{Pi}   123
\p{Pi}, Java   369
\p{Po}   123
\p{Private_Use}   123
\p{Ps}   123
\p{Punctuation}   122
pragma, charnames   290
pragma, overload   342
pragma, re   361, 363
pragma, strict   295, 336, 345
pragma, warnings   326, 363
pre-check of required character   245-248, 252, 257-259, 361
pre-check of required character, mimic   258-259
pre-check of required character, viewing   332
preg function interface   443-448
preg suite   439
preg suite, “missing” functions   471
preg_grep   469-470
PREG_GREP_INVERT   470
preg_match   449-453
preg_match, offset   453
preg_match_all   453-457
PREG_OFFSET_CAPTURE   452, 454, 456
preg_pattern_error   474
PREG_PATTERN_ORDER   455
preg_quote   136, 470-471
preg_regex_error   475
preg_regex_to_pattern   472-474
preg_replace   458-464
preg_replace_callback   463-465
PREG_SET_ORDER   456
preg_split   465-469
PREG_SPLIT_DELIM_CAPTURE   468-469
PREG_SPLIT_DELIM_CAPTURE, split limit   469
PREG_SPLIT_NO_EMPTY   468
PREG_SPLIT_OFFSET_CAPTURE   468
pre-match copy   355
prepending filename to line   79
price rounding example   51-52, 167-168
price rounding example, with alternation   175
price rounding example, with atomic grouping   170
price rounding example, with possessive quantifier   169
Principles of Compiler Design   180
printf   40
private vs. global   Perl variables 295
\p{Private_Use}   123
procedural handling   95-97
procedural handling, compile caching   244
processing instructions   483
procmail   94
procmail, version covered   91
Programming Perl   283, 286, 339
promote   294-295
properties   121-123, 125-126, 288, 368-369, 442
PS   109, 123, 370
\p{S}   122
\p{Ps}   123
\p{Sc}   123-124
\p{Separator}   122
\p{Sk}   123
\p{Sm}   123
\p{So}   123
\p{Space_Separator}   123
\p{Spacing_Combining_Mark}   123
\p{Symbol}   122
\p{Tamil}   124
\p{Thai}   122
\p{Tibetan}   124
\p{Titlecase_Letter}   123
publication, Bulletin of Math. Biophysics   85
publication, CJKV Information Processing   29
publication, Communications of the ACM   85
publication, Compilers -- Principles, Techniques, and Tools   180
publication, Embodiments of Mind   85
publication, The Kleene Symposium   85
publication, “A logical calculus of the ideas imminent in nervous activity”   85
publication, Object Oriented Perl   339
publication, Principles of Compiler Design   180
publication, Programming Perl   283, 286, 339
publication, Regular Expression Search Algorithm   85
publication, “The Role of Finite Automata in the Development of Modern Computing Theory”   85
\p{Unassigned}   123, 125
\p{Unassigned}, Perl   288
\p{Punctuation}   122
\p{Uppercase_Letter}   123
Python, after-match data   138
Python, benchmarking   238-239
Python, line anchors   130
Python, mode modifiers   135
Python, regex approach   97
Python, strings   104
Python, version covered   91
Python, word boundaries   134
Python, \Z   112
\p{Z}   121-122, 368, 407
\pZ   PHP 442
\p{Zl}   123
\p{Zp}   123
\p{Zs}   123
\Q   Java 368, 395, 403
Qantas   11
\Q...\E   290
\Q...\E, inhibiting   292
qed   85
qed, introduced   76
qed, introduced, quantifier   (see also: plus; star; question mark; interval; lazy; greedy; possessive quantifiers)
qed, and backtracking   162
qed, factor out   255
qed, grouping for   18
qed, multiple levels   266
qed, optimization   247-248
qed, and parentheses   18
qed, possessive   477, 483
qed, possessive quantifiers   142, 172-173, 477, 483
qed, possessive quantifiers, for efficiency   259-260, 268-270, 482
qed, possessive quantifiers, automatic, automatic   251
qed, possessive quantifiers, optimization, optimization   250-251
qed, possessive quantifiers, mimicking, mimicking   343-344
qed, question mark, as \?   141
qed, question mark, backtracking   160
qed, question mark, greedy   141, 447
qed, question mark, introduced   17-18
qed, question mark, lazy   141
qed, question mark, possessive   142
qed, smallest preceding subexpression   29
question mark, as \?   141
question mark, backtracking   160
question mark, greedy   141, 447
question mark, introduced   17-18
question mark, lazy   141
question mark, possessive   142
quote method   136, 395
quoteReplacement method   379
quotes   multi-character 165-166
r"..."   104
\r   49, 115-116
\r, machine-dependency   115
(?R)   475
(?R), PCRE   475
(?R), PHP   475
$^R   302, 327
re   361, 363
re pragma   361, 363
reality check   226-228
reality check, Java   402
reality check, .NET   436
reality check, PCRE   475-478
reality check, PHP   475-478, 481-484
red dragon   180
Reflection   435
regex, balancing needs   186
regex, cache   242-245, 350-352, 432, 478
regex, compile   179-180, 350
regex, default   308
regex, delimiters   291-292
regex, delimiters, DFA   (see DFA)
regex, delimiters, encapsulation   (see regex objects)
regex, engine analogy   143-147
regex, vs. English   275
regex, error checking   474
regex, frame of mind   6
regex, freeflowing design   277-281
regex, history   85-91
regex, library   76, 208
regex, longest-leftmost match   177-179
regex, longest-leftmost match, shortest-leftmost   182
regex, mechanics   241-242
regex, mechanics, NFA   (see NFA)
regex, nomenclature   27
regex, operands   288-292
regex, overloading   291, 328
regex, overloading, inhibiting   292
regex, overloading, problems   344
regex, subexpression, defined   29
regex, subroutines   476
regex approach   .NET 96-97
regex delimiters   PHP 445, 448
regex flavor, Java   366-370
regex flavor, .NET   407
regex literal   288-292, 307
regex literal, inhibiting processing   292
regex literal, locking in   352
regex literal, parsing of   292
regex literal, processing   350
regex literal, regex objects   354
Regex (.NET), CompileToAssembly   433, 435
Regex (.NET), creating, options   419-421
Regex (.NET), Escape   432
Regex (.NET), GetGroupNames   427-428
Regex (.NET), GetGroupNumbers   427-428
Regex (.NET), GroupNameFromNumber   427-428
Regex (.NET), GroupNumberFromName   427-428
Regex (.NET), IsMatch   413, 421, 431
Regex (.NET), Match   96, 414, 416, 421, 431
Regex (.NET), Matches   422, 431
Regex (.NET), object, creating   96, 416, 419-421
Regex (.NET), object, exceptions   419
Regex (.NET), object, using   96, 421
Regex (.NET), Options   427
Regex (.NET), Replace   414-415, 423-424, 431
Regex (.NET), RightToLeft   427
Regex (.NET), Split   425-426, 431
Regex (.NET), ToString   427
Regex (.NET), Unescape   433
regex objects   303-306
regex objects, efficiency   353-354
regex objects, /g   354
regex objects, match modes   304-305
regex objects, /o   354
regex objects, in regex literal   354
regex objects, viewing   305-306
regex operators   Perl 285
regex overloading   292
regex overloading example   341-345
http://regex.info/   xxiv, 7, 345, 358, 451
RegexCompilationInfo   435
regex-directed matching   153
regex-directed matching, and backreferences   303
regex-directed matching, and greediness   162
Regex.Escape   136
RegexOptions, Compiled   237, 408, 410, 420, 427-428, 435
RegexOptions, ECMAScript   406, 408, 412-413, 421, 427
RegexOptions, ExplicitCapture   408, 420, 427
RegexOptions, IgnoreCase   96, 99, 408, 419, 427
RegexOptions, IgnorePatternWhitespace   99, 408, 419, 427
RegexOptions, Multiline   408, 419-420, 427
RegexOptions, None   421, 427
RegexOptions, RightToLeft   408, 411-412, 420, 426-427, 429-430
RegexOptions, Singleline   408, 420, 427
region, additional example   398
region, anchoring bounds   388
region, hitEnd   390
region, Java   384-389
region, methods that reset   385
region, requireEnd   390
region, resetting   392-393
region, setting one edge   386
region, transparent bounds   387
region method   386
regionEnd method   386
regionStart method   386
reg_match   454
regsub   100
regular expression   origin of term 85
Regular Expression Search Algorithm   85
regular sets   85
Reinhold, Mark   xxiv
removing whitespace   199-200
Replace (Regex object method)   423-424
replaceAll method   378
replaceFirst method   379
replacement argument   460
replacement argument, array order   462, 464
replacement argument, Java   380
replacement argument, PHP   459
reproductive organs   5
required character pre-check   245-248, 252, 257-259, 332, 361
requireEnd method   389-392
re-search-forward   100-101
reset method   385, 392-393
Result (Match object method)   429
RightToLeft   (Regex property) 427-428
RightToLeft (.NET)   408, 411-412, 420, 426-427, 429-430
“The Role of Finite Automata in the Development of Modern Computing Theory”   85
Ruby, $ and ^   112
Ruby, after-match data   138
Ruby, benchmarking   238
Ruby, line anchors   130
Ruby, mode modifiers   135
Ruby, version covered   91
Ruby, word boundaries   134
rule, earliest match wins   148-149
rule, standard quantifiers are greedy   151-153
rx   183
\p{S}   122
s/.../.../   50, 318-321
\s   49, 121
\s, Emacs   128
\s, introduction   47
\s, Perl   288
\s, PHP   442
\s, PHP, (?s)   (see: dot-matches-all mode; mode modifier)
\S   49, 56, 121
/s   135
/s, (see also: dot-matches-all mode; mode modifier), saved states   (see backtracking, saved states)
SawAmpersand   358
say what you mean   195, 274
SBOL   362
\p{Sc}   123-124
scalar context   294, 310, 312-316
scalar context, forcing   310
scanner   132, 389, 399
schaffkopf   33
scope   lexical vs. dynamic 299
scripts   122, 288, 442
search and replace   xvii
search and replace, awk   100
search and replace, Java   378-383
search and replace, .NET   414, 423-424
search and replace, Perl   318-321
search and replace, PHP   458-465
search and replace, Tcl   100
sed, after-match data   138
sed, dot   111
sed, history   87
sed, version covered   91
sed, word boundaries   134
self-closing tag   481
\p{Separator}   122
server VM   236
Sethi, Ravi   180
shell   7
simple quantifier optimization   247-248
single quotes   delimiter 292, 319
Singleline (.NET)   408, 420, 427
single-quoted string   PHP 444
\p{Sk}   123
\p{Sm}   123
small quantifier equivalence   251-252
\p{So}   123
\p{Space_Separator}   123
\p{Spacing_Combining_Mark}   123
“special”   263-266
Spencer, Henry   88, 182-183, 243
split, with capturing parentheses, .NET   409, 426
split, with capturing parentheses, Perl   326
split, with capturing parentheses, PHP   468
split, chunk limit, Java   396
split, chunk limit, Perl   323
split, chunk limit, PHP   466
split, into characters   322
split, Java   395-396
split, limit   466-467
split, limit, Java   396
split, limit, Perl   323
split, limit, PHP   466
split, Perl   321-326
split, PHP   465-469
split, trailing empty items   324, 468
split, whitespace   325
split method   395-396
Split (Regex object method)   425-426
stacked data   456
standard formula for matching delimited text   196
star, backtracking   162
star, greedy   141, 447
star, introduced   18-20
star, lazy   141
star, possessive   142
start method   377
start-of-string anchor optimization   246, 255-256, 315
stclass `list'   362
stock pricing example   51-52, 167-168
stock pricing example, with alternation   175
stock pricing example, with atomic grouping   170
stock pricing example, with possessive quantifier   169
Strict (Option)   415
strict pragma   295, 336, 345
String, matches   376
String, replaceAll   378
String, replaceFirst   379
String, split   395
String, split, string   (see also line)
String, split, double-quoted   (see double-quoted string example)
String, initial string discrimination   245-248, 252, 257-259, 332, 361
String, vs. line   55
String, vs. line, match position   (see pos)
String, vs. line, pos   (see pos)
StringBuffer   373, 380, 382, 397
StringBuilder   373, 382, 397
strings, C#   103
strings, Emacs   101
strings, Java   102
strings, PHP   103-104
strings, Python   104
strings, as regex   101-105, 305
strings, Tcl   104
strings, VB.NET   103
stripping whitespace   199-200
str_replace   458
str_replace, PHP   458
study   PHP 447
study   359-360
study, when not to use   359
subexpression   defined 29
subroutines   regex 476
substitution   xvii
substitution, delimiter   319
substitution, s/.../.../   50, 318-321
substring   initial substring discrimination 245-248, 252, 257-259, 332, 361
subtraction, character class   406
subtraction, class (set)   126
subtraction, class (simple)   125
Success, Group object method   430
Success, Match object method   427
Success, Match object method, Sun's regex package   (see java.util.regex)
Success, Match object method, super-linear   (see neverending match)
super-linear short-circuiting   250
\p{Symbol}   122
Synchronized Match object method   430
syntax class   Emacs 128
System.currentTimeMillis()   236
System.Reflection   435
System.Text.RegularExpressions   413, 415
\t   49, 115-116
\t, introduced   44
tag, matching   200-201
tag, XML   481
tag-team matching   132, 315
\p{Tamil}   124
Tcl, [:<:]   91
Tcl, benchmarking   239
Tcl, dot   111, 113
Tcl, flavor overview   92
Tcl, hand-tweaking   243, 259
Tcl, line anchors   113, 130
Tcl, mode modifiers   135
Tcl, regex implementation   183
Tcl, regsub   100
Tcl, search and replace   100
Tcl, strings   104
Tcl, version covered   91
Tcl, word boundaries   134
temperature conversion example, Java   382
temperature conversion example, .NET   425
temperature conversion example, Perl   37, 283
temperature conversion example, PHP   444
temperature conversion example, PHP, terminators   (see line terminators)
testing engine type   146-147
text method   394
text-directed matching   153
text-directed matching, regex appearance   162
text-to-HTML example   67-77
\p{Thai}   122
theory of an NFA   180
There's more than one way to do it   349
this|that example   133, 139, 243, 245-247, 252, 255, 260-261
Thompson, Ken   85-86, 111
thread scheduling   Java benchmarking 236
\p{Tibetan}   124
tied variables   299
time()   232
time of day   26
Time::HiRes   232, 358, 360
Time.new   238
Timer()   237
timezone   PHP 235
title case   110
\p{Titlecase_Letter}   123
TiVo   3
tokenizer   132, 389, 399
tokenizer, building   315
toMatchResult method   377
toothpicks   scattered 101
tortilla   128
ToString, Group object method   430
ToString, Match object method   427
ToString, Regex object method   427
toString method   393-394
Traditional NFA   testing for 146-147
trailing context   182
trailing context, optimizations   246-247
transparent bounds   387
transparent bounds, Java   387
Tubby   265
typographical conventions   xxi
\u   117, 290, 406
\U   117
\U...\E   290
\U...\E, inhibiting   292
uc   290
U+C0B5   107
ucfirst   290
UCS-2 encoding   107
UCS-4 encoding   107
Ullman, Jeffrey   180
\p{Unassigned}   123, 125
\p{Unassigned}, Perl   288
unconditional caching   350
underscore in \w   history 89
Unescape   433
Unicode, block   124
Unicode, block, Java   369, 402
Unicode, block, .NET   407
Unicode, block, Perl   288
Unicode, block, Perl, categories   (see Unicode, properties)
Unicode, character, combining   107, 120, 122
Unicode, code point, beyond U+FFFF   109
Unicode, code point, introduced   107
Unicode, code point, multiple   108
Unicode, code point, unassigned in block   124
Unicode, combining character   107, 120, 122
Unicode, Java   368-369, 402-403
Unicode, line terminators   109-111, 370
Unicode, line terminators, Java   370
Unicode, line terminators, Java, loose matching   (see case-insensitive mode)
Unicode, .NET   407
Unicode, official web site   127
Unicode, overview   106-110
Unicode, Perl   288
Unicode, PHP   442, 447
Unicode, properties   121, 369
Unicode, properties, Java   368
Unicode, properties, list   122-123
Unicode, properties, \p{All}   125, 288
Unicode, properties, \p{Any}   125, 288, 442
Unicode, properties, \p{Assigned}   125-126, 288
Unicode, properties, Perl   288
Unicode, properties, PHP   442
Unicode, properties, \p{Unassigned}   123, 125, 288
Unicode, script   122
Unicode, script, Perl   288
Unicode, script, PHP   442
Unicode, Version 3.1   109
Unicode, \w   120
Unicode, whitespace and /x   288
UnicodeData.txt   290
unicore   290
unmatch   152, 161, 163
unmatch, .*   165
unmatch, atomic grouping   171
unrolling the loop   261-276
unrolling the loop, example   270-271, 477
unrolling the loop, general pattern   264
\p{Uppercase_Letter}   123
URL encoding   320
URL example   74-77, 201-204, 208, 260, 303-304, 306, 320, 450-451
URL example, egrep   25
URL example, Java   209
URL example, .NET   204
URL example, plucking   206-208
use charnames   290
use Config   290, 299
use English   357
use overload   342
use re 'debug'   361, 363
use re 'eval'   337
use strict   295, 336, 345
use Time::HiRes   358, 360
use warnings   326, 363
useAnchoringBounds method   388
usePattern method   393, 399
username example   73, 76, 98
username example, plucking from text   71-73
username example, in URL   74-77
useTransparentBounds method   387
using System.Text.RegularExpressions   416
UTF-16 encoding   107
UTF-8 encoding   107, 442, 447
\v   115-116, 364
\V   364
Value, Group object method   430
Value, Match object method   427
variable names example   24
variables, after match, pre-match copy   355
variables, binding   339
variables, fully qualified   295
variables, interpolation   344
variables, naughty   356
variables, tied   299
VB.NET   xvii
VB.NET, code example   204, 219
VB.NET, comments   99
VB.NET, regex approach   96-97
VB.NET, strings   103
verbatim strings   103
Version 7 regex   183
Version 8 regex   183
version covered, Java   365
version covered, .NET   405
version covered, Perl   283
version covered, PHP   440
version covered, others   91
version history   Java 365, 368-369, 392, 401
vertical tab   109, 370
vertical tab, Perl \s   288
vi   after-match data 138
Vietnamese text processing   29
virtual machine   236
Visual Basic   xvii
Visual Studio .NET   434
VM   236
VM, Java   236
VM, warming up   236
void context   294
VT   109, 370
$^W   297
\w   49, 65, 120
\w, Emacs   129
\w, Java   368
\w, many different interpretations   93
\w, Perl   288
\w, PHP   120, 442
\W   49, 121
Wall, Larry   88-90, 140, 363
warming up Java VM   236
warnings   296
warnings, ($^W variable), Perl   297
warnings, Perl   38
warnings, temporarily turning off   297
warnings, use warnings, Perl   326, 363
warnings pragma   326, 363
while vs. foreach vs. if   320
whitespace, allowing optional   18
whitespace, removing   199-200
width attribute   Java example 397
wildcards   filename 4
word anchor   mechanics of matching 150
word boundaries   133
word boundaries, \<...\>, egrep   15
word boundaries, introduced   15
word boundaries, Java   134
word boundaries, many programs   134
word boundaries, mimicking   66, 134, 341-342
word boundaries, .NET   134
word boundaries, Perl   288
word boundaries, PHP   134
www.cpan.org   358
www.PeakWebhosting.com   xxiv
www.regex.info   358
www.unixwiz.net   xxiv, 458
\X   108, 120
/x   135, 288
/x, history   90
/x, introduced   72
/x, introduced, (?x)   (see: comments and free-spacing mode; mode modifier)
\x   117, 406
\x, Perl   286
XML   483
XML, CDATA   483
XML example   481-484
-y   old grep 86
¥   124
Yahoo!   xxiv, 74, 132, 190, 206-207, 258, 314, 397
\Z   112, 129-130
\Z, Java   370
\Z, optimization   246
\p{Z}   121-122, 368, 407
\z   112, 129-130, 316, 447
\z, optimization   246
\z, PHP   442
Zawodny, Jeremy   258
ZIP code example   209-212
\p{Zl}   123
Zmievski, Andrei   xxiv, 440
\p{Zp}   123
\p{Zs}   123