tools/pcre/testdata/testinput1
author John Schoenick <john@pointysoftware.net>
Wed Jun 01 20:36:16 2011 -0400 (2011-06-01)
changeset 3292 f428ffc8a3fe
parent 2762 d2d467bf1b5a
child 3831 babd0eee3c5e
permissions -rw-r--r--
Fixed regression in FindEntityByClassname from bug 4899 (bug 4941, r=predcrab).
dvander@2762
     1
/the quick brown fox/
dvander@2762
     2
    the quick brown fox
dvander@2762
     3
    The quick brown FOX
dvander@2762
     4
    What do you know about the quick brown fox?
dvander@2762
     5
    What do you know about THE QUICK BROWN FOX?
dvander@2762
     6
dvander@2762
     7
/The quick brown fox/i
dvander@2762
     8
    the quick brown fox
dvander@2762
     9
    The quick brown FOX
dvander@2762
    10
    What do you know about the quick brown fox?
dvander@2762
    11
    What do you know about THE QUICK BROWN FOX?
dvander@2762
    12
dvander@2762
    13
/abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
dvander@2762
    14
    abcd\t\n\r\f\a\e9;\$\\?caxyz
dvander@2762
    15
dvander@2762
    16
/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
dvander@2762
    17
    abxyzpqrrrabbxyyyypqAzz
dvander@2762
    18
    abxyzpqrrrabbxyyyypqAzz
dvander@2762
    19
    aabxyzpqrrrabbxyyyypqAzz
dvander@2762
    20
    aaabxyzpqrrrabbxyyyypqAzz
dvander@2762
    21
    aaaabxyzpqrrrabbxyyyypqAzz
dvander@2762
    22
    abcxyzpqrrrabbxyyyypqAzz
dvander@2762
    23
    aabcxyzpqrrrabbxyyyypqAzz
dvander@2762
    24
    aaabcxyzpqrrrabbxyyyypAzz
dvander@2762
    25
    aaabcxyzpqrrrabbxyyyypqAzz
dvander@2762
    26
    aaabcxyzpqrrrabbxyyyypqqAzz
dvander@2762
    27
    aaabcxyzpqrrrabbxyyyypqqqAzz
dvander@2762
    28
    aaabcxyzpqrrrabbxyyyypqqqqAzz
dvander@2762
    29
    aaabcxyzpqrrrabbxyyyypqqqqqAzz
dvander@2762
    30
    aaabcxyzpqrrrabbxyyyypqqqqqqAzz
dvander@2762
    31
    aaaabcxyzpqrrrabbxyyyypqAzz
dvander@2762
    32
    abxyzzpqrrrabbxyyyypqAzz
dvander@2762
    33
    aabxyzzzpqrrrabbxyyyypqAzz
dvander@2762
    34
    aaabxyzzzzpqrrrabbxyyyypqAzz
dvander@2762
    35
    aaaabxyzzzzpqrrrabbxyyyypqAzz
dvander@2762
    36
    abcxyzzpqrrrabbxyyyypqAzz
dvander@2762
    37
    aabcxyzzzpqrrrabbxyyyypqAzz
dvander@2762
    38
    aaabcxyzzzzpqrrrabbxyyyypqAzz
dvander@2762
    39
    aaaabcxyzzzzpqrrrabbxyyyypqAzz
dvander@2762
    40
    aaaabcxyzzzzpqrrrabbbxyyyypqAzz
dvander@2762
    41
    aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
dvander@2762
    42
    aaabcxyzpqrrrabbxyyyypABzz
dvander@2762
    43
    aaabcxyzpqrrrabbxyyyypABBzz
dvander@2762
    44
    >>>aaabxyzpqrrrabbxyyyypqAzz
dvander@2762
    45
    >aaaabxyzpqrrrabbxyyyypqAzz
dvander@2762
    46
    >>>>abcxyzpqrrrabbxyyyypqAzz
dvander@2762
    47
    *** Failers
dvander@2762
    48
    abxyzpqrrabbxyyyypqAzz
dvander@2762
    49
    abxyzpqrrrrabbxyyyypqAzz
dvander@2762
    50
    abxyzpqrrrabxyyyypqAzz
dvander@2762
    51
    aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
dvander@2762
    52
    aaaabcxyzzzzpqrrrabbbxyyypqAzz
dvander@2762
    53
    aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
dvander@2762
    54
dvander@2762
    55
/^(abc){1,2}zz/
dvander@2762
    56
    abczz
dvander@2762
    57
    abcabczz
dvander@2762
    58
    *** Failers
dvander@2762
    59
    zz
dvander@2762
    60
    abcabcabczz
dvander@2762
    61
    >>abczz
dvander@2762
    62
dvander@2762
    63
/^(b+?|a){1,2}?c/
dvander@2762
    64
    bc
dvander@2762
    65
    bbc
dvander@2762
    66
    bbbc
dvander@2762
    67
    bac
dvander@2762
    68
    bbac
dvander@2762
    69
    aac
dvander@2762
    70
    abbbbbbbbbbbc
dvander@2762
    71
    bbbbbbbbbbbac
dvander@2762
    72
    *** Failers
dvander@2762
    73
    aaac
dvander@2762
    74
    abbbbbbbbbbbac
dvander@2762
    75
dvander@2762
    76
/^(b+|a){1,2}c/
dvander@2762
    77
    bc
dvander@2762
    78
    bbc
dvander@2762
    79
    bbbc
dvander@2762
    80
    bac
dvander@2762
    81
    bbac
dvander@2762
    82
    aac
dvander@2762
    83
    abbbbbbbbbbbc
dvander@2762
    84
    bbbbbbbbbbbac
dvander@2762
    85
    *** Failers
dvander@2762
    86
    aaac
dvander@2762
    87
    abbbbbbbbbbbac
dvander@2762
    88
dvander@2762
    89
/^(b+|a){1,2}?bc/
dvander@2762
    90
    bbc
dvander@2762
    91
dvander@2762
    92
/^(b*|ba){1,2}?bc/
dvander@2762
    93
    babc
dvander@2762
    94
    bbabc
dvander@2762
    95
    bababc
dvander@2762
    96
    *** Failers
dvander@2762
    97
    bababbc
dvander@2762
    98
    babababc
dvander@2762
    99
dvander@2762
   100
/^(ba|b*){1,2}?bc/
dvander@2762
   101
    babc
dvander@2762
   102
    bbabc
dvander@2762
   103
    bababc
dvander@2762
   104
    *** Failers
dvander@2762
   105
    bababbc
dvander@2762
   106
    babababc
dvander@2762
   107
dvander@2762
   108
/^\ca\cA\c[\c{\c:/
dvander@2762
   109
    \x01\x01\e;z
dvander@2762
   110
dvander@2762
   111
/^[ab\]cde]/
dvander@2762
   112
    athing
dvander@2762
   113
    bthing
dvander@2762
   114
    ]thing
dvander@2762
   115
    cthing
dvander@2762
   116
    dthing
dvander@2762
   117
    ething
dvander@2762
   118
    *** Failers
dvander@2762
   119
    fthing
dvander@2762
   120
    [thing
dvander@2762
   121
    \\thing
dvander@2762
   122
dvander@2762
   123
/^[]cde]/
dvander@2762
   124
    ]thing
dvander@2762
   125
    cthing
dvander@2762
   126
    dthing
dvander@2762
   127
    ething
dvander@2762
   128
    *** Failers
dvander@2762
   129
    athing
dvander@2762
   130
    fthing
dvander@2762
   131
dvander@2762
   132
/^[^ab\]cde]/
dvander@2762
   133
    fthing
dvander@2762
   134
    [thing
dvander@2762
   135
    \\thing
dvander@2762
   136
    *** Failers
dvander@2762
   137
    athing
dvander@2762
   138
    bthing
dvander@2762
   139
    ]thing
dvander@2762
   140
    cthing
dvander@2762
   141
    dthing
dvander@2762
   142
    ething
dvander@2762
   143
dvander@2762
   144
/^[^]cde]/
dvander@2762
   145
    athing
dvander@2762
   146
    fthing
dvander@2762
   147
    *** Failers
dvander@2762
   148
    ]thing
dvander@2762
   149
    cthing
dvander@2762
   150
    dthing
dvander@2762
   151
    ething
dvander@2762
   152
dvander@2762
   153
/^\�/
dvander@2762
   154
    �
dvander@2762
   155
dvander@2762
   156
/^�/
dvander@2762
   157
    �
dvander@2762
   158
dvander@2762
   159
/^[0-9]+$/
dvander@2762
   160
    0
dvander@2762
   161
    1
dvander@2762
   162
    2
dvander@2762
   163
    3
dvander@2762
   164
    4
dvander@2762
   165
    5
dvander@2762
   166
    6
dvander@2762
   167
    7
dvander@2762
   168
    8
dvander@2762
   169
    9
dvander@2762
   170
    10
dvander@2762
   171
    100
dvander@2762
   172
    *** Failers
dvander@2762
   173
    abc
dvander@2762
   174
dvander@2762
   175
/^.*nter/
dvander@2762
   176
    enter
dvander@2762
   177
    inter
dvander@2762
   178
    uponter
dvander@2762
   179
dvander@2762
   180
/^xxx[0-9]+$/
dvander@2762
   181
    xxx0
dvander@2762
   182
    xxx1234
dvander@2762
   183
    *** Failers
dvander@2762
   184
    xxx
dvander@2762
   185
dvander@2762
   186
/^.+[0-9][0-9][0-9]$/
dvander@2762
   187
    x123
dvander@2762
   188
    xx123
dvander@2762
   189
    123456
dvander@2762
   190
    *** Failers
dvander@2762
   191
    123
dvander@2762
   192
    x1234
dvander@2762
   193
dvander@2762
   194
/^.+?[0-9][0-9][0-9]$/
dvander@2762
   195
    x123
dvander@2762
   196
    xx123
dvander@2762
   197
    123456
dvander@2762
   198
    *** Failers
dvander@2762
   199
    123
dvander@2762
   200
    x1234
dvander@2762
   201
dvander@2762
   202
/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
dvander@2762
   203
    abc!pqr=apquxz.ixr.zzz.ac.uk
dvander@2762
   204
    *** Failers
dvander@2762
   205
    !pqr=apquxz.ixr.zzz.ac.uk
dvander@2762
   206
    abc!=apquxz.ixr.zzz.ac.uk
dvander@2762
   207
    abc!pqr=apquxz:ixr.zzz.ac.uk
dvander@2762
   208
    abc!pqr=apquxz.ixr.zzz.ac.ukk
dvander@2762
   209
dvander@2762
   210
/:/
dvander@2762
   211
    Well, we need a colon: somewhere
dvander@2762
   212
    *** Fail if we don't
dvander@2762
   213
dvander@2762
   214
/([\da-f:]+)$/i
dvander@2762
   215
    0abc
dvander@2762
   216
    abc
dvander@2762
   217
    fed
dvander@2762
   218
    E
dvander@2762
   219
    ::
dvander@2762
   220
    5f03:12C0::932e
dvander@2762
   221
    fed def
dvander@2762
   222
    Any old stuff
dvander@2762
   223
    *** Failers
dvander@2762
   224
    0zzz
dvander@2762
   225
    gzzz
dvander@2762
   226
    fed\x20
dvander@2762
   227
    Any old rubbish
dvander@2762
   228
dvander@2762
   229
/^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
dvander@2762
   230
    .1.2.3
dvander@2762
   231
    A.12.123.0
dvander@2762
   232
    *** Failers
dvander@2762
   233
    .1.2.3333
dvander@2762
   234
    1.2.3
dvander@2762
   235
    1234.2.3
dvander@2762
   236
dvander@2762
   237
/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
dvander@2762
   238
    1 IN SOA non-sp1 non-sp2(
dvander@2762
   239
    1    IN    SOA    non-sp1    non-sp2   (
dvander@2762
   240
    *** Failers
dvander@2762
   241
    1IN SOA non-sp1 non-sp2(
dvander@2762
   242
dvander@2762
   243
/^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
dvander@2762
   244
    a.
dvander@2762
   245
    Z.
dvander@2762
   246
    2.
dvander@2762
   247
    ab-c.pq-r.
dvander@2762
   248
    sxk.zzz.ac.uk.
dvander@2762
   249
    x-.y-.
dvander@2762
   250
    *** Failers
dvander@2762
   251
    -abc.peq.
dvander@2762
   252
dvander@2762
   253
/^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
dvander@2762
   254
    *.a
dvander@2762
   255
    *.b0-a
dvander@2762
   256
    *.c3-b.c
dvander@2762
   257
    *.c-a.b-c
dvander@2762
   258
    *** Failers
dvander@2762
   259
    *.0
dvander@2762
   260
    *.a-
dvander@2762
   261
    *.a-b.c-
dvander@2762
   262
    *.c-a.0-c
dvander@2762
   263
dvander@2762
   264
/^(?=ab(de))(abd)(e)/
dvander@2762
   265
    abde
dvander@2762
   266
dvander@2762
   267
/^(?!(ab)de|x)(abd)(f)/
dvander@2762
   268
    abdf
dvander@2762
   269
dvander@2762
   270
/^(?=(ab(cd)))(ab)/
dvander@2762
   271
    abcd
dvander@2762
   272
dvander@2762
   273
/^[\da-f](\.[\da-f])*$/i
dvander@2762
   274
    a.b.c.d
dvander@2762
   275
    A.B.C.D
dvander@2762
   276
    a.b.c.1.2.3.C
dvander@2762
   277
dvander@2762
   278
/^\".*\"\s*(;.*)?$/
dvander@2762
   279
    \"1234\"
dvander@2762
   280
    \"abcd\" ;
dvander@2762
   281
    \"\" ; rhubarb
dvander@2762
   282
    *** Failers
dvander@2762
   283
    \"1234\" : things
dvander@2762
   284
dvander@2762
   285
/^$/
dvander@2762
   286
    \
dvander@2762
   287
    *** Failers
dvander@2762
   288
dvander@2762
   289
/   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
dvander@2762
   290
    ab c
dvander@2762
   291
    *** Failers
dvander@2762
   292
    abc
dvander@2762
   293
    ab cde
dvander@2762
   294
dvander@2762
   295
/(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
dvander@2762
   296
    ab c
dvander@2762
   297
    *** Failers
dvander@2762
   298
    abc
dvander@2762
   299
    ab cde
dvander@2762
   300
dvander@2762
   301
/^   a\ b[c ]d       $/x
dvander@2762
   302
    a bcd
dvander@2762
   303
    a b d
dvander@2762
   304
    *** Failers
dvander@2762
   305
    abcd
dvander@2762
   306
    ab d
dvander@2762
   307
dvander@2762
   308
/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
dvander@2762
   309
    abcdefhijklm
dvander@2762
   310
dvander@2762
   311
/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
dvander@2762
   312
    abcdefhijklm
dvander@2762
   313
dvander@2762
   314
/^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
dvander@2762
   315
    a+ Z0+\x08\n\x1d\x12
dvander@2762
   316
dvander@2762
   317
/^[.^$|()*+?{,}]+/
dvander@2762
   318
    .^\$(*+)|{?,?}
dvander@2762
   319
dvander@2762
   320
/^a*\w/
dvander@2762
   321
    z
dvander@2762
   322
    az
dvander@2762
   323
    aaaz
dvander@2762
   324
    a
dvander@2762
   325
    aa
dvander@2762
   326
    aaaa
dvander@2762
   327
    a+
dvander@2762
   328
    aa+
dvander@2762
   329
dvander@2762
   330
/^a*?\w/
dvander@2762
   331
    z
dvander@2762
   332
    az
dvander@2762
   333
    aaaz
dvander@2762
   334
    a
dvander@2762
   335
    aa
dvander@2762
   336
    aaaa
dvander@2762
   337
    a+
dvander@2762
   338
    aa+
dvander@2762
   339
dvander@2762
   340
/^a+\w/
dvander@2762
   341
    az
dvander@2762
   342
    aaaz
dvander@2762
   343
    aa
dvander@2762
   344
    aaaa
dvander@2762
   345
    aa+
dvander@2762
   346
dvander@2762
   347
/^a+?\w/
dvander@2762
   348
    az
dvander@2762
   349
    aaaz
dvander@2762
   350
    aa
dvander@2762
   351
    aaaa
dvander@2762
   352
    aa+
dvander@2762
   353
dvander@2762
   354
/^\d{8}\w{2,}/
dvander@2762
   355
    1234567890
dvander@2762
   356
    12345678ab
dvander@2762
   357
    12345678__
dvander@2762
   358
    *** Failers
dvander@2762
   359
    1234567
dvander@2762
   360
dvander@2762
   361
/^[aeiou\d]{4,5}$/
dvander@2762
   362
    uoie
dvander@2762
   363
    1234
dvander@2762
   364
    12345
dvander@2762
   365
    aaaaa
dvander@2762
   366
    *** Failers
dvander@2762
   367
    123456
dvander@2762
   368
dvander@2762
   369
/^[aeiou\d]{4,5}?/
dvander@2762
   370
    uoie
dvander@2762
   371
    1234
dvander@2762
   372
    12345
dvander@2762
   373
    aaaaa
dvander@2762
   374
    123456
dvander@2762
   375
dvander@2762
   376
/\A(abc|def)=(\1){2,3}\Z/
dvander@2762
   377
    abc=abcabc
dvander@2762
   378
    def=defdefdef
dvander@2762
   379
    *** Failers
dvander@2762
   380
    abc=defdef
dvander@2762
   381
dvander@2762
   382
/^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
dvander@2762
   383
    abcdefghijkcda2
dvander@2762
   384
    abcdefghijkkkkcda2
dvander@2762
   385
dvander@2762
   386
/(cat(a(ract|tonic)|erpillar)) \1()2(3)/
dvander@2762
   387
    cataract cataract23
dvander@2762
   388
    catatonic catatonic23
dvander@2762
   389
    caterpillar caterpillar23
dvander@2762
   390
dvander@2762
   391
dvander@2762
   392
/^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
dvander@2762
   393
    From abcd  Mon Sep 01 12:33:02 1997
dvander@2762
   394
dvander@2762
   395
/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
dvander@2762
   396
    From abcd  Mon Sep 01 12:33:02 1997
dvander@2762
   397
    From abcd  Mon Sep  1 12:33:02 1997
dvander@2762
   398
    *** Failers
dvander@2762
   399
    From abcd  Sep 01 12:33:02 1997
dvander@2762
   400
dvander@2762
   401
/^12.34/s
dvander@2762
   402
    12\n34
dvander@2762
   403
    12\r34
dvander@2762
   404
dvander@2762
   405
/\w+(?=\t)/
dvander@2762
   406
    the quick brown\t fox
dvander@2762
   407
dvander@2762
   408
/foo(?!bar)(.*)/
dvander@2762
   409
    foobar is foolish see?
dvander@2762
   410
dvander@2762
   411
/(?:(?!foo)...|^.{0,2})bar(.*)/
dvander@2762
   412
    foobar crowbar etc
dvander@2762
   413
    barrel
dvander@2762
   414
    2barrel
dvander@2762
   415
    A barrel
dvander@2762
   416
dvander@2762
   417
/^(\D*)(?=\d)(?!123)/
dvander@2762
   418
    abc456
dvander@2762
   419
    *** Failers
dvander@2762
   420
    abc123
dvander@2762
   421
dvander@2762
   422
/^1234(?# test newlines
dvander@2762
   423
  inside)/
dvander@2762
   424
    1234
dvander@2762
   425
dvander@2762
   426
/^1234 #comment in extended re
dvander@2762
   427
  /x
dvander@2762
   428
    1234
dvander@2762
   429
dvander@2762
   430
/#rhubarb
dvander@2762
   431
  abcd/x
dvander@2762
   432
    abcd
dvander@2762
   433
dvander@2762
   434
/^abcd#rhubarb/x
dvander@2762
   435
    abcd
dvander@2762
   436
dvander@2762
   437
/^(a)\1{2,3}(.)/
dvander@2762
   438
    aaab
dvander@2762
   439
    aaaab
dvander@2762
   440
    aaaaab
dvander@2762
   441
    aaaaaab
dvander@2762
   442
dvander@2762
   443
/(?!^)abc/
dvander@2762
   444
    the abc
dvander@2762
   445
    *** Failers
dvander@2762
   446
    abc
dvander@2762
   447
dvander@2762
   448
/(?=^)abc/
dvander@2762
   449
    abc
dvander@2762
   450
    *** Failers
dvander@2762
   451
    the abc
dvander@2762
   452
dvander@2762
   453
/^[ab]{1,3}(ab*|b)/
dvander@2762
   454
    aabbbbb
dvander@2762
   455
dvander@2762
   456
/^[ab]{1,3}?(ab*|b)/
dvander@2762
   457
    aabbbbb
dvander@2762
   458
dvander@2762
   459
/^[ab]{1,3}?(ab*?|b)/
dvander@2762
   460
    aabbbbb
dvander@2762
   461
dvander@2762
   462
/^[ab]{1,3}(ab*?|b)/
dvander@2762
   463
    aabbbbb
dvander@2762
   464
dvander@2762
   465
/  (?: [\040\t] |  \(
dvander@2762
   466
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   467
\)  )*                          # optional leading comment
dvander@2762
   468
(?:    (?:
dvander@2762
   469
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   470
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   471
|
dvander@2762
   472
" (?:                      # opening quote...
dvander@2762
   473
[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
dvander@2762
   474
|                     #    or
dvander@2762
   475
\\ [^\x80-\xff]           #   Escaped something (something != CR)
dvander@2762
   476
)* "  # closing quote
dvander@2762
   477
)                    # initial word
dvander@2762
   478
(?:  (?: [\040\t] |  \(
dvander@2762
   479
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   480
\)  )*  \.  (?: [\040\t] |  \(
dvander@2762
   481
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   482
\)  )*   (?:
dvander@2762
   483
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   484
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   485
|
dvander@2762
   486
" (?:                      # opening quote...
dvander@2762
   487
[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
dvander@2762
   488
|                     #    or
dvander@2762
   489
\\ [^\x80-\xff]           #   Escaped something (something != CR)
dvander@2762
   490
)* "  # closing quote
dvander@2762
   491
)  )* # further okay, if led by a period
dvander@2762
   492
(?: [\040\t] |  \(
dvander@2762
   493
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   494
\)  )*  @  (?: [\040\t] |  \(
dvander@2762
   495
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   496
\)  )*    (?:
dvander@2762
   497
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   498
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   499
|   \[                         # [
dvander@2762
   500
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
dvander@2762
   501
\]                        #           ]
dvander@2762
   502
)                           # initial subdomain
dvander@2762
   503
(?:                                  #
dvander@2762
   504
(?: [\040\t] |  \(
dvander@2762
   505
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   506
\)  )*  \.                        # if led by a period...
dvander@2762
   507
(?: [\040\t] |  \(
dvander@2762
   508
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   509
\)  )*   (?:
dvander@2762
   510
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   511
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   512
|   \[                         # [
dvander@2762
   513
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
dvander@2762
   514
\]                        #           ]
dvander@2762
   515
)                     #   ...further okay
dvander@2762
   516
)*
dvander@2762
   517
# address
dvander@2762
   518
|                     #  or
dvander@2762
   519
(?:
dvander@2762
   520
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   521
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   522
|
dvander@2762
   523
" (?:                      # opening quote...
dvander@2762
   524
[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
dvander@2762
   525
|                     #    or
dvander@2762
   526
\\ [^\x80-\xff]           #   Escaped something (something != CR)
dvander@2762
   527
)* "  # closing quote
dvander@2762
   528
)             # one word, optionally followed by....
dvander@2762
   529
(?:
dvander@2762
   530
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
dvander@2762
   531
\(
dvander@2762
   532
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   533
\)       |  # comments, or...
dvander@2762
   534
dvander@2762
   535
" (?:                      # opening quote...
dvander@2762
   536
[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
dvander@2762
   537
|                     #    or
dvander@2762
   538
\\ [^\x80-\xff]           #   Escaped something (something != CR)
dvander@2762
   539
)* "  # closing quote
dvander@2762
   540
# quoted strings
dvander@2762
   541
)*
dvander@2762
   542
<  (?: [\040\t] |  \(
dvander@2762
   543
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   544
\)  )*                     # leading <
dvander@2762
   545
(?:  @  (?: [\040\t] |  \(
dvander@2762
   546
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   547
\)  )*    (?:
dvander@2762
   548
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   549
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   550
|   \[                         # [
dvander@2762
   551
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
dvander@2762
   552
\]                        #           ]
dvander@2762
   553
)                           # initial subdomain
dvander@2762
   554
(?:                                  #
dvander@2762
   555
(?: [\040\t] |  \(
dvander@2762
   556
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   557
\)  )*  \.                        # if led by a period...
dvander@2762
   558
(?: [\040\t] |  \(
dvander@2762
   559
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   560
\)  )*   (?:
dvander@2762
   561
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   562
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   563
|   \[                         # [
dvander@2762
   564
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
dvander@2762
   565
\]                        #           ]
dvander@2762
   566
)                     #   ...further okay
dvander@2762
   567
)*
dvander@2762
   568
dvander@2762
   569
(?:  (?: [\040\t] |  \(
dvander@2762
   570
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   571
\)  )*  ,  (?: [\040\t] |  \(
dvander@2762
   572
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   573
\)  )*  @  (?: [\040\t] |  \(
dvander@2762
   574
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   575
\)  )*    (?:
dvander@2762
   576
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   577
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   578
|   \[                         # [
dvander@2762
   579
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
dvander@2762
   580
\]                        #           ]
dvander@2762
   581
)                           # initial subdomain
dvander@2762
   582
(?:                                  #
dvander@2762
   583
(?: [\040\t] |  \(
dvander@2762
   584
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   585
\)  )*  \.                        # if led by a period...
dvander@2762
   586
(?: [\040\t] |  \(
dvander@2762
   587
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   588
\)  )*   (?:
dvander@2762
   589
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   590
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   591
|   \[                         # [
dvander@2762
   592
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
dvander@2762
   593
\]                        #           ]
dvander@2762
   594
)                     #   ...further okay
dvander@2762
   595
)*
dvander@2762
   596
)* # further okay, if led by comma
dvander@2762
   597
:                                # closing colon
dvander@2762
   598
(?: [\040\t] |  \(
dvander@2762
   599
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   600
\)  )*  )? #       optional route
dvander@2762
   601
(?:
dvander@2762
   602
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   603
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   604
|
dvander@2762
   605
" (?:                      # opening quote...
dvander@2762
   606
[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
dvander@2762
   607
|                     #    or
dvander@2762
   608
\\ [^\x80-\xff]           #   Escaped something (something != CR)
dvander@2762
   609
)* "  # closing quote
dvander@2762
   610
)                    # initial word
dvander@2762
   611
(?:  (?: [\040\t] |  \(
dvander@2762
   612
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   613
\)  )*  \.  (?: [\040\t] |  \(
dvander@2762
   614
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   615
\)  )*   (?:
dvander@2762
   616
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   617
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   618
|
dvander@2762
   619
" (?:                      # opening quote...
dvander@2762
   620
[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
dvander@2762
   621
|                     #    or
dvander@2762
   622
\\ [^\x80-\xff]           #   Escaped something (something != CR)
dvander@2762
   623
)* "  # closing quote
dvander@2762
   624
)  )* # further okay, if led by a period
dvander@2762
   625
(?: [\040\t] |  \(
dvander@2762
   626
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   627
\)  )*  @  (?: [\040\t] |  \(
dvander@2762
   628
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   629
\)  )*    (?:
dvander@2762
   630
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   631
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   632
|   \[                         # [
dvander@2762
   633
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
dvander@2762
   634
\]                        #           ]
dvander@2762
   635
)                           # initial subdomain
dvander@2762
   636
(?:                                  #
dvander@2762
   637
(?: [\040\t] |  \(
dvander@2762
   638
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   639
\)  )*  \.                        # if led by a period...
dvander@2762
   640
(?: [\040\t] |  \(
dvander@2762
   641
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   642
\)  )*   (?:
dvander@2762
   643
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   644
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   645
|   \[                         # [
dvander@2762
   646
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
dvander@2762
   647
\]                        #           ]
dvander@2762
   648
)                     #   ...further okay
dvander@2762
   649
)*
dvander@2762
   650
#       address spec
dvander@2762
   651
(?: [\040\t] |  \(
dvander@2762
   652
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   653
\)  )*  > #                  trailing >
dvander@2762
   654
# name and address
dvander@2762
   655
)  (?: [\040\t] |  \(
dvander@2762
   656
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
dvander@2762
   657
\)  )*                       # optional trailing comment
dvander@2762
   658
/x
dvander@2762
   659
    Alan Other <user\@dom.ain>
dvander@2762
   660
    <user\@dom.ain>
dvander@2762
   661
    user\@dom.ain
dvander@2762
   662
    \"A. Other\" <user.1234\@dom.ain> (a comment)
dvander@2762
   663
    A. Other <user.1234\@dom.ain> (a comment)
dvander@2762
   664
    \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
dvander@2762
   665
    A missing angle <user\@some.where
dvander@2762
   666
    *** Failers
dvander@2762
   667
    The quick brown fox
dvander@2762
   668
dvander@2762
   669
/[\040\t]*                    # Nab whitespace.
dvander@2762
   670
(?:
dvander@2762
   671
\(                              #  (
dvander@2762
   672
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   673
(?:                                 #       (
dvander@2762
   674
(?:  \\ [^\x80-\xff]  |
dvander@2762
   675
\(                            #  (
dvander@2762
   676
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   677
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   678
\)                           #                       )
dvander@2762
   679
)    #         special
dvander@2762
   680
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   681
)*                                  #            )*
dvander@2762
   682
\)                             #                )
dvander@2762
   683
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
   684
# optional leading comment
dvander@2762
   685
(?:
dvander@2762
   686
(?:
dvander@2762
   687
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   688
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   689
# Atom
dvander@2762
   690
|                       #  or
dvander@2762
   691
"                                     # "
dvander@2762
   692
[^\\\x80-\xff\n\015"] *                            #   normal
dvander@2762
   693
(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
dvander@2762
   694
"                                     #        "
dvander@2762
   695
# Quoted string
dvander@2762
   696
)
dvander@2762
   697
[\040\t]*                    # Nab whitespace.
dvander@2762
   698
(?:
dvander@2762
   699
\(                              #  (
dvander@2762
   700
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   701
(?:                                 #       (
dvander@2762
   702
(?:  \\ [^\x80-\xff]  |
dvander@2762
   703
\(                            #  (
dvander@2762
   704
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   705
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   706
\)                           #                       )
dvander@2762
   707
)    #         special
dvander@2762
   708
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   709
)*                                  #            )*
dvander@2762
   710
\)                             #                )
dvander@2762
   711
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
   712
(?:
dvander@2762
   713
\.
dvander@2762
   714
[\040\t]*                    # Nab whitespace.
dvander@2762
   715
(?:
dvander@2762
   716
\(                              #  (
dvander@2762
   717
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   718
(?:                                 #       (
dvander@2762
   719
(?:  \\ [^\x80-\xff]  |
dvander@2762
   720
\(                            #  (
dvander@2762
   721
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   722
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   723
\)                           #                       )
dvander@2762
   724
)    #         special
dvander@2762
   725
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   726
)*                                  #            )*
dvander@2762
   727
\)                             #                )
dvander@2762
   728
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
   729
(?:
dvander@2762
   730
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   731
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   732
# Atom
dvander@2762
   733
|                       #  or
dvander@2762
   734
"                                     # "
dvander@2762
   735
[^\\\x80-\xff\n\015"] *                            #   normal
dvander@2762
   736
(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
dvander@2762
   737
"                                     #        "
dvander@2762
   738
# Quoted string
dvander@2762
   739
)
dvander@2762
   740
[\040\t]*                    # Nab whitespace.
dvander@2762
   741
(?:
dvander@2762
   742
\(                              #  (
dvander@2762
   743
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   744
(?:                                 #       (
dvander@2762
   745
(?:  \\ [^\x80-\xff]  |
dvander@2762
   746
\(                            #  (
dvander@2762
   747
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   748
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   749
\)                           #                       )
dvander@2762
   750
)    #         special
dvander@2762
   751
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   752
)*                                  #            )*
dvander@2762
   753
\)                             #                )
dvander@2762
   754
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
   755
# additional words
dvander@2762
   756
)*
dvander@2762
   757
@
dvander@2762
   758
[\040\t]*                    # Nab whitespace.
dvander@2762
   759
(?:
dvander@2762
   760
\(                              #  (
dvander@2762
   761
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   762
(?:                                 #       (
dvander@2762
   763
(?:  \\ [^\x80-\xff]  |
dvander@2762
   764
\(                            #  (
dvander@2762
   765
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   766
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   767
\)                           #                       )
dvander@2762
   768
)    #         special
dvander@2762
   769
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   770
)*                                  #            )*
dvander@2762
   771
\)                             #                )
dvander@2762
   772
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
   773
(?:
dvander@2762
   774
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   775
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   776
|
dvander@2762
   777
\[                            # [
dvander@2762
   778
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
dvander@2762
   779
\]                           #           ]
dvander@2762
   780
)
dvander@2762
   781
[\040\t]*                    # Nab whitespace.
dvander@2762
   782
(?:
dvander@2762
   783
\(                              #  (
dvander@2762
   784
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   785
(?:                                 #       (
dvander@2762
   786
(?:  \\ [^\x80-\xff]  |
dvander@2762
   787
\(                            #  (
dvander@2762
   788
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   789
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   790
\)                           #                       )
dvander@2762
   791
)    #         special
dvander@2762
   792
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   793
)*                                  #            )*
dvander@2762
   794
\)                             #                )
dvander@2762
   795
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
   796
# optional trailing comments
dvander@2762
   797
(?:
dvander@2762
   798
\.
dvander@2762
   799
[\040\t]*                    # Nab whitespace.
dvander@2762
   800
(?:
dvander@2762
   801
\(                              #  (
dvander@2762
   802
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   803
(?:                                 #       (
dvander@2762
   804
(?:  \\ [^\x80-\xff]  |
dvander@2762
   805
\(                            #  (
dvander@2762
   806
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   807
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   808
\)                           #                       )
dvander@2762
   809
)    #         special
dvander@2762
   810
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   811
)*                                  #            )*
dvander@2762
   812
\)                             #                )
dvander@2762
   813
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
   814
(?:
dvander@2762
   815
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   816
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   817
|
dvander@2762
   818
\[                            # [
dvander@2762
   819
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
dvander@2762
   820
\]                           #           ]
dvander@2762
   821
)
dvander@2762
   822
[\040\t]*                    # Nab whitespace.
dvander@2762
   823
(?:
dvander@2762
   824
\(                              #  (
dvander@2762
   825
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   826
(?:                                 #       (
dvander@2762
   827
(?:  \\ [^\x80-\xff]  |
dvander@2762
   828
\(                            #  (
dvander@2762
   829
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   830
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   831
\)                           #                       )
dvander@2762
   832
)    #         special
dvander@2762
   833
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   834
)*                                  #            )*
dvander@2762
   835
\)                             #                )
dvander@2762
   836
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
   837
# optional trailing comments
dvander@2762
   838
)*
dvander@2762
   839
# address
dvander@2762
   840
|                             #  or
dvander@2762
   841
(?:
dvander@2762
   842
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   843
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   844
# Atom
dvander@2762
   845
|                       #  or
dvander@2762
   846
"                                     # "
dvander@2762
   847
[^\\\x80-\xff\n\015"] *                            #   normal
dvander@2762
   848
(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
dvander@2762
   849
"                                     #        "
dvander@2762
   850
# Quoted string
dvander@2762
   851
)
dvander@2762
   852
# leading word
dvander@2762
   853
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
dvander@2762
   854
(?:
dvander@2762
   855
(?:
dvander@2762
   856
\(                              #  (
dvander@2762
   857
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   858
(?:                                 #       (
dvander@2762
   859
(?:  \\ [^\x80-\xff]  |
dvander@2762
   860
\(                            #  (
dvander@2762
   861
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   862
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   863
\)                           #                       )
dvander@2762
   864
)    #         special
dvander@2762
   865
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   866
)*                                  #            )*
dvander@2762
   867
\)                             #                )
dvander@2762
   868
|
dvander@2762
   869
"                                     # "
dvander@2762
   870
[^\\\x80-\xff\n\015"] *                            #   normal
dvander@2762
   871
(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
dvander@2762
   872
"                                     #        "
dvander@2762
   873
) # "special" comment or quoted string
dvander@2762
   874
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
dvander@2762
   875
)*
dvander@2762
   876
<
dvander@2762
   877
[\040\t]*                    # Nab whitespace.
dvander@2762
   878
(?:
dvander@2762
   879
\(                              #  (
dvander@2762
   880
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   881
(?:                                 #       (
dvander@2762
   882
(?:  \\ [^\x80-\xff]  |
dvander@2762
   883
\(                            #  (
dvander@2762
   884
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   885
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   886
\)                           #                       )
dvander@2762
   887
)    #         special
dvander@2762
   888
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   889
)*                                  #            )*
dvander@2762
   890
\)                             #                )
dvander@2762
   891
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
   892
# <
dvander@2762
   893
(?:
dvander@2762
   894
@
dvander@2762
   895
[\040\t]*                    # Nab whitespace.
dvander@2762
   896
(?:
dvander@2762
   897
\(                              #  (
dvander@2762
   898
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   899
(?:                                 #       (
dvander@2762
   900
(?:  \\ [^\x80-\xff]  |
dvander@2762
   901
\(                            #  (
dvander@2762
   902
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   903
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   904
\)                           #                       )
dvander@2762
   905
)    #         special
dvander@2762
   906
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   907
)*                                  #            )*
dvander@2762
   908
\)                             #                )
dvander@2762
   909
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
   910
(?:
dvander@2762
   911
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   912
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   913
|
dvander@2762
   914
\[                            # [
dvander@2762
   915
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
dvander@2762
   916
\]                           #           ]
dvander@2762
   917
)
dvander@2762
   918
[\040\t]*                    # Nab whitespace.
dvander@2762
   919
(?:
dvander@2762
   920
\(                              #  (
dvander@2762
   921
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   922
(?:                                 #       (
dvander@2762
   923
(?:  \\ [^\x80-\xff]  |
dvander@2762
   924
\(                            #  (
dvander@2762
   925
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   926
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   927
\)                           #                       )
dvander@2762
   928
)    #         special
dvander@2762
   929
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   930
)*                                  #            )*
dvander@2762
   931
\)                             #                )
dvander@2762
   932
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
   933
# optional trailing comments
dvander@2762
   934
(?:
dvander@2762
   935
\.
dvander@2762
   936
[\040\t]*                    # Nab whitespace.
dvander@2762
   937
(?:
dvander@2762
   938
\(                              #  (
dvander@2762
   939
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   940
(?:                                 #       (
dvander@2762
   941
(?:  \\ [^\x80-\xff]  |
dvander@2762
   942
\(                            #  (
dvander@2762
   943
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   944
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   945
\)                           #                       )
dvander@2762
   946
)    #         special
dvander@2762
   947
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   948
)*                                  #            )*
dvander@2762
   949
\)                             #                )
dvander@2762
   950
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
   951
(?:
dvander@2762
   952
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
   953
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
   954
|
dvander@2762
   955
\[                            # [
dvander@2762
   956
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
dvander@2762
   957
\]                           #           ]
dvander@2762
   958
)
dvander@2762
   959
[\040\t]*                    # Nab whitespace.
dvander@2762
   960
(?:
dvander@2762
   961
\(                              #  (
dvander@2762
   962
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   963
(?:                                 #       (
dvander@2762
   964
(?:  \\ [^\x80-\xff]  |
dvander@2762
   965
\(                            #  (
dvander@2762
   966
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   967
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   968
\)                           #                       )
dvander@2762
   969
)    #         special
dvander@2762
   970
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   971
)*                                  #            )*
dvander@2762
   972
\)                             #                )
dvander@2762
   973
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
   974
# optional trailing comments
dvander@2762
   975
)*
dvander@2762
   976
(?: ,
dvander@2762
   977
[\040\t]*                    # Nab whitespace.
dvander@2762
   978
(?:
dvander@2762
   979
\(                              #  (
dvander@2762
   980
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   981
(?:                                 #       (
dvander@2762
   982
(?:  \\ [^\x80-\xff]  |
dvander@2762
   983
\(                            #  (
dvander@2762
   984
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
   985
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
   986
\)                           #                       )
dvander@2762
   987
)    #         special
dvander@2762
   988
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
   989
)*                                  #            )*
dvander@2762
   990
\)                             #                )
dvander@2762
   991
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
   992
@
dvander@2762
   993
[\040\t]*                    # Nab whitespace.
dvander@2762
   994
(?:
dvander@2762
   995
\(                              #  (
dvander@2762
   996
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
   997
(?:                                 #       (
dvander@2762
   998
(?:  \\ [^\x80-\xff]  |
dvander@2762
   999
\(                            #  (
dvander@2762
  1000
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
  1001
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
  1002
\)                           #                       )
dvander@2762
  1003
)    #         special
dvander@2762
  1004
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
  1005
)*                                  #            )*
dvander@2762
  1006
\)                             #                )
dvander@2762
  1007
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
  1008
(?:
dvander@2762
  1009
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
  1010
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
  1011
|
dvander@2762
  1012
\[                            # [
dvander@2762
  1013
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
dvander@2762
  1014
\]                           #           ]
dvander@2762
  1015
)
dvander@2762
  1016
[\040\t]*                    # Nab whitespace.
dvander@2762
  1017
(?:
dvander@2762
  1018
\(                              #  (
dvander@2762
  1019
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
  1020
(?:                                 #       (
dvander@2762
  1021
(?:  \\ [^\x80-\xff]  |
dvander@2762
  1022
\(                            #  (
dvander@2762
  1023
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
  1024
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
  1025
\)                           #                       )
dvander@2762
  1026
)    #         special
dvander@2762
  1027
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
  1028
)*                                  #            )*
dvander@2762
  1029
\)                             #                )
dvander@2762
  1030
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
  1031
# optional trailing comments
dvander@2762
  1032
(?:
dvander@2762
  1033
\.
dvander@2762
  1034
[\040\t]*                    # Nab whitespace.
dvander@2762
  1035
(?:
dvander@2762
  1036
\(                              #  (
dvander@2762
  1037
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
  1038
(?:                                 #       (
dvander@2762
  1039
(?:  \\ [^\x80-\xff]  |
dvander@2762
  1040
\(                            #  (
dvander@2762
  1041
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
  1042
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
  1043
\)                           #                       )
dvander@2762
  1044
)    #         special
dvander@2762
  1045
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
  1046
)*                                  #            )*
dvander@2762
  1047
\)                             #                )
dvander@2762
  1048
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
  1049
(?:
dvander@2762
  1050
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
  1051
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
  1052
|
dvander@2762
  1053
\[                            # [
dvander@2762
  1054
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
dvander@2762
  1055
\]                           #           ]
dvander@2762
  1056
)
dvander@2762
  1057
[\040\t]*                    # Nab whitespace.
dvander@2762
  1058
(?:
dvander@2762
  1059
\(                              #  (
dvander@2762
  1060
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
  1061
(?:                                 #       (
dvander@2762
  1062
(?:  \\ [^\x80-\xff]  |
dvander@2762
  1063
\(                            #  (
dvander@2762
  1064
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
  1065
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
  1066
\)                           #                       )
dvander@2762
  1067
)    #         special
dvander@2762
  1068
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
  1069
)*                                  #            )*
dvander@2762
  1070
\)                             #                )
dvander@2762
  1071
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
  1072
# optional trailing comments
dvander@2762
  1073
)*
dvander@2762
  1074
)*  # additional domains
dvander@2762
  1075
:
dvander@2762
  1076
[\040\t]*                    # Nab whitespace.
dvander@2762
  1077
(?:
dvander@2762
  1078
\(                              #  (
dvander@2762
  1079
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
  1080
(?:                                 #       (
dvander@2762
  1081
(?:  \\ [^\x80-\xff]  |
dvander@2762
  1082
\(                            #  (
dvander@2762
  1083
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
  1084
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
  1085
\)                           #                       )
dvander@2762
  1086
)    #         special
dvander@2762
  1087
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
  1088
)*                                  #            )*
dvander@2762
  1089
\)                             #                )
dvander@2762
  1090
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
  1091
# optional trailing comments
dvander@2762
  1092
)?     #       optional route
dvander@2762
  1093
(?:
dvander@2762
  1094
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
  1095
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
  1096
# Atom
dvander@2762
  1097
|                       #  or
dvander@2762
  1098
"                                     # "
dvander@2762
  1099
[^\\\x80-\xff\n\015"] *                            #   normal
dvander@2762
  1100
(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
dvander@2762
  1101
"                                     #        "
dvander@2762
  1102
# Quoted string
dvander@2762
  1103
)
dvander@2762
  1104
[\040\t]*                    # Nab whitespace.
dvander@2762
  1105
(?:
dvander@2762
  1106
\(                              #  (
dvander@2762
  1107
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
  1108
(?:                                 #       (
dvander@2762
  1109
(?:  \\ [^\x80-\xff]  |
dvander@2762
  1110
\(                            #  (
dvander@2762
  1111
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
  1112
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
  1113
\)                           #                       )
dvander@2762
  1114
)    #         special
dvander@2762
  1115
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
  1116
)*                                  #            )*
dvander@2762
  1117
\)                             #                )
dvander@2762
  1118
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
  1119
(?:
dvander@2762
  1120
\.
dvander@2762
  1121
[\040\t]*                    # Nab whitespace.
dvander@2762
  1122
(?:
dvander@2762
  1123
\(                              #  (
dvander@2762
  1124
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
  1125
(?:                                 #       (
dvander@2762
  1126
(?:  \\ [^\x80-\xff]  |
dvander@2762
  1127
\(                            #  (
dvander@2762
  1128
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
  1129
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
  1130
\)                           #                       )
dvander@2762
  1131
)    #         special
dvander@2762
  1132
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
  1133
)*                                  #            )*
dvander@2762
  1134
\)                             #                )
dvander@2762
  1135
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
  1136
(?:
dvander@2762
  1137
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
  1138
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
  1139
# Atom
dvander@2762
  1140
|                       #  or
dvander@2762
  1141
"                                     # "
dvander@2762
  1142
[^\\\x80-\xff\n\015"] *                            #   normal
dvander@2762
  1143
(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
dvander@2762
  1144
"                                     #        "
dvander@2762
  1145
# Quoted string
dvander@2762
  1146
)
dvander@2762
  1147
[\040\t]*                    # Nab whitespace.
dvander@2762
  1148
(?:
dvander@2762
  1149
\(                              #  (
dvander@2762
  1150
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
  1151
(?:                                 #       (
dvander@2762
  1152
(?:  \\ [^\x80-\xff]  |
dvander@2762
  1153
\(                            #  (
dvander@2762
  1154
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
  1155
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
  1156
\)                           #                       )
dvander@2762
  1157
)    #         special
dvander@2762
  1158
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
  1159
)*                                  #            )*
dvander@2762
  1160
\)                             #                )
dvander@2762
  1161
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
  1162
# additional words
dvander@2762
  1163
)*
dvander@2762
  1164
@
dvander@2762
  1165
[\040\t]*                    # Nab whitespace.
dvander@2762
  1166
(?:
dvander@2762
  1167
\(                              #  (
dvander@2762
  1168
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
  1169
(?:                                 #       (
dvander@2762
  1170
(?:  \\ [^\x80-\xff]  |
dvander@2762
  1171
\(                            #  (
dvander@2762
  1172
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
  1173
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
  1174
\)                           #                       )
dvander@2762
  1175
)    #         special
dvander@2762
  1176
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
  1177
)*                                  #            )*
dvander@2762
  1178
\)                             #                )
dvander@2762
  1179
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
  1180
(?:
dvander@2762
  1181
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
  1182
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
  1183
|
dvander@2762
  1184
\[                            # [
dvander@2762
  1185
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
dvander@2762
  1186
\]                           #           ]
dvander@2762
  1187
)
dvander@2762
  1188
[\040\t]*                    # Nab whitespace.
dvander@2762
  1189
(?:
dvander@2762
  1190
\(                              #  (
dvander@2762
  1191
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
  1192
(?:                                 #       (
dvander@2762
  1193
(?:  \\ [^\x80-\xff]  |
dvander@2762
  1194
\(                            #  (
dvander@2762
  1195
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
  1196
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
  1197
\)                           #                       )
dvander@2762
  1198
)    #         special
dvander@2762
  1199
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
  1200
)*                                  #            )*
dvander@2762
  1201
\)                             #                )
dvander@2762
  1202
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
  1203
# optional trailing comments
dvander@2762
  1204
(?:
dvander@2762
  1205
\.
dvander@2762
  1206
[\040\t]*                    # Nab whitespace.
dvander@2762
  1207
(?:
dvander@2762
  1208
\(                              #  (
dvander@2762
  1209
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
  1210
(?:                                 #       (
dvander@2762
  1211
(?:  \\ [^\x80-\xff]  |
dvander@2762
  1212
\(                            #  (
dvander@2762
  1213
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
  1214
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
  1215
\)                           #                       )
dvander@2762
  1216
)    #         special
dvander@2762
  1217
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
  1218
)*                                  #            )*
dvander@2762
  1219
\)                             #                )
dvander@2762
  1220
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
  1221
(?:
dvander@2762
  1222
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
dvander@2762
  1223
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
dvander@2762
  1224
|
dvander@2762
  1225
\[                            # [
dvander@2762
  1226
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
dvander@2762
  1227
\]                           #           ]
dvander@2762
  1228
)
dvander@2762
  1229
[\040\t]*                    # Nab whitespace.
dvander@2762
  1230
(?:
dvander@2762
  1231
\(                              #  (
dvander@2762
  1232
[^\\\x80-\xff\n\015()] *                             #     normal*
dvander@2762
  1233
(?:                                 #       (
dvander@2762
  1234
(?:  \\ [^\x80-\xff]  |
dvander@2762
  1235
\(                            #  (
dvander@2762
  1236
[^\\\x80-\xff\n\015()] *                            #     normal*
dvander@2762
  1237
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
dvander@2762
  1238
\)                           #                       )
dvander@2762
  1239
)    #         special
dvander@2762
  1240
[^\\\x80-\xff\n\015()] *                         #         normal*
dvander@2762
  1241
)*                                  #            )*
dvander@2762
  1242
\)                             #                )
dvander@2762
  1243
[\040\t]* )*    # If comment found, allow more spaces.
dvander@2762
  1244
# optional trailing comments
dvander@2762
  1245
)*
dvander@2762
  1246
#       address spec
dvander@2762
  1247
>                    #                 >
dvander@2762
  1248
# name and address
dvander@2762
  1249
)
dvander@2762
  1250
/x
dvander@2762
  1251
    Alan Other <user\@dom.ain>
dvander@2762
  1252
    <user\@dom.ain>
dvander@2762
  1253
    user\@dom.ain
dvander@2762
  1254
    \"A. Other\" <user.1234\@dom.ain> (a comment)
dvander@2762
  1255
    A. Other <user.1234\@dom.ain> (a comment)
dvander@2762
  1256
    \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
dvander@2762
  1257
    A missing angle <user\@some.where
dvander@2762
  1258
    *** Failers
dvander@2762
  1259
    The quick brown fox
dvander@2762
  1260
dvander@2762
  1261
/abc\0def\00pqr\000xyz\0000AB/
dvander@2762
  1262
    abc\0def\00pqr\000xyz\0000AB
dvander@2762
  1263
    abc456 abc\0def\00pqr\000xyz\0000ABCDE
dvander@2762
  1264
dvander@2762
  1265
/abc\x0def\x00pqr\x000xyz\x0000AB/
dvander@2762
  1266
    abc\x0def\x00pqr\x000xyz\x0000AB
dvander@2762
  1267
    abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
dvander@2762
  1268
dvander@2762
  1269
/^[\000-\037]/
dvander@2762
  1270
    \0A
dvander@2762
  1271
    \01B
dvander@2762
  1272
    \037C
dvander@2762
  1273
dvander@2762
  1274
/\0*/
dvander@2762
  1275
    \0\0\0\0
dvander@2762
  1276
dvander@2762
  1277
/A\x0{2,3}Z/
dvander@2762
  1278
    The A\x0\x0Z
dvander@2762
  1279
    An A\0\x0\0Z
dvander@2762
  1280
    *** Failers
dvander@2762
  1281
    A\0Z
dvander@2762
  1282
    A\0\x0\0\x0Z
dvander@2762
  1283
dvander@2762
  1284
/^(cow|)\1(bell)/
dvander@2762
  1285
    cowcowbell
dvander@2762
  1286
    bell
dvander@2762
  1287
    *** Failers
dvander@2762
  1288
    cowbell
dvander@2762
  1289
dvander@2762
  1290
/^\s/
dvander@2762
  1291
    \040abc
dvander@2762
  1292
    \x0cabc
dvander@2762
  1293
    \nabc
dvander@2762
  1294
    \rabc
dvander@2762
  1295
    \tabc
dvander@2762
  1296
    *** Failers
dvander@2762
  1297
    abc
dvander@2762
  1298
dvander@2762
  1299
/^a	b
dvander@2762
  1300
      c/x
dvander@2762
  1301
    abc
dvander@2762
  1302
dvander@2762
  1303
/^(a|)\1*b/
dvander@2762
  1304
    ab
dvander@2762
  1305
    aaaab
dvander@2762
  1306
    b
dvander@2762
  1307
    *** Failers
dvander@2762
  1308
    acb
dvander@2762
  1309
dvander@2762
  1310
/^(a|)\1+b/
dvander@2762
  1311
    aab
dvander@2762
  1312
    aaaab
dvander@2762
  1313
    b
dvander@2762
  1314
    *** Failers
dvander@2762
  1315
    ab
dvander@2762
  1316
dvander@2762
  1317
/^(a|)\1?b/
dvander@2762
  1318
    ab
dvander@2762
  1319
    aab
dvander@2762
  1320
    b
dvander@2762
  1321
    *** Failers
dvander@2762
  1322
    acb
dvander@2762
  1323
dvander@2762
  1324
/^(a|)\1{2}b/
dvander@2762
  1325
    aaab
dvander@2762
  1326
    b
dvander@2762
  1327
    *** Failers
dvander@2762
  1328
    ab
dvander@2762
  1329
    aab
dvander@2762
  1330
    aaaab
dvander@2762
  1331
dvander@2762
  1332
/^(a|)\1{2,3}b/
dvander@2762
  1333
    aaab
dvander@2762
  1334
    aaaab
dvander@2762
  1335
    b
dvander@2762
  1336
    *** Failers
dvander@2762
  1337
    ab
dvander@2762
  1338
    aab
dvander@2762
  1339
    aaaaab
dvander@2762
  1340
dvander@2762
  1341
/ab{1,3}bc/
dvander@2762
  1342
    abbbbc
dvander@2762
  1343
    abbbc
dvander@2762
  1344
    abbc
dvander@2762
  1345
    *** Failers
dvander@2762
  1346
    abc
dvander@2762
  1347
    abbbbbc
dvander@2762
  1348
dvander@2762
  1349
/([^.]*)\.([^:]*):[T ]+(.*)/
dvander@2762
  1350
    track1.title:TBlah blah blah
dvander@2762
  1351
dvander@2762
  1352
/([^.]*)\.([^:]*):[T ]+(.*)/i
dvander@2762
  1353
    track1.title:TBlah blah blah
dvander@2762
  1354
dvander@2762
  1355
/([^.]*)\.([^:]*):[t ]+(.*)/i
dvander@2762
  1356
    track1.title:TBlah blah blah
dvander@2762
  1357
dvander@2762
  1358
/^[W-c]+$/
dvander@2762
  1359
    WXY_^abc
dvander@2762
  1360
    *** Failers
dvander@2762
  1361
    wxy
dvander@2762
  1362
dvander@2762
  1363
/^[W-c]+$/i
dvander@2762
  1364
    WXY_^abc
dvander@2762
  1365
    wxy_^ABC
dvander@2762
  1366
dvander@2762
  1367
/^[\x3f-\x5F]+$/i
dvander@2762
  1368
    WXY_^abc
dvander@2762
  1369
    wxy_^ABC
dvander@2762
  1370
dvander@2762
  1371
/^abc$/m
dvander@2762
  1372
    abc
dvander@2762
  1373
    qqq\nabc
dvander@2762
  1374
    abc\nzzz
dvander@2762
  1375
    qqq\nabc\nzzz
dvander@2762
  1376
dvander@2762
  1377
/^abc$/
dvander@2762
  1378
    abc
dvander@2762
  1379
    *** Failers
dvander@2762
  1380
    qqq\nabc
dvander@2762
  1381
    abc\nzzz
dvander@2762
  1382
    qqq\nabc\nzzz
dvander@2762
  1383
dvander@2762
  1384
/\Aabc\Z/m
dvander@2762
  1385
    abc
dvander@2762
  1386
    abc\n 
dvander@2762
  1387
    *** Failers
dvander@2762
  1388
    qqq\nabc
dvander@2762
  1389
    abc\nzzz
dvander@2762
  1390
    qqq\nabc\nzzz
dvander@2762
  1391
    
dvander@2762
  1392
/\A(.)*\Z/s
dvander@2762
  1393
    abc\ndef
dvander@2762
  1394
dvander@2762
  1395
/\A(.)*\Z/m
dvander@2762
  1396
    *** Failers
dvander@2762
  1397
    abc\ndef
dvander@2762
  1398
dvander@2762
  1399
/(?:b)|(?::+)/
dvander@2762
  1400
    b::c
dvander@2762
  1401
    c::b
dvander@2762
  1402
dvander@2762
  1403
/[-az]+/
dvander@2762
  1404
    az-
dvander@2762
  1405
    *** Failers
dvander@2762
  1406
    b
dvander@2762
  1407
dvander@2762
  1408
/[az-]+/
dvander@2762
  1409
    za-
dvander@2762
  1410
    *** Failers
dvander@2762
  1411
    b
dvander@2762
  1412
dvander@2762
  1413
/[a\-z]+/
dvander@2762
  1414
    a-z
dvander@2762
  1415
    *** Failers
dvander@2762
  1416
    b
dvander@2762
  1417
dvander@2762
  1418
/[a-z]+/
dvander@2762
  1419
    abcdxyz
dvander@2762
  1420
dvander@2762
  1421
/[\d-]+/
dvander@2762
  1422
    12-34
dvander@2762
  1423
    *** Failers
dvander@2762
  1424
    aaa
dvander@2762
  1425
dvander@2762
  1426
/[\d-z]+/
dvander@2762
  1427
    12-34z
dvander@2762
  1428
    *** Failers
dvander@2762
  1429
    aaa
dvander@2762
  1430
dvander@2762
  1431
/\x5c/
dvander@2762
  1432
    \\
dvander@2762
  1433
dvander@2762
  1434
/\x20Z/
dvander@2762
  1435
    the Zoo
dvander@2762
  1436
    *** Failers
dvander@2762
  1437
    Zulu
dvander@2762
  1438
dvander@2762
  1439
/(abc)\1/i
dvander@2762
  1440
    abcabc
dvander@2762
  1441
    ABCabc
dvander@2762
  1442
    abcABC
dvander@2762
  1443
dvander@2762
  1444
/ab{3cd/
dvander@2762
  1445
    ab{3cd
dvander@2762
  1446
dvander@2762
  1447
/ab{3,cd/
dvander@2762
  1448
    ab{3,cd
dvander@2762
  1449
dvander@2762
  1450
/ab{3,4a}cd/
dvander@2762
  1451
    ab{3,4a}cd
dvander@2762
  1452
dvander@2762
  1453
/{4,5a}bc/
dvander@2762
  1454
    {4,5a}bc
dvander@2762
  1455
dvander@2762
  1456
/abc$/
dvander@2762
  1457
    abc
dvander@2762
  1458
    abc\n
dvander@2762
  1459
    *** Failers
dvander@2762
  1460
    abc\ndef
dvander@2762
  1461
dvander@2762
  1462
/(abc)\123/
dvander@2762
  1463
    abc\x53
dvander@2762
  1464
dvander@2762
  1465
/(abc)\223/
dvander@2762
  1466
    abc\x93
dvander@2762
  1467
dvander@2762
  1468
/(abc)\323/
dvander@2762
  1469
    abc\xd3
dvander@2762
  1470
dvander@2762
  1471
/(abc)\100/
dvander@2762
  1472
    abc\x40
dvander@2762
  1473
    abc\100
dvander@2762
  1474
dvander@2762
  1475
/(abc)\1000/
dvander@2762
  1476
    abc\x400
dvander@2762
  1477
    abc\x40\x30
dvander@2762
  1478
    abc\1000
dvander@2762
  1479
    abc\100\x30
dvander@2762
  1480
    abc\100\060
dvander@2762
  1481
    abc\100\60
dvander@2762
  1482
dvander@2762
  1483
/abc\81/
dvander@2762
  1484
    abc\081
dvander@2762
  1485
    abc\0\x38\x31
dvander@2762
  1486
dvander@2762
  1487
/abc\91/
dvander@2762
  1488
    abc\091
dvander@2762
  1489
    abc\0\x39\x31
dvander@2762
  1490
dvander@2762
  1491
/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
dvander@2762
  1492
    abcdefghijkllS
dvander@2762
  1493
dvander@2762
  1494
/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
dvander@2762
  1495
    abcdefghijk\12S
dvander@2762
  1496
dvander@2762
  1497
/ab\idef/
dvander@2762
  1498
    abidef
dvander@2762
  1499
dvander@2762
  1500
/a{0}bc/
dvander@2762
  1501
    bc
dvander@2762
  1502
dvander@2762
  1503
/(a|(bc)){0,0}?xyz/
dvander@2762
  1504
    xyz
dvander@2762
  1505
dvander@2762
  1506
/abc[\10]de/
dvander@2762
  1507
    abc\010de
dvander@2762
  1508
dvander@2762
  1509
/abc[\1]de/
dvander@2762
  1510
    abc\1de
dvander@2762
  1511
dvander@2762
  1512
/(abc)[\1]de/
dvander@2762
  1513
    abc\1de
dvander@2762
  1514
dvander@2762
  1515
/(?s)a.b/
dvander@2762
  1516
    a\nb
dvander@2762
  1517
dvander@2762
  1518
/^([^a])([^\b])([^c]*)([^d]{3,4})/
dvander@2762
  1519
    baNOTccccd
dvander@2762
  1520
    baNOTcccd
dvander@2762
  1521
    baNOTccd
dvander@2762
  1522
    bacccd
dvander@2762
  1523
    *** Failers
dvander@2762
  1524
    anything
dvander@2762
  1525
    b\bc   
dvander@2762
  1526
    baccd
dvander@2762
  1527
dvander@2762
  1528
/[^a]/
dvander@2762
  1529
    Abc
dvander@2762
  1530
  
dvander@2762
  1531
/[^a]/i
dvander@2762
  1532
    Abc 
dvander@2762
  1533
dvander@2762
  1534
/[^a]+/
dvander@2762
  1535
    AAAaAbc
dvander@2762
  1536
  
dvander@2762
  1537
/[^a]+/i
dvander@2762
  1538
    AAAaAbc 
dvander@2762
  1539
dvander@2762
  1540
/[^a]+/
dvander@2762
  1541
    bbb\nccc
dvander@2762
  1542
   
dvander@2762
  1543
/[^k]$/
dvander@2762
  1544
    abc
dvander@2762
  1545
    *** Failers
dvander@2762
  1546
    abk   
dvander@2762
  1547
   
dvander@2762
  1548
/[^k]{2,3}$/
dvander@2762
  1549
    abc
dvander@2762
  1550
    kbc
dvander@2762
  1551
    kabc 
dvander@2762
  1552
    *** Failers
dvander@2762
  1553
    abk
dvander@2762
  1554
    akb
dvander@2762
  1555
    akk 
dvander@2762
  1556
dvander@2762
  1557
/^\d{8,}\@.+[^k]$/
dvander@2762
  1558
    12345678\@a.b.c.d
dvander@2762
  1559
    123456789\@x.y.z
dvander@2762
  1560
    *** Failers
dvander@2762
  1561
    12345678\@x.y.uk
dvander@2762
  1562
    1234567\@a.b.c.d       
dvander@2762
  1563
dvander@2762
  1564
/(a)\1{8,}/
dvander@2762
  1565
    aaaaaaaaa
dvander@2762
  1566
    aaaaaaaaaa
dvander@2762
  1567
    *** Failers
dvander@2762
  1568
    aaaaaaa   
dvander@2762
  1569
dvander@2762
  1570
/[^a]/
dvander@2762
  1571
    aaaabcd
dvander@2762
  1572
    aaAabcd 
dvander@2762
  1573
dvander@2762
  1574
/[^a]/i
dvander@2762
  1575
    aaaabcd
dvander@2762
  1576
    aaAabcd 
dvander@2762
  1577
dvander@2762
  1578
/[^az]/
dvander@2762
  1579
    aaaabcd
dvander@2762
  1580
    aaAabcd 
dvander@2762
  1581
dvander@2762
  1582
/[^az]/i
dvander@2762
  1583
    aaaabcd
dvander@2762
  1584
    aaAabcd 
dvander@2762
  1585
dvander@2762
  1586
/\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/
dvander@2762
  1587
 \000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377
dvander@2762
  1588
dvander@2762
  1589
/P[^*]TAIRE[^*]{1,6}?LL/
dvander@2762
  1590
    xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
dvander@2762
  1591
dvander@2762
  1592
/P[^*]TAIRE[^*]{1,}?LL/
dvander@2762
  1593
    xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
dvander@2762
  1594
dvander@2762
  1595
/(\.\d\d[1-9]?)\d+/
dvander@2762
  1596
    1.230003938
dvander@2762
  1597
    1.875000282   
dvander@2762
  1598
    1.235  
dvander@2762
  1599
                  
dvander@2762
  1600
/(\.\d\d((?=0)|\d(?=\d)))/
dvander@2762
  1601
    1.230003938      
dvander@2762
  1602
    1.875000282
dvander@2762
  1603
    *** Failers 
dvander@2762
  1604
    1.235 
dvander@2762
  1605
    
dvander@2762
  1606
/a(?)b/
dvander@2762
  1607
    ab 
dvander@2762
  1608
 
dvander@2762
  1609
/\b(foo)\s+(\w+)/i
dvander@2762
  1610
    Food is on the foo table
dvander@2762
  1611
    
dvander@2762
  1612
/foo(.*)bar/
dvander@2762
  1613
    The food is under the bar in the barn.
dvander@2762
  1614
    
dvander@2762
  1615
/foo(.*?)bar/  
dvander@2762
  1616
    The food is under the bar in the barn.
dvander@2762
  1617
dvander@2762
  1618
/(.*)(\d*)/
dvander@2762
  1619
    I have 2 numbers: 53147
dvander@2762
  1620
    
dvander@2762
  1621
/(.*)(\d+)/
dvander@2762
  1622
    I have 2 numbers: 53147
dvander@2762
  1623
 
dvander@2762
  1624
/(.*?)(\d*)/
dvander@2762
  1625
    I have 2 numbers: 53147
dvander@2762
  1626
dvander@2762
  1627
/(.*?)(\d+)/
dvander@2762
  1628
    I have 2 numbers: 53147
dvander@2762
  1629
dvander@2762
  1630
/(.*)(\d+)$/
dvander@2762
  1631
    I have 2 numbers: 53147
dvander@2762
  1632
dvander@2762
  1633
/(.*?)(\d+)$/
dvander@2762
  1634
    I have 2 numbers: 53147
dvander@2762
  1635
dvander@2762
  1636
/(.*)\b(\d+)$/
dvander@2762
  1637
    I have 2 numbers: 53147
dvander@2762
  1638
dvander@2762
  1639
/(.*\D)(\d+)$/
dvander@2762
  1640
    I have 2 numbers: 53147
dvander@2762
  1641
dvander@2762
  1642
/^\D*(?!123)/
dvander@2762
  1643
    ABC123
dvander@2762
  1644
     
dvander@2762
  1645
/^(\D*)(?=\d)(?!123)/
dvander@2762
  1646
    ABC445
dvander@2762
  1647
    *** Failers
dvander@2762
  1648
    ABC123
dvander@2762
  1649
    
dvander@2762
  1650
/^[W-]46]/
dvander@2762
  1651
    W46]789 
dvander@2762
  1652
    -46]789
dvander@2762
  1653
    *** Failers
dvander@2762
  1654
    Wall
dvander@2762
  1655
    Zebra
dvander@2762
  1656
    42
dvander@2762
  1657
    [abcd] 
dvander@2762
  1658
    ]abcd[
dvander@2762
  1659
       
dvander@2762
  1660
/^[W-\]46]/
dvander@2762
  1661
    W46]789 
dvander@2762
  1662
    Wall
dvander@2762
  1663
    Zebra
dvander@2762
  1664
    Xylophone  
dvander@2762
  1665
    42
dvander@2762
  1666
    [abcd] 
dvander@2762
  1667
    ]abcd[
dvander@2762
  1668
    \\backslash 
dvander@2762
  1669
    *** Failers
dvander@2762
  1670
    -46]789
dvander@2762
  1671
    well
dvander@2762
  1672
    
dvander@2762
  1673
/\d\d\/\d\d\/\d\d\d\d/
dvander@2762
  1674
    01/01/2000
dvander@2762
  1675
dvander@2762
  1676
/word (?:[a-zA-Z0-9]+ ){0,10}otherword/
dvander@2762
  1677
  word cat dog elephant mussel cow horse canary baboon snake shark otherword
dvander@2762
  1678
  word cat dog elephant mussel cow horse canary baboon snake shark
dvander@2762
  1679
dvander@2762
  1680
/word (?:[a-zA-Z0-9]+ ){0,300}otherword/
dvander@2762
  1681
  word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
dvander@2762
  1682
dvander@2762
  1683
/^(a){0,0}/
dvander@2762
  1684
    bcd
dvander@2762
  1685
    abc
dvander@2762
  1686
    aab     
dvander@2762
  1687
dvander@2762
  1688
/^(a){0,1}/
dvander@2762
  1689
    bcd
dvander@2762
  1690
    abc
dvander@2762
  1691
    aab  
dvander@2762
  1692
dvander@2762
  1693
/^(a){0,2}/
dvander@2762
  1694
    bcd
dvander@2762
  1695
    abc
dvander@2762
  1696
    aab  
dvander@2762
  1697
dvander@2762
  1698
/^(a){0,3}/
dvander@2762
  1699
    bcd
dvander@2762
  1700
    abc
dvander@2762
  1701
    aab
dvander@2762
  1702
    aaa   
dvander@2762
  1703
dvander@2762
  1704
/^(a){0,}/
dvander@2762
  1705
    bcd
dvander@2762
  1706
    abc
dvander@2762
  1707
    aab
dvander@2762
  1708
    aaa
dvander@2762
  1709
    aaaaaaaa    
dvander@2762
  1710
dvander@2762
  1711
/^(a){1,1}/
dvander@2762
  1712
    bcd
dvander@2762
  1713
    abc
dvander@2762
  1714
    aab  
dvander@2762
  1715
dvander@2762
  1716
/^(a){1,2}/
dvander@2762
  1717
    bcd
dvander@2762
  1718
    abc
dvander@2762
  1719
    aab  
dvander@2762
  1720
dvander@2762
  1721
/^(a){1,3}/
dvander@2762
  1722
    bcd
dvander@2762
  1723
    abc
dvander@2762
  1724
    aab
dvander@2762
  1725
    aaa   
dvander@2762
  1726
dvander@2762
  1727
/^(a){1,}/
dvander@2762
  1728
    bcd
dvander@2762
  1729
    abc
dvander@2762
  1730
    aab
dvander@2762
  1731
    aaa
dvander@2762
  1732
    aaaaaaaa    
dvander@2762
  1733
dvander@2762
  1734
/.*\.gif/
dvander@2762
  1735
    borfle\nbib.gif\nno
dvander@2762
  1736
dvander@2762
  1737
/.{0,}\.gif/
dvander@2762
  1738
    borfle\nbib.gif\nno
dvander@2762
  1739
dvander@2762
  1740
/.*\.gif/m
dvander@2762
  1741
    borfle\nbib.gif\nno
dvander@2762
  1742
dvander@2762
  1743
/.*\.gif/s
dvander@2762
  1744
    borfle\nbib.gif\nno
dvander@2762
  1745
dvander@2762
  1746
/.*\.gif/ms
dvander@2762
  1747
    borfle\nbib.gif\nno
dvander@2762
  1748
    
dvander@2762
  1749
/.*$/
dvander@2762
  1750
    borfle\nbib.gif\nno
dvander@2762
  1751
dvander@2762
  1752
/.*$/m
dvander@2762
  1753
    borfle\nbib.gif\nno
dvander@2762
  1754
dvander@2762
  1755
/.*$/s
dvander@2762
  1756
    borfle\nbib.gif\nno
dvander@2762
  1757
dvander@2762
  1758
/.*$/ms
dvander@2762
  1759
    borfle\nbib.gif\nno
dvander@2762
  1760
    
dvander@2762
  1761
/.*$/
dvander@2762
  1762
    borfle\nbib.gif\nno\n
dvander@2762
  1763
dvander@2762
  1764
/.*$/m
dvander@2762
  1765
    borfle\nbib.gif\nno\n
dvander@2762
  1766
dvander@2762
  1767
/.*$/s
dvander@2762
  1768
    borfle\nbib.gif\nno\n
dvander@2762
  1769
dvander@2762
  1770
/.*$/ms
dvander@2762
  1771
    borfle\nbib.gif\nno\n
dvander@2762
  1772
    
dvander@2762
  1773
/(.*X|^B)/
dvander@2762
  1774
    abcde\n1234Xyz
dvander@2762
  1775
    BarFoo 
dvander@2762
  1776
    *** Failers
dvander@2762
  1777
    abcde\nBar  
dvander@2762
  1778
dvander@2762
  1779
/(.*X|^B)/m
dvander@2762
  1780
    abcde\n1234Xyz
dvander@2762
  1781
    BarFoo 
dvander@2762
  1782
    abcde\nBar  
dvander@2762
  1783
dvander@2762
  1784
/(.*X|^B)/s
dvander@2762
  1785
    abcde\n1234Xyz
dvander@2762
  1786
    BarFoo 
dvander@2762
  1787
    *** Failers
dvander@2762
  1788
    abcde\nBar  
dvander@2762
  1789
dvander@2762
  1790
/(.*X|^B)/ms
dvander@2762
  1791
    abcde\n1234Xyz
dvander@2762
  1792
    BarFoo 
dvander@2762
  1793
    abcde\nBar  
dvander@2762
  1794
dvander@2762
  1795
/(?s)(.*X|^B)/
dvander@2762
  1796
    abcde\n1234Xyz
dvander@2762
  1797
    BarFoo 
dvander@2762
  1798
    *** Failers 
dvander@2762
  1799
    abcde\nBar  
dvander@2762
  1800
dvander@2762
  1801
/(?s:.*X|^B)/
dvander@2762
  1802
    abcde\n1234Xyz
dvander@2762
  1803
    BarFoo 
dvander@2762
  1804
    *** Failers 
dvander@2762
  1805
    abcde\nBar  
dvander@2762
  1806
dvander@2762
  1807
/^.*B/
dvander@2762
  1808
    **** Failers
dvander@2762
  1809
    abc\nB
dvander@2762
  1810
     
dvander@2762
  1811
/(?s)^.*B/
dvander@2762
  1812
    abc\nB
dvander@2762
  1813
dvander@2762
  1814
/(?m)^.*B/
dvander@2762
  1815
    abc\nB
dvander@2762
  1816
     
dvander@2762
  1817
/(?ms)^.*B/
dvander@2762
  1818
    abc\nB
dvander@2762
  1819
dvander@2762
  1820
/(?ms)^B/
dvander@2762
  1821
    abc\nB
dvander@2762
  1822
dvander@2762
  1823
/(?s)B$/
dvander@2762
  1824
    B\n
dvander@2762
  1825
dvander@2762
  1826
/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
dvander@2762
  1827
    123456654321
dvander@2762
  1828
  
dvander@2762
  1829
/^\d\d\d\d\d\d\d\d\d\d\d\d/
dvander@2762
  1830
    123456654321 
dvander@2762
  1831
dvander@2762
  1832
/^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
dvander@2762
  1833
    123456654321
dvander@2762
  1834
  
dvander@2762
  1835
/^[abc]{12}/
dvander@2762
  1836
    abcabcabcabc
dvander@2762
  1837
    
dvander@2762
  1838
/^[a-c]{12}/
dvander@2762
  1839
    abcabcabcabc
dvander@2762
  1840
    
dvander@2762
  1841
/^(a|b|c){12}/
dvander@2762
  1842
    abcabcabcabc 
dvander@2762
  1843
dvander@2762
  1844
/^[abcdefghijklmnopqrstuvwxy0123456789]/
dvander@2762
  1845
    n
dvander@2762
  1846
    *** Failers 
dvander@2762
  1847
    z 
dvander@2762
  1848
dvander@2762
  1849
/abcde{0,0}/
dvander@2762
  1850
    abcd
dvander@2762
  1851
    *** Failers
dvander@2762
  1852
    abce  
dvander@2762
  1853
dvander@2762
  1854
/ab[cd]{0,0}e/
dvander@2762
  1855
    abe
dvander@2762
  1856
    *** Failers
dvander@2762
  1857
    abcde 
dvander@2762
  1858
    
dvander@2762
  1859
/ab(c){0,0}d/
dvander@2762
  1860
    abd
dvander@2762
  1861
    *** Failers
dvander@2762
  1862
    abcd   
dvander@2762
  1863
dvander@2762
  1864
/a(b*)/
dvander@2762
  1865
    a
dvander@2762
  1866
    ab
dvander@2762
  1867
    abbbb
dvander@2762
  1868
    *** Failers
dvander@2762
  1869
    bbbbb    
dvander@2762
  1870
    
dvander@2762
  1871
/ab\d{0}e/
dvander@2762
  1872
    abe
dvander@2762
  1873
    *** Failers
dvander@2762
  1874
    ab1e   
dvander@2762
  1875
    
dvander@2762
  1876
/"([^\\"]+|\\.)*"/
dvander@2762
  1877
    the \"quick\" brown fox
dvander@2762
  1878
    \"the \\\"quick\\\" brown fox\" 
dvander@2762
  1879
dvander@2762
  1880
/.*?/g+
dvander@2762
  1881
    abc
dvander@2762
  1882
  
dvander@2762
  1883
/\b/g+
dvander@2762
  1884
    abc 
dvander@2762
  1885
dvander@2762
  1886
/\b/+g
dvander@2762
  1887
    abc 
dvander@2762
  1888
dvander@2762
  1889
//g
dvander@2762
  1890
    abc
dvander@2762
  1891
dvander@2762
  1892
/<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is
dvander@2762
  1893
  <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
dvander@2762
  1894
dvander@2762
  1895
/a[^a]b/
dvander@2762
  1896
    acb
dvander@2762
  1897
    a\nb
dvander@2762
  1898
    
dvander@2762
  1899
/a.b/
dvander@2762
  1900
    acb
dvander@2762
  1901
    *** Failers 
dvander@2762
  1902
    a\nb   
dvander@2762
  1903
    
dvander@2762
  1904
/a[^a]b/s
dvander@2762
  1905
    acb
dvander@2762
  1906
    a\nb  
dvander@2762
  1907
    
dvander@2762
  1908
/a.b/s
dvander@2762
  1909
    acb
dvander@2762
  1910
    a\nb  
dvander@2762
  1911
dvander@2762
  1912
/^(b+?|a){1,2}?c/
dvander@2762
  1913
    bac
dvander@2762
  1914
    bbac
dvander@2762
  1915
    bbbac
dvander@2762
  1916
    bbbbac
dvander@2762
  1917
    bbbbbac 
dvander@2762
  1918
dvander@2762
  1919
/^(b+|a){1,2}?c/
dvander@2762
  1920
    bac
dvander@2762
  1921
    bbac
dvander@2762
  1922
    bbbac
dvander@2762
  1923
    bbbbac
dvander@2762
  1924
    bbbbbac 
dvander@2762
  1925
    
dvander@2762
  1926
/(?!\A)x/m
dvander@2762
  1927
    x\nb\n
dvander@2762
  1928
    a\bx\n  
dvander@2762
  1929
    
dvander@2762
  1930
/\x0{ab}/
dvander@2762
  1931
    \0{ab} 
dvander@2762
  1932
dvander@2762
  1933
/(A|B)*?CD/
dvander@2762
  1934
    CD 
dvander@2762
  1935
    
dvander@2762
  1936
/(A|B)*CD/
dvander@2762
  1937
    CD 
dvander@2762
  1938
dvander@2762
  1939
/(AB)*?\1/
dvander@2762
  1940
    ABABAB
dvander@2762
  1941
dvander@2762
  1942
/(AB)*\1/
dvander@2762
  1943
    ABABAB
dvander@2762
  1944
    
dvander@2762
  1945
/(?<!bar)foo/
dvander@2762
  1946
    foo
dvander@2762
  1947
    catfood
dvander@2762
  1948
    arfootle
dvander@2762
  1949
    rfoosh
dvander@2762
  1950
    *** Failers
dvander@2762
  1951
    barfoo
dvander@2762
  1952
    towbarfoo
dvander@2762
  1953
dvander@2762
  1954
/\w{3}(?<!bar)foo/
dvander@2762
  1955
    catfood
dvander@2762
  1956
    *** Failers
dvander@2762
  1957
    foo
dvander@2762
  1958
    barfoo
dvander@2762
  1959
    towbarfoo
dvander@2762
  1960
dvander@2762
  1961
/(?<=(foo)a)bar/
dvander@2762
  1962
    fooabar
dvander@2762
  1963
    *** Failers
dvander@2762
  1964
    bar
dvander@2762
  1965
    foobbar
dvander@2762
  1966
      
dvander@2762
  1967
/\Aabc\z/m
dvander@2762
  1968
    abc
dvander@2762
  1969
    *** Failers
dvander@2762
  1970
    abc\n   
dvander@2762
  1971
    qqq\nabc
dvander@2762
  1972
    abc\nzzz
dvander@2762
  1973
    qqq\nabc\nzzz
dvander@2762
  1974
dvander@2762
  1975
"(?>.*/)foo"
dvander@2762
  1976
    /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
dvander@2762
  1977
dvander@2762
  1978
"(?>.*/)foo"
dvander@2762
  1979
    /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
dvander@2762
  1980
dvander@2762
  1981
/(?>(\.\d\d[1-9]?))\d+/
dvander@2762
  1982
    1.230003938
dvander@2762
  1983
    1.875000282
dvander@2762
  1984
    *** Failers 
dvander@2762
  1985
    1.235 
dvander@2762
  1986
dvander@2762
  1987
/^((?>\w+)|(?>\s+))*$/
dvander@2762
  1988
    now is the time for all good men to come to the aid of the party
dvander@2762
  1989
    *** Failers
dvander@2762
  1990
    this is not a line with only words and spaces!
dvander@2762
  1991
    
dvander@2762
  1992
/(\d+)(\w)/
dvander@2762
  1993
    12345a
dvander@2762
  1994
    12345+ 
dvander@2762
  1995
dvander@2762
  1996
/((?>\d+))(\w)/
dvander@2762
  1997
    12345a
dvander@2762
  1998
    *** Failers
dvander@2762
  1999
    12345+ 
dvander@2762
  2000
dvander@2762
  2001
/(?>a+)b/
dvander@2762
  2002
    aaab
dvander@2762
  2003
dvander@2762
  2004
/((?>a+)b)/
dvander@2762
  2005
    aaab
dvander@2762
  2006
dvander@2762
  2007
/(?>(a+))b/
dvander@2762
  2008
    aaab
dvander@2762
  2009
dvander@2762
  2010
/(?>b)+/
dvander@2762
  2011
    aaabbbccc
dvander@2762
  2012
dvander@2762
  2013
/(?>a+|b+|c+)*c/
dvander@2762
  2014
    aaabbbbccccd
dvander@2762
  2015
dvander@2762
  2016
/((?>[^()]+)|\([^()]*\))+/
dvander@2762
  2017
    ((abc(ade)ufh()()x
dvander@2762
  2018
    
dvander@2762
  2019
/\(((?>[^()]+)|\([^()]+\))+\)/ 
dvander@2762
  2020
    (abc)
dvander@2762
  2021
    (abc(def)xyz)
dvander@2762
  2022
    *** Failers
dvander@2762
  2023
    ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
dvander@2762
  2024
dvander@2762
  2025
/a(?-i)b/i
dvander@2762
  2026
    ab
dvander@2762
  2027
    Ab
dvander@2762
  2028
    *** Failers 
dvander@2762
  2029
    aB
dvander@2762
  2030
    AB
dvander@2762
  2031
        
dvander@2762
  2032
/(a (?x)b c)d e/
dvander@2762
  2033
    a bcd e
dvander@2762
  2034
    *** Failers
dvander@2762
  2035
    a b cd e
dvander@2762
  2036
    abcd e   
dvander@2762
  2037
    a bcde 
dvander@2762
  2038
 
dvander@2762
  2039
/(a b(?x)c d (?-x)e f)/
dvander@2762
  2040
    a bcde f
dvander@2762
  2041
    *** Failers
dvander@2762
  2042
    abcdef  
dvander@2762
  2043
dvander@2762
  2044
/(a(?i)b)c/
dvander@2762
  2045
    abc
dvander@2762
  2046
    aBc
dvander@2762
  2047
    *** Failers
dvander@2762
  2048
    abC
dvander@2762
  2049
    aBC  
dvander@2762
  2050
    Abc
dvander@2762
  2051
    ABc
dvander@2762
  2052
    ABC
dvander@2762
  2053
    AbC
dvander@2762
  2054
    
dvander@2762
  2055
/a(?i:b)c/
dvander@2762
  2056
    abc
dvander@2762
  2057
    aBc
dvander@2762
  2058
    *** Failers 
dvander@2762
  2059
    ABC
dvander@2762
  2060
    abC
dvander@2762
  2061
    aBC
dvander@2762
  2062
    
dvander@2762
  2063
/a(?i:b)*c/
dvander@2762
  2064
    aBc
dvander@2762
  2065
    aBBc
dvander@2762
  2066
    *** Failers 
dvander@2762
  2067
    aBC
dvander@2762
  2068
    aBBC
dvander@2762
  2069
    
dvander@2762
  2070
/a(?=b(?i)c)\w\wd/
dvander@2762
  2071
    abcd
dvander@2762
  2072
    abCd
dvander@2762
  2073
    *** Failers
dvander@2762
  2074
    aBCd
dvander@2762
  2075
    abcD     
dvander@2762
  2076
    
dvander@2762
  2077
/(?s-i:more.*than).*million/i
dvander@2762
  2078
    more than million
dvander@2762
  2079
    more than MILLION
dvander@2762
  2080
    more \n than Million 
dvander@2762
  2081
    *** Failers
dvander@2762
  2082
    MORE THAN MILLION    
dvander@2762
  2083
    more \n than \n million 
dvander@2762
  2084
dvander@2762
  2085
/(?:(?s-i)more.*than).*million/i
dvander@2762
  2086
    more than million
dvander@2762
  2087
    more than MILLION
dvander@2762
  2088
    more \n than Million 
dvander@2762
  2089
    *** Failers
dvander@2762
  2090
    MORE THAN MILLION    
dvander@2762
  2091
    more \n than \n million 
dvander@2762
  2092
    
dvander@2762
  2093
/(?>a(?i)b+)+c/ 
dvander@2762
  2094
    abc
dvander@2762
  2095
    aBbc
dvander@2762
  2096
    aBBc 
dvander@2762
  2097
    *** Failers
dvander@2762
  2098
    Abc
dvander@2762
  2099
    abAb    
dvander@2762
  2100
    abbC 
dvander@2762
  2101
    
dvander@2762
  2102
/(?=a(?i)b)\w\wc/
dvander@2762
  2103
    abc
dvander@2762
  2104
    aBc
dvander@2762
  2105
    *** Failers
dvander@2762
  2106
    Ab 
dvander@2762
  2107
    abC
dvander@2762
  2108
    aBC     
dvander@2762
  2109
    
dvander@2762
  2110
/(?<=a(?i)b)(\w\w)c/
dvander@2762
  2111
    abxxc
dvander@2762
  2112
    aBxxc
dvander@2762
  2113
    *** Failers
dvander@2762
  2114
    Abxxc
dvander@2762
  2115
    ABxxc
dvander@2762
  2116
    abxxC      
dvander@2762
  2117
dvander@2762
  2118
/(?:(a)|b)(?(1)A|B)/
dvander@2762
  2119
    aA
dvander@2762
  2120
    bB
dvander@2762
  2121
    *** Failers
dvander@2762
  2122
    aB
dvander@2762
  2123
    bA    
dvander@2762
  2124
dvander@2762
  2125
/^(a)?(?(1)a|b)+$/
dvander@2762
  2126
    aa
dvander@2762
  2127
    b
dvander@2762
  2128
    bb  
dvander@2762
  2129
    *** Failers
dvander@2762
  2130
    ab   
dvander@2762
  2131
dvander@2762
  2132
/^(?(?=abc)\w{3}:|\d\d)$/
dvander@2762
  2133
    abc:
dvander@2762
  2134
    12
dvander@2762
  2135
    *** Failers
dvander@2762
  2136
    123
dvander@2762
  2137
    xyz    
dvander@2762
  2138
dvander@2762
  2139
/^(?(?!abc)\d\d|\w{3}:)$/
dvander@2762
  2140
    abc:
dvander@2762
  2141
    12
dvander@2762
  2142
    *** Failers
dvander@2762
  2143
    123
dvander@2762
  2144
    xyz    
dvander@2762
  2145
    
dvander@2762
  2146
/(?(?<=foo)bar|cat)/
dvander@2762
  2147
    foobar
dvander@2762
  2148
    cat
dvander@2762
  2149
    fcat
dvander@2762
  2150
    focat   
dvander@2762
  2151
    *** Failers
dvander@2762
  2152
    foocat  
dvander@2762
  2153
dvander@2762
  2154
/(?(?<!foo)cat|bar)/
dvander@2762
  2155
    foobar
dvander@2762
  2156
    cat
dvander@2762
  2157
    fcat
dvander@2762
  2158
    focat   
dvander@2762
  2159
    *** Failers
dvander@2762
  2160
    foocat  
dvander@2762
  2161
dvander@2762
  2162
/( \( )? [^()]+ (?(1) \) |) /x
dvander@2762
  2163
    abcd
dvander@2762
  2164
    (abcd)
dvander@2762
  2165
    the quick (abcd) fox
dvander@2762
  2166
    (abcd   
dvander@2762
  2167
dvander@2762
  2168
/( \( )? [^()]+ (?(1) \) ) /x
dvander@2762
  2169
    abcd
dvander@2762
  2170
    (abcd)
dvander@2762
  2171
    the quick (abcd) fox
dvander@2762
  2172
    (abcd   
dvander@2762
  2173
dvander@2762
  2174
/^(?(2)a|(1)(2))+$/
dvander@2762
  2175
    12
dvander@2762
  2176
    12a
dvander@2762
  2177
    12aa
dvander@2762
  2178
    *** Failers
dvander@2762
  2179
    1234    
dvander@2762
  2180
dvander@2762
  2181
/((?i)blah)\s+\1/
dvander@2762
  2182
    blah blah
dvander@2762
  2183
    BLAH BLAH
dvander@2762
  2184
    Blah Blah
dvander@2762
  2185
    blaH blaH
dvander@2762
  2186
    *** Failers
dvander@2762
  2187
    blah BLAH
dvander@2762
  2188
    Blah blah      
dvander@2762
  2189
    blaH blah 
dvander@2762
  2190
dvander@2762
  2191
/((?i)blah)\s+(?i:\1)/
dvander@2762
  2192
    blah blah
dvander@2762
  2193
    BLAH BLAH
dvander@2762
  2194
    Blah Blah
dvander@2762
  2195
    blaH blaH
dvander@2762
  2196
    blah BLAH
dvander@2762
  2197
    Blah blah      
dvander@2762
  2198
    blaH blah 
dvander@2762
  2199
dvander@2762
  2200
/(?>a*)*/
dvander@2762
  2201
    a
dvander@2762
  2202
    aa
dvander@2762
  2203
    aaaa
dvander@2762
  2204
    
dvander@2762
  2205
/(abc|)+/
dvander@2762
  2206
    abc
dvander@2762
  2207
    abcabc
dvander@2762
  2208
    abcabcabc
dvander@2762
  2209
    xyz      
dvander@2762
  2210
dvander@2762
  2211
/([a]*)*/
dvander@2762
  2212
    a
dvander@2762
  2213
    aaaaa 
dvander@2762
  2214
 
dvander@2762
  2215
/([ab]*)*/
dvander@2762
  2216
    a
dvander@2762
  2217
    b
dvander@2762
  2218
    ababab
dvander@2762
  2219
    aaaabcde
dvander@2762
  2220
    bbbb    
dvander@2762
  2221
 
dvander@2762
  2222
/([^a]*)*/
dvander@2762
  2223
    b
dvander@2762
  2224
    bbbb
dvander@2762
  2225
    aaa   
dvander@2762
  2226
 
dvander@2762
  2227
/([^ab]*)*/
dvander@2762
  2228
    cccc
dvander@2762
  2229
    abab  
dvander@2762
  2230
 
dvander@2762
  2231
/([a]*?)*/
dvander@2762
  2232
    a
dvander@2762
  2233
    aaaa 
dvander@2762
  2234
 
dvander@2762
  2235
/([ab]*?)*/
dvander@2762
  2236
    a
dvander@2762
  2237
    b
dvander@2762
  2238
    abab
dvander@2762
  2239
    baba   
dvander@2762
  2240
 
dvander@2762
  2241
/([^a]*?)*/
dvander@2762
  2242
    b
dvander@2762
  2243
    bbbb
dvander@2762
  2244
    aaa   
dvander@2762
  2245
 
dvander@2762
  2246
/([^ab]*?)*/
dvander@2762
  2247
    c
dvander@2762
  2248
    cccc
dvander@2762
  2249
    baba   
dvander@2762
  2250
 
dvander@2762
  2251
/(?>a*)*/
dvander@2762
  2252
    a
dvander@2762
  2253
    aaabcde 
dvander@2762
  2254
 
dvander@2762
  2255
/((?>a*))*/
dvander@2762
  2256
    aaaaa
dvander@2762
  2257
    aabbaa 
dvander@2762
  2258
 
dvander@2762
  2259
/((?>a*?))*/
dvander@2762
  2260
    aaaaa
dvander@2762
  2261
    aabbaa 
dvander@2762
  2262
dvander@2762
  2263
/(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
dvander@2762
  2264
    12-sep-98
dvander@2762
  2265
    12-09-98
dvander@2762
  2266
    *** Failers
dvander@2762
  2267
    sep-12-98
dvander@2762
  2268
        
dvander@2762
  2269
/(?<=(foo))bar\1/
dvander@2762
  2270
    foobarfoo
dvander@2762
  2271
    foobarfootling 
dvander@2762
  2272
    *** Failers
dvander@2762
  2273
    foobar
dvander@2762
  2274
    barfoo   
dvander@2762
  2275
dvander@2762
  2276
/(?i:saturday|sunday)/
dvander@2762
  2277
    saturday
dvander@2762
  2278
    sunday
dvander@2762
  2279
    Saturday
dvander@2762
  2280
    Sunday
dvander@2762
  2281
    SATURDAY
dvander@2762
  2282
    SUNDAY
dvander@2762
  2283
    SunDay
dvander@2762
  2284
    
dvander@2762
  2285
/(a(?i)bc|BB)x/
dvander@2762
  2286
    abcx
dvander@2762
  2287
    aBCx
dvander@2762
  2288
    bbx
dvander@2762
  2289
    BBx
dvander@2762
  2290
    *** Failers
dvander@2762
  2291
    abcX
dvander@2762
  2292
    aBCX
dvander@2762
  2293
    bbX
dvander@2762
  2294
    BBX               
dvander@2762
  2295
dvander@2762
  2296
/^([ab](?i)[cd]|[ef])/
dvander@2762
  2297
    ac
dvander@2762
  2298
    aC
dvander@2762
  2299
    bD
dvander@2762
  2300
    elephant
dvander@2762
  2301
    Europe 
dvander@2762
  2302
    frog
dvander@2762
  2303
    France
dvander@2762
  2304
    *** Failers
dvander@2762
  2305
    Africa     
dvander@2762
  2306
dvander@2762
  2307
/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
dvander@2762
  2308
    ab
dvander@2762
  2309
    aBd
dvander@2762
  2310
    xy
dvander@2762
  2311
    xY
dvander@2762
  2312
    zebra
dvander@2762
  2313
    Zambesi
dvander@2762
  2314
    *** Failers
dvander@2762
  2315
    aCD  
dvander@2762
  2316
    XY  
dvander@2762
  2317
dvander@2762
  2318
/(?<=foo\n)^bar/m
dvander@2762
  2319
    foo\nbar
dvander@2762
  2320
    *** Failers
dvander@2762
  2321
    bar
dvander@2762
  2322
    baz\nbar   
dvander@2762
  2323
dvander@2762
  2324
/(?<=(?<!foo)bar)baz/
dvander@2762
  2325
    barbaz
dvander@2762
  2326
    barbarbaz 
dvander@2762
  2327
    koobarbaz 
dvander@2762
  2328
    *** Failers
dvander@2762
  2329
    baz
dvander@2762
  2330
    foobarbaz 
dvander@2762
  2331
dvander@2762
  2332
/The case of aaaaaa is missed out below because I think Perl 5.005_02 gets/
dvander@2762
  2333
/it wrong; it sets $1 to aaa rather than aa. Compare the following test,/
dvander@2762
  2334
/where it does set $1 to aa when matching aaaaaa./
dvander@2762
  2335
dvander@2762
  2336
/^(a\1?){4}$/
dvander@2762
  2337
    a
dvander@2762
  2338
    aa
dvander@2762
  2339
    aaa
dvander@2762
  2340
    aaaa
dvander@2762
  2341
    aaaaa
dvander@2762
  2342
    aaaaaaa
dvander@2762
  2343
    aaaaaaaa
dvander@2762
  2344
    aaaaaaaaa
dvander@2762
  2345
    aaaaaaaaaa
dvander@2762
  2346
    aaaaaaaaaaa
dvander@2762
  2347
    aaaaaaaaaaaa
dvander@2762
  2348
    aaaaaaaaaaaaa
dvander@2762
  2349
    aaaaaaaaaaaaaa
dvander@2762
  2350
    aaaaaaaaaaaaaaa
dvander@2762
  2351
    aaaaaaaaaaaaaaaa               
dvander@2762
  2352
dvander@2762
  2353
/^(a\1?)(a\1?)(a\2?)(a\3?)$/
dvander@2762
  2354
    a
dvander@2762
  2355
    aa
dvander@2762
  2356
    aaa
dvander@2762
  2357
    aaaa
dvander@2762
  2358
    aaaaa
dvander@2762
  2359
    aaaaaa
dvander@2762
  2360
    aaaaaaa
dvander@2762
  2361
    aaaaaaaa
dvander@2762
  2362
    aaaaaaaaa
dvander@2762
  2363
    aaaaaaaaaa
dvander@2762
  2364
    aaaaaaaaaaa
dvander@2762
  2365
    aaaaaaaaaaaa
dvander@2762
  2366
    aaaaaaaaaaaaa
dvander@2762
  2367
    aaaaaaaaaaaaaa
dvander@2762
  2368
    aaaaaaaaaaaaaaa
dvander@2762
  2369
    aaaaaaaaaaaaaaaa               
dvander@2762
  2370
dvander@2762
  2371
/The following tests are taken from the Perl 5.005 test suite; some of them/
dvander@2762
  2372
/are compatible with 5.004, but I'd rather not have to sort them out./
dvander@2762
  2373
dvander@2762
  2374
/abc/
dvander@2762
  2375
    abc
dvander@2762
  2376
    xabcy
dvander@2762
  2377
    ababc
dvander@2762
  2378
    *** Failers
dvander@2762
  2379
    xbc
dvander@2762
  2380
    axc
dvander@2762
  2381
    abx
dvander@2762
  2382
dvander@2762
  2383
/ab*c/
dvander@2762
  2384
    abc
dvander@2762
  2385
dvander@2762
  2386
/ab*bc/
dvander@2762
  2387
    abc
dvander@2762
  2388
    abbc
dvander@2762
  2389
    abbbbc
dvander@2762
  2390
dvander@2762
  2391
/.{1}/
dvander@2762
  2392
    abbbbc
dvander@2762
  2393
dvander@2762
  2394
/.{3,4}/
dvander@2762
  2395
    abbbbc
dvander@2762
  2396
dvander@2762
  2397
/ab{0,}bc/
dvander@2762
  2398
    abbbbc
dvander@2762
  2399
dvander@2762
  2400
/ab+bc/
dvander@2762
  2401
    abbc
dvander@2762
  2402
    *** Failers
dvander@2762
  2403
    abc
dvander@2762
  2404
    abq
dvander@2762
  2405
dvander@2762
  2406
/ab{1,}bc/
dvander@2762
  2407
dvander@2762
  2408
/ab+bc/
dvander@2762
  2409
    abbbbc
dvander@2762
  2410
dvander@2762
  2411
/ab{1,}bc/
dvander@2762
  2412
    abbbbc
dvander@2762
  2413
dvander@2762
  2414
/ab{1,3}bc/
dvander@2762
  2415
    abbbbc
dvander@2762
  2416
dvander@2762
  2417
/ab{3,4}bc/
dvander@2762
  2418
    abbbbc
dvander@2762
  2419
dvander@2762
  2420
/ab{4,5}bc/
dvander@2762
  2421
    *** Failers
dvander@2762
  2422
    abq
dvander@2762
  2423
    abbbbc
dvander@2762
  2424
dvander@2762
  2425
/ab?bc/
dvander@2762
  2426
    abbc
dvander@2762
  2427
    abc
dvander@2762
  2428
dvander@2762
  2429
/ab{0,1}bc/
dvander@2762
  2430
    abc
dvander@2762
  2431
dvander@2762
  2432
/ab?bc/
dvander@2762
  2433
dvander@2762
  2434
/ab?c/
dvander@2762
  2435
    abc
dvander@2762
  2436
dvander@2762
  2437
/ab{0,1}c/
dvander@2762
  2438
    abc
dvander@2762
  2439
dvander@2762
  2440
/^abc$/
dvander@2762
  2441
    abc
dvander@2762
  2442
    *** Failers
dvander@2762
  2443
    abbbbc
dvander@2762
  2444
    abcc
dvander@2762
  2445
dvander@2762
  2446
/^abc/
dvander@2762
  2447
    abcc
dvander@2762
  2448
dvander@2762
  2449
/^abc$/
dvander@2762
  2450
dvander@2762
  2451
/abc$/
dvander@2762
  2452
    aabc
dvander@2762
  2453
    *** Failers
dvander@2762
  2454
    aabc
dvander@2762
  2455
    aabcd
dvander@2762
  2456
dvander@2762
  2457
/^/
dvander@2762
  2458
    abc
dvander@2762
  2459
dvander@2762
  2460
/$/
dvander@2762
  2461
    abc
dvander@2762
  2462
dvander@2762
  2463
/a.c/
dvander@2762
  2464
    abc
dvander@2762
  2465
    axc
dvander@2762
  2466
dvander@2762
  2467
/a.*c/
dvander@2762
  2468
    axyzc
dvander@2762
  2469
dvander@2762
  2470
/a[bc]d/
dvander@2762
  2471
    abd
dvander@2762
  2472
    *** Failers
dvander@2762
  2473
    axyzd
dvander@2762
  2474
    abc
dvander@2762
  2475
dvander@2762
  2476
/a[b-d]e/
dvander@2762
  2477
    ace
dvander@2762
  2478
dvander@2762
  2479
/a[b-d]/
dvander@2762
  2480
    aac
dvander@2762
  2481
dvander@2762
  2482
/a[-b]/
dvander@2762
  2483
    a-
dvander@2762
  2484
dvander@2762
  2485
/a[b-]/
dvander@2762
  2486
    a-
dvander@2762
  2487
dvander@2762
  2488
/a]/
dvander@2762
  2489
    a]
dvander@2762
  2490
dvander@2762
  2491
/a[]]b/
dvander@2762
  2492
    a]b
dvander@2762
  2493
dvander@2762
  2494
/a[^bc]d/
dvander@2762
  2495
    aed
dvander@2762
  2496
    *** Failers
dvander@2762
  2497
    abd
dvander@2762
  2498
    abd
dvander@2762
  2499
dvander@2762
  2500
/a[^-b]c/
dvander@2762
  2501
    adc
dvander@2762
  2502
dvander@2762
  2503
/a[^]b]c/
dvander@2762
  2504
    adc
dvander@2762
  2505
    *** Failers
dvander@2762
  2506
    a-c
dvander@2762
  2507
    a]c
dvander@2762
  2508
dvander@2762
  2509
/\ba\b/
dvander@2762
  2510
    a-
dvander@2762
  2511
    -a
dvander@2762
  2512
    -a-
dvander@2762
  2513
dvander@2762
  2514
/\by\b/
dvander@2762
  2515
    *** Failers
dvander@2762
  2516
    xy
dvander@2762
  2517
    yz
dvander@2762
  2518
    xyz
dvander@2762
  2519
dvander@2762
  2520
/\Ba\B/
dvander@2762
  2521
    *** Failers
dvander@2762
  2522
    a-
dvander@2762
  2523
    -a
dvander@2762
  2524
    -a-
dvander@2762
  2525
dvander@2762
  2526
/\By\b/
dvander@2762
  2527
    xy
dvander@2762
  2528
dvander@2762
  2529
/\by\B/
dvander@2762
  2530
    yz
dvander@2762
  2531
dvander@2762
  2532
/\By\B/
dvander@2762
  2533
    xyz
dvander@2762
  2534
dvander@2762
  2535
/\w/
dvander@2762
  2536
    a
dvander@2762
  2537
dvander@2762
  2538
/\W/
dvander@2762
  2539
    -
dvander@2762
  2540
    *** Failers
dvander@2762
  2541
    -
dvander@2762
  2542
    a
dvander@2762
  2543
dvander@2762
  2544
/a\sb/
dvander@2762
  2545
    a b
dvander@2762
  2546
dvander@2762
  2547
/a\Sb/
dvander@2762
  2548
    a-b
dvander@2762
  2549
    *** Failers
dvander@2762
  2550
    a-b
dvander@2762
  2551
    a b
dvander@2762
  2552
dvander@2762
  2553
/\d/
dvander@2762
  2554
    1
dvander@2762
  2555
dvander@2762
  2556
/\D/
dvander@2762
  2557
    -
dvander@2762
  2558
    *** Failers
dvander@2762
  2559
    -
dvander@2762
  2560
    1
dvander@2762
  2561
dvander@2762
  2562
/[\w]/
dvander@2762
  2563
    a
dvander@2762
  2564
dvander@2762
  2565
/[\W]/
dvander@2762
  2566
    -
dvander@2762
  2567
    *** Failers
dvander@2762
  2568
    -
dvander@2762
  2569
    a
dvander@2762
  2570
dvander@2762
  2571
/a[\s]b/
dvander@2762
  2572
    a b
dvander@2762
  2573
dvander@2762
  2574
/a[\S]b/
dvander@2762
  2575
    a-b
dvander@2762
  2576
    *** Failers
dvander@2762
  2577
    a-b
dvander@2762
  2578
    a b
dvander@2762
  2579
dvander@2762
  2580
/[\d]/
dvander@2762
  2581
    1
dvander@2762
  2582
dvander@2762
  2583
/[\D]/
dvander@2762
  2584
    -
dvander@2762
  2585
    *** Failers
dvander@2762
  2586
    -
dvander@2762
  2587
    1
dvander@2762
  2588
dvander@2762
  2589
/ab|cd/
dvander@2762
  2590
    abc
dvander@2762
  2591
    abcd
dvander@2762
  2592
dvander@2762
  2593
/()ef/
dvander@2762
  2594
    def
dvander@2762
  2595
dvander@2762
  2596
/$b/
dvander@2762
  2597
dvander@2762
  2598
/a\(b/
dvander@2762
  2599
    a(b
dvander@2762
  2600
dvander@2762
  2601
/a\(*b/
dvander@2762
  2602
    ab
dvander@2762
  2603
    a((b
dvander@2762
  2604
dvander@2762
  2605
/a\\b/
dvander@2762
  2606
    a\b
dvander@2762
  2607
dvander@2762
  2608
/((a))/
dvander@2762
  2609
    abc
dvander@2762
  2610
dvander@2762
  2611
/(a)b(c)/
dvander@2762
  2612
    abc
dvander@2762
  2613
dvander@2762
  2614
/a+b+c/
dvander@2762
  2615
    aabbabc
dvander@2762
  2616
dvander@2762
  2617
/a{1,}b{1,}c/
dvander@2762
  2618
    aabbabc
dvander@2762
  2619
dvander@2762
  2620
/a.+?c/
dvander@2762
  2621
    abcabc
dvander@2762
  2622
dvander@2762
  2623
/(a+|b)*/
dvander@2762
  2624
    ab
dvander@2762
  2625
dvander@2762
  2626
/(a+|b){0,}/
dvander@2762
  2627
    ab
dvander@2762
  2628
dvander@2762
  2629
/(a+|b)+/
dvander@2762
  2630
    ab
dvander@2762
  2631
dvander@2762
  2632
/(a+|b){1,}/
dvander@2762
  2633
    ab
dvander@2762
  2634
dvander@2762
  2635
/(a+|b)?/
dvander@2762
  2636
    ab
dvander@2762
  2637
dvander@2762
  2638
/(a+|b){0,1}/
dvander@2762
  2639
    ab
dvander@2762
  2640
dvander@2762
  2641
/[^ab]*/
dvander@2762
  2642
    cde
dvander@2762
  2643
dvander@2762
  2644
/abc/
dvander@2762
  2645
    *** Failers
dvander@2762
  2646
    b
dvander@2762
  2647
    
dvander@2762
  2648
dvander@2762
  2649
/a*/
dvander@2762
  2650
    
dvander@2762
  2651
dvander@2762
  2652
/([abc])*d/
dvander@2762
  2653
    abbbcd
dvander@2762
  2654
dvander@2762
  2655
/([abc])*bcd/
dvander@2762
  2656
    abcd
dvander@2762
  2657
dvander@2762
  2658
/a|b|c|d|e/
dvander@2762
  2659
    e
dvander@2762
  2660
dvander@2762
  2661
/(a|b|c|d|e)f/
dvander@2762
  2662
    ef
dvander@2762
  2663
dvander@2762
  2664
/abcd*efg/
dvander@2762
  2665
    abcdefg
dvander@2762
  2666
dvander@2762
  2667
/ab*/
dvander@2762
  2668
    xabyabbbz
dvander@2762
  2669
    xayabbbz
dvander@2762
  2670
dvander@2762
  2671
/(ab|cd)e/
dvander@2762
  2672
    abcde
dvander@2762
  2673
dvander@2762
  2674
/[abhgefdc]ij/
dvander@2762
  2675
    hij
dvander@2762
  2676
dvander@2762
  2677
/^(ab|cd)e/
dvander@2762
  2678
dvander@2762
  2679
/(abc|)ef/
dvander@2762
  2680
    abcdef
dvander@2762
  2681
dvander@2762
  2682
/(a|b)c*d/
dvander@2762
  2683
    abcd
dvander@2762
  2684
dvander@2762
  2685
/(ab|ab*)bc/
dvander@2762
  2686
    abc
dvander@2762
  2687
dvander@2762
  2688
/a([bc]*)c*/
dvander@2762
  2689
    abc
dvander@2762
  2690
dvander@2762
  2691
/a([bc]*)(c*d)/
dvander@2762
  2692
    abcd
dvander@2762
  2693
dvander@2762
  2694
/a([bc]+)(c*d)/
dvander@2762
  2695
    abcd
dvander@2762
  2696
dvander@2762
  2697
/a([bc]*)(c+d)/
dvander@2762
  2698
    abcd
dvander@2762
  2699
dvander@2762
  2700
/a[bcd]*dcdcde/
dvander@2762
  2701
    adcdcde
dvander@2762
  2702
dvander@2762
  2703
/a[bcd]+dcdcde/
dvander@2762
  2704
    *** Failers
dvander@2762
  2705
    abcde
dvander@2762
  2706
    adcdcde
dvander@2762
  2707
dvander@2762
  2708
/(ab|a)b*c/
dvander@2762
  2709
    abc
dvander@2762
  2710
dvander@2762
  2711
/((a)(b)c)(d)/
dvander@2762
  2712
    abcd
dvander@2762
  2713
dvander@2762
  2714
/[a-zA-Z_][a-zA-Z0-9_]*/
dvander@2762
  2715
    alpha
dvander@2762
  2716
dvander@2762
  2717
/^a(bc+|b[eh])g|.h$/
dvander@2762
  2718
    abh
dvander@2762
  2719
dvander@2762
  2720
/(bc+d$|ef*g.|h?i(j|k))/
dvander@2762
  2721
    effgz
dvander@2762
  2722
    ij
dvander@2762
  2723
    reffgz
dvander@2762
  2724
    *** Failers
dvander@2762
  2725
    effg
dvander@2762
  2726
    bcdd
dvander@2762
  2727
dvander@2762
  2728
/((((((((((a))))))))))/
dvander@2762
  2729
    a
dvander@2762
  2730
dvander@2762
  2731
/((((((((((a))))))))))\10/
dvander@2762
  2732
    aa
dvander@2762
  2733
dvander@2762
  2734
/(((((((((a)))))))))/
dvander@2762
  2735
    a
dvander@2762
  2736
dvander@2762
  2737
/multiple words of text/
dvander@2762
  2738
    *** Failers
dvander@2762
  2739
    aa
dvander@2762
  2740
    uh-uh
dvander@2762
  2741
dvander@2762
  2742
/multiple words/
dvander@2762
  2743
    multiple words, yeah
dvander@2762
  2744
dvander@2762
  2745
/(.*)c(.*)/
dvander@2762
  2746
    abcde
dvander@2762
  2747
dvander@2762
  2748
/\((.*), (.*)\)/
dvander@2762
  2749
    (a, b)
dvander@2762
  2750
dvander@2762
  2751
/[k]/
dvander@2762
  2752
dvander@2762
  2753
/abcd/
dvander@2762
  2754
    abcd
dvander@2762
  2755
dvander@2762
  2756
/a(bc)d/
dvander@2762
  2757
    abcd
dvander@2762
  2758
dvander@2762
  2759
/a[-]?c/
dvander@2762
  2760
    ac
dvander@2762
  2761
dvander@2762
  2762
/(abc)\1/
dvander@2762
  2763
    abcabc
dvander@2762
  2764
dvander@2762
  2765
/([a-c]*)\1/
dvander@2762
  2766
    abcabc
dvander@2762
  2767
dvander@2762
  2768
/(a)|\1/
dvander@2762
  2769
    a
dvander@2762
  2770
    *** Failers
dvander@2762
  2771
    ab
dvander@2762
  2772
    x
dvander@2762
  2773
dvander@2762
  2774
/(([a-c])b*?\2)*/
dvander@2762
  2775
    ababbbcbc
dvander@2762
  2776
dvander@2762
  2777
/(([a-c])b*?\2){3}/
dvander@2762
  2778
    ababbbcbc
dvander@2762
  2779
dvander@2762
  2780
/((\3|b)\2(a)x)+/
dvander@2762
  2781
    aaaxabaxbaaxbbax
dvander@2762
  2782
dvander@2762
  2783
/((\3|b)\2(a)){2,}/
dvander@2762
  2784
    bbaababbabaaaaabbaaaabba
dvander@2762
  2785
dvander@2762
  2786
/abc/i
dvander@2762
  2787
    ABC
dvander@2762
  2788
    XABCY
dvander@2762
  2789
    ABABC
dvander@2762
  2790
    *** Failers
dvander@2762
  2791
    aaxabxbaxbbx
dvander@2762
  2792
    XBC
dvander@2762
  2793
    AXC
dvander@2762
  2794
    ABX
dvander@2762
  2795
dvander@2762
  2796
/ab*c/i
dvander@2762
  2797
    ABC
dvander@2762
  2798
dvander@2762
  2799
/ab*bc/i
dvander@2762
  2800
    ABC
dvander@2762
  2801
    ABBC
dvander@2762
  2802
dvander@2762
  2803
/ab*?bc/i
dvander@2762
  2804
    ABBBBC
dvander@2762
  2805
dvander@2762
  2806
/ab{0,}?bc/i
dvander@2762
  2807
    ABBBBC
dvander@2762
  2808
dvander@2762
  2809
/ab+?bc/i
dvander@2762
  2810
    ABBC
dvander@2762
  2811
dvander@2762
  2812
/ab+bc/i
dvander@2762
  2813
    *** Failers
dvander@2762
  2814
    ABC
dvander@2762
  2815
    ABQ
dvander@2762
  2816
dvander@2762
  2817
/ab{1,}bc/i
dvander@2762
  2818
dvander@2762
  2819
/ab+bc/i
dvander@2762
  2820
    ABBBBC
dvander@2762
  2821
dvander@2762
  2822
/ab{1,}?bc/i
dvander@2762
  2823
    ABBBBC
dvander@2762
  2824
dvander@2762
  2825
/ab{1,3}?bc/i
dvander@2762
  2826
    ABBBBC
dvander@2762
  2827
dvander@2762
  2828
/ab{3,4}?bc/i
dvander@2762
  2829
    ABBBBC
dvander@2762
  2830
dvander@2762
  2831
/ab{4,5}?bc/i
dvander@2762
  2832
    *** Failers
dvander@2762
  2833
    ABQ
dvander@2762
  2834
    ABBBBC
dvander@2762
  2835
dvander@2762
  2836
/ab??bc/i
dvander@2762
  2837
    ABBC
dvander@2762
  2838
    ABC
dvander@2762
  2839
dvander@2762
  2840
/ab{0,1}?bc/i
dvander@2762
  2841
    ABC
dvander@2762
  2842
dvander@2762
  2843
/ab??bc/i
dvander@2762
  2844
dvander@2762
  2845
/ab??c/i
dvander@2762
  2846
    ABC
dvander@2762
  2847
dvander@2762
  2848
/ab{0,1}?c/i
dvander@2762
  2849
    ABC
dvander@2762
  2850
dvander@2762
  2851
/^abc$/i
dvander@2762
  2852
    ABC
dvander@2762
  2853
    *** Failers
dvander@2762
  2854
    ABBBBC
dvander@2762
  2855
    ABCC
dvander@2762
  2856
dvander@2762
  2857
/^abc/i
dvander@2762
  2858
    ABCC
dvander@2762
  2859
dvander@2762
  2860
/^abc$/i
dvander@2762
  2861
dvander@2762
  2862
/abc$/i
dvander@2762
  2863
    AABC
dvander@2762
  2864
dvander@2762
  2865
/^/i
dvander@2762
  2866
    ABC
dvander@2762
  2867
dvander@2762
  2868
/$/i
dvander@2762
  2869
    ABC
dvander@2762
  2870
dvander@2762
  2871
/a.c/i
dvander@2762
  2872
    ABC
dvander@2762
  2873
    AXC
dvander@2762
  2874
dvander@2762
  2875
/a.*?c/i
dvander@2762
  2876
    AXYZC
dvander@2762
  2877
dvander@2762
  2878
/a.*c/i
dvander@2762
  2879
    *** Failers
dvander@2762
  2880
    AABC
dvander@2762
  2881
    AXYZD
dvander@2762
  2882
dvander@2762
  2883
/a[bc]d/i
dvander@2762
  2884
    ABD
dvander@2762
  2885
dvander@2762
  2886
/a[b-d]e/i
dvander@2762
  2887
    ACE
dvander@2762
  2888
    *** Failers
dvander@2762
  2889
    ABC
dvander@2762
  2890
    ABD
dvander@2762
  2891
dvander@2762
  2892
/a[b-d]/i
dvander@2762
  2893
    AAC
dvander@2762
  2894
dvander@2762
  2895
/a[-b]/i
dvander@2762
  2896
    A-
dvander@2762
  2897
dvander@2762
  2898
/a[b-]/i
dvander@2762
  2899
    A-
dvander@2762
  2900
dvander@2762
  2901
/a]/i
dvander@2762
  2902
    A]
dvander@2762
  2903
dvander@2762
  2904
/a[]]b/i
dvander@2762
  2905
    A]B
dvander@2762
  2906
dvander@2762
  2907
/a[^bc]d/i
dvander@2762
  2908
    AED
dvander@2762
  2909
dvander@2762
  2910
/a[^-b]c/i
dvander@2762
  2911
    ADC
dvander@2762
  2912
    *** Failers
dvander@2762
  2913
    ABD
dvander@2762
  2914
    A-C
dvander@2762
  2915
dvander@2762
  2916
/a[^]b]c/i
dvander@2762
  2917
    ADC
dvander@2762
  2918
dvander@2762
  2919
/ab|cd/i
dvander@2762
  2920
    ABC
dvander@2762
  2921
    ABCD
dvander@2762
  2922
dvander@2762
  2923
/()ef/i
dvander@2762
  2924
    DEF
dvander@2762
  2925
dvander@2762
  2926
/$b/i
dvander@2762
  2927
    *** Failers
dvander@2762
  2928
    A]C
dvander@2762
  2929
    B
dvander@2762
  2930
dvander@2762
  2931
/a\(b/i
dvander@2762
  2932
    A(B
dvander@2762
  2933
dvander@2762
  2934
/a\(*b/i
dvander@2762
  2935
    AB
dvander@2762
  2936
    A((B
dvander@2762
  2937
dvander@2762
  2938
/a\\b/i
dvander@2762
  2939
    A\B
dvander@2762
  2940
dvander@2762
  2941
/((a))/i
dvander@2762
  2942
    ABC
dvander@2762
  2943
dvander@2762
  2944
/(a)b(c)/i
dvander@2762
  2945
    ABC
dvander@2762
  2946
dvander@2762
  2947
/a+b+c/i
dvander@2762
  2948
    AABBABC
dvander@2762
  2949
dvander@2762
  2950
/a{1,}b{1,}c/i
dvander@2762
  2951
    AABBABC
dvander@2762
  2952
dvander@2762
  2953
/a.+?c/i
dvander@2762
  2954
    ABCABC
dvander@2762
  2955
dvander@2762
  2956
/a.*?c/i
dvander@2762
  2957
    ABCABC
dvander@2762
  2958
dvander@2762
  2959
/a.{0,5}?c/i
dvander@2762
  2960
    ABCABC
dvander@2762
  2961
dvander@2762
  2962
/(a+|b)*/i
dvander@2762
  2963
    AB
dvander@2762
  2964
dvander@2762
  2965
/(a+|b){0,}/i
dvander@2762
  2966
    AB
dvander@2762
  2967
dvander@2762
  2968
/(a+|b)+/i
dvander@2762
  2969
    AB
dvander@2762
  2970
dvander@2762
  2971
/(a+|b){1,}/i
dvander@2762
  2972
    AB
dvander@2762
  2973
dvander@2762
  2974
/(a+|b)?/i
dvander@2762
  2975
    AB
dvander@2762
  2976
dvander@2762
  2977
/(a+|b){0,1}/i
dvander@2762
  2978
    AB
dvander@2762
  2979
dvander@2762
  2980
/(a+|b){0,1}?/i
dvander@2762
  2981
    AB
dvander@2762
  2982
dvander@2762
  2983
/[^ab]*/i
dvander@2762
  2984
    CDE
dvander@2762
  2985
dvander@2762
  2986
/abc/i
dvander@2762
  2987
dvander@2762
  2988
/a*/i
dvander@2762
  2989
    
dvander@2762
  2990
dvander@2762
  2991
/([abc])*d/i
dvander@2762
  2992
    ABBBCD
dvander@2762
  2993
dvander@2762
  2994
/([abc])*bcd/i
dvander@2762
  2995
    ABCD
dvander@2762
  2996
dvander@2762
  2997
/a|b|c|d|e/i
dvander@2762
  2998
    E
dvander@2762
  2999
dvander@2762
  3000
/(a|b|c|d|e)f/i
dvander@2762
  3001
    EF
dvander@2762
  3002
dvander@2762
  3003
/abcd*efg/i
dvander@2762
  3004
    ABCDEFG
dvander@2762
  3005
dvander@2762
  3006
/ab*/i
dvander@2762
  3007
    XABYABBBZ
dvander@2762
  3008
    XAYABBBZ
dvander@2762
  3009
dvander@2762
  3010
/(ab|cd)e/i
dvander@2762
  3011
    ABCDE
dvander@2762
  3012
dvander@2762
  3013
/[abhgefdc]ij/i
dvander@2762
  3014
    HIJ
dvander@2762
  3015
dvander@2762
  3016
/^(ab|cd)e/i
dvander@2762
  3017
    ABCDE
dvander@2762
  3018
dvander@2762
  3019
/(abc|)ef/i
dvander@2762
  3020
    ABCDEF
dvander@2762
  3021
dvander@2762
  3022
/(a|b)c*d/i
dvander@2762
  3023
    ABCD
dvander@2762
  3024
dvander@2762
  3025
/(ab|ab*)bc/i
dvander@2762
  3026
    ABC
dvander@2762
  3027
dvander@2762
  3028
/a([bc]*)c*/i
dvander@2762
  3029
    ABC
dvander@2762
  3030
dvander@2762
  3031
/a([bc]*)(c*d)/i
dvander@2762
  3032
    ABCD
dvander@2762
  3033
dvander@2762
  3034
/a([bc]+)(c*d)/i
dvander@2762
  3035
    ABCD
dvander@2762
  3036
dvander@2762
  3037
/a([bc]*)(c+d)/i
dvander@2762
  3038
    ABCD
dvander@2762
  3039
dvander@2762
  3040
/a[bcd]*dcdcde/i
dvander@2762
  3041
    ADCDCDE
dvander@2762
  3042
dvander@2762
  3043
/a[bcd]+dcdcde/i
dvander@2762
  3044
dvander@2762
  3045
/(ab|a)b*c/i
dvander@2762
  3046
    ABC
dvander@2762
  3047
dvander@2762
  3048
/((a)(b)c)(d)/i
dvander@2762
  3049
    ABCD
dvander@2762
  3050
dvander@2762
  3051
/[a-zA-Z_][a-zA-Z0-9_]*/i
dvander@2762
  3052
    ALPHA
dvander@2762
  3053
dvander@2762
  3054
/^a(bc+|b[eh])g|.h$/i
dvander@2762
  3055
    ABH
dvander@2762
  3056
dvander@2762
  3057
/(bc+d$|ef*g.|h?i(j|k))/i
dvander@2762
  3058
    EFFGZ
dvander@2762
  3059
    IJ
dvander@2762
  3060
    REFFGZ
dvander@2762
  3061
    *** Failers
dvander@2762
  3062
    ADCDCDE
dvander@2762
  3063
    EFFG
dvander@2762
  3064
    BCDD
dvander@2762
  3065
dvander@2762
  3066
/((((((((((a))))))))))/i
dvander@2762
  3067
    A
dvander@2762
  3068
dvander@2762
  3069
/((((((((((a))))))))))\10/i
dvander@2762
  3070
    AA
dvander@2762
  3071
dvander@2762
  3072
/(((((((((a)))))))))/i
dvander@2762
  3073
    A
dvander@2762
  3074
dvander@2762
  3075
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
dvander@2762
  3076
    A
dvander@2762
  3077
dvander@2762
  3078
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
dvander@2762
  3079
    C
dvander@2762
  3080
dvander@2762
  3081
/multiple words of text/i
dvander@2762
  3082
    *** Failers
dvander@2762
  3083
    AA
dvander@2762
  3084
    UH-UH
dvander@2762
  3085
dvander@2762
  3086
/multiple words/i
dvander@2762
  3087
    MULTIPLE WORDS, YEAH
dvander@2762
  3088
dvander@2762
  3089
/(.*)c(.*)/i
dvander@2762
  3090
    ABCDE
dvander@2762
  3091
dvander@2762
  3092
/\((.*), (.*)\)/i
dvander@2762
  3093
    (A, B)
dvander@2762
  3094
dvander@2762
  3095
/[k]/i
dvander@2762
  3096
dvander@2762
  3097
/abcd/i
dvander@2762
  3098
    ABCD
dvander@2762
  3099
dvander@2762
  3100
/a(bc)d/i
dvander@2762
  3101
    ABCD
dvander@2762
  3102
dvander@2762
  3103
/a[-]?c/i
dvander@2762
  3104
    AC
dvander@2762
  3105
dvander@2762
  3106
/(abc)\1/i
dvander@2762
  3107
    ABCABC
dvander@2762
  3108
dvander@2762
  3109
/([a-c]*)\1/i
dvander@2762
  3110
    ABCABC
dvander@2762
  3111
dvander@2762
  3112
/a(?!b)./
dvander@2762
  3113
    abad
dvander@2762
  3114
dvander@2762
  3115
/a(?=d)./
dvander@2762
  3116
    abad
dvander@2762
  3117
dvander@2762
  3118
/a(?=c|d)./
dvander@2762
  3119
    abad
dvander@2762
  3120
dvander@2762
  3121
/a(?:b|c|d)(.)/
dvander@2762
  3122
    ace
dvander@2762
  3123
dvander@2762
  3124
/a(?:b|c|d)*(.)/
dvander@2762
  3125
    ace
dvander@2762
  3126
dvander@2762
  3127
/a(?:b|c|d)+?(.)/
dvander@2762
  3128
    ace
dvander@2762
  3129
    acdbcdbe
dvander@2762
  3130
dvander@2762
  3131
/a(?:b|c|d)+(.)/
dvander@2762
  3132
    acdbcdbe
dvander@2762
  3133
dvander@2762
  3134
/a(?:b|c|d){2}(.)/
dvander@2762
  3135
    acdbcdbe
dvander@2762
  3136
dvander@2762
  3137
/a(?:b|c|d){4,5}(.)/
dvander@2762
  3138
    acdbcdbe
dvander@2762
  3139
dvander@2762
  3140
/a(?:b|c|d){4,5}?(.)/
dvander@2762
  3141
    acdbcdbe
dvander@2762
  3142
dvander@2762
  3143
/((foo)|(bar))*/
dvander@2762
  3144
    foobar
dvander@2762
  3145
dvander@2762
  3146
/a(?:b|c|d){6,7}(.)/
dvander@2762
  3147
    acdbcdbe
dvander@2762
  3148
dvander@2762
  3149
/a(?:b|c|d){6,7}?(.)/
dvander@2762
  3150
    acdbcdbe
dvander@2762
  3151
dvander@2762
  3152
/a(?:b|c|d){5,6}(.)/
dvander@2762
  3153
    acdbcdbe
dvander@2762
  3154
dvander@2762
  3155
/a(?:b|c|d){5,6}?(.)/
dvander@2762
  3156
    acdbcdbe
dvander@2762
  3157
dvander@2762
  3158
/a(?:b|c|d){5,7}(.)/
dvander@2762
  3159
    acdbcdbe
dvander@2762
  3160
dvander@2762
  3161
/a(?:b|c|d){5,7}?(.)/
dvander@2762
  3162
    acdbcdbe
dvander@2762
  3163
dvander@2762
  3164
/a(?:b|(c|e){1,2}?|d)+?(.)/
dvander@2762
  3165
    ace
dvander@2762
  3166
dvander@2762
  3167
/^(.+)?B/
dvander@2762
  3168
    AB
dvander@2762
  3169
dvander@2762
  3170
/^([^a-z])|(\^)$/
dvander@2762
  3171
    .
dvander@2762
  3172
dvander@2762
  3173
/^[<>]&/
dvander@2762
  3174
    <&OUT
dvander@2762
  3175
dvander@2762
  3176
/^(a\1?){4}$/
dvander@2762
  3177
    aaaaaaaaaa
dvander@2762
  3178
    *** Failers
dvander@2762
  3179
    AB
dvander@2762
  3180
    aaaaaaaaa
dvander@2762
  3181
    aaaaaaaaaaa
dvander@2762
  3182
dvander@2762
  3183
/^(a(?(1)\1)){4}$/
dvander@2762
  3184
    aaaaaaaaaa
dvander@2762
  3185
    *** Failers
dvander@2762
  3186
    aaaaaaaaa
dvander@2762
  3187
    aaaaaaaaaaa
dvander@2762
  3188
dvander@2762
  3189
/(?:(f)(o)(o)|(b)(a)(r))*/
dvander@2762
  3190
    foobar
dvander@2762
  3191
dvander@2762
  3192
/(?<=a)b/
dvander@2762
  3193
    ab
dvander@2762
  3194
    *** Failers
dvander@2762
  3195
    cb
dvander@2762
  3196
    b
dvander@2762
  3197
dvander@2762
  3198
/(?<!c)b/
dvander@2762
  3199
    ab
dvander@2762
  3200
    b
dvander@2762
  3201
    b
dvander@2762
  3202
dvander@2762
  3203
/(?:..)*a/
dvander@2762
  3204
    aba
dvander@2762
  3205
dvander@2762
  3206
/(?:..)*?a/
dvander@2762
  3207
    aba
dvander@2762
  3208
dvander@2762
  3209
/^(?:b|a(?=(.)))*\1/
dvander@2762
  3210
    abc
dvander@2762
  3211
dvander@2762
  3212
/^(){3,5}/
dvander@2762
  3213
    abc
dvander@2762
  3214
dvander@2762
  3215
/^(a+)*ax/
dvander@2762
  3216
    aax
dvander@2762
  3217
dvander@2762
  3218
/^((a|b)+)*ax/
dvander@2762
  3219
    aax
dvander@2762
  3220
dvander@2762
  3221
/^((a|bc)+)*ax/
dvander@2762
  3222
    aax
dvander@2762
  3223
dvander@2762
  3224
/(a|x)*ab/
dvander@2762
  3225
    cab
dvander@2762
  3226
dvander@2762
  3227
/(a)*ab/
dvander@2762
  3228
    cab
dvander@2762
  3229
dvander@2762
  3230
/(?:(?i)a)b/
dvander@2762
  3231
    ab
dvander@2762
  3232
dvander@2762
  3233
/((?i)a)b/
dvander@2762
  3234
    ab
dvander@2762
  3235
dvander@2762
  3236
/(?:(?i)a)b/
dvander@2762
  3237
    Ab
dvander@2762
  3238
dvander@2762
  3239
/((?i)a)b/
dvander@2762
  3240
    Ab
dvander@2762
  3241
dvander@2762
  3242
/(?:(?i)a)b/
dvander@2762
  3243
    *** Failers
dvander@2762
  3244
    cb
dvander@2762
  3245
    aB
dvander@2762
  3246
dvander@2762
  3247
/((?i)a)b/
dvander@2762
  3248
dvander@2762
  3249
/(?i:a)b/
dvander@2762
  3250
    ab
dvander@2762
  3251
dvander@2762
  3252
/((?i:a))b/
dvander@2762
  3253
    ab
dvander@2762
  3254
dvander@2762
  3255
/(?i:a)b/
dvander@2762
  3256
    Ab
dvander@2762
  3257
dvander@2762
  3258
/((?i:a))b/
dvander@2762
  3259
    Ab
dvander@2762
  3260
dvander@2762
  3261
/(?i:a)b/
dvander@2762
  3262
    *** Failers
dvander@2762
  3263
    aB
dvander@2762
  3264
    aB
dvander@2762
  3265
dvander@2762
  3266
/((?i:a))b/
dvander@2762
  3267
dvander@2762
  3268
/(?:(?-i)a)b/i
dvander@2762
  3269
    ab
dvander@2762
  3270
dvander@2762
  3271
/((?-i)a)b/i
dvander@2762
  3272
    ab
dvander@2762
  3273
dvander@2762
  3274
/(?:(?-i)a)b/i
dvander@2762
  3275
    aB
dvander@2762
  3276
dvander@2762
  3277
/((?-i)a)b/i
dvander@2762
  3278
    aB
dvander@2762
  3279
dvander@2762
  3280
/(?:(?-i)a)b/i
dvander@2762
  3281
    *** Failers
dvander@2762
  3282
    aB
dvander@2762
  3283
    Ab
dvander@2762
  3284
dvander@2762
  3285
/((?-i)a)b/i
dvander@2762
  3286
dvander@2762
  3287
/(?:(?-i)a)b/i
dvander@2762
  3288
    aB
dvander@2762
  3289
dvander@2762
  3290
/((?-i)a)b/i
dvander@2762
  3291
    aB
dvander@2762
  3292
dvander@2762
  3293
/(?:(?-i)a)b/i
dvander@2762
  3294
    *** Failers
dvander@2762
  3295
    Ab
dvander@2762
  3296
    AB
dvander@2762
  3297
dvander@2762
  3298
/((?-i)a)b/i
dvander@2762
  3299
dvander@2762
  3300
/(?-i:a)b/i
dvander@2762
  3301
    ab
dvander@2762
  3302
dvander@2762
  3303
/((?-i:a))b/i
dvander@2762
  3304
    ab
dvander@2762
  3305
dvander@2762
  3306
/(?-i:a)b/i
dvander@2762
  3307
    aB
dvander@2762
  3308
dvander@2762
  3309
/((?-i:a))b/i
dvander@2762
  3310
    aB
dvander@2762
  3311
dvander@2762
  3312
/(?-i:a)b/i
dvander@2762
  3313
    *** Failers
dvander@2762
  3314
    AB
dvander@2762
  3315
    Ab
dvander@2762
  3316
dvander@2762
  3317
/((?-i:a))b/i
dvander@2762
  3318
dvander@2762
  3319
/(?-i:a)b/i
dvander@2762
  3320
    aB
dvander@2762
  3321
dvander@2762
  3322
/((?-i:a))b/i
dvander@2762
  3323
    aB
dvander@2762
  3324
dvander@2762
  3325
/(?-i:a)b/i
dvander@2762
  3326
    *** Failers
dvander@2762
  3327
    Ab
dvander@2762
  3328
    AB
dvander@2762
  3329
dvander@2762
  3330
/((?-i:a))b/i
dvander@2762
  3331
dvander@2762
  3332
/((?-i:a.))b/i
dvander@2762
  3333
    *** Failers
dvander@2762
  3334
    AB
dvander@2762
  3335
    a\nB
dvander@2762
  3336
dvander@2762
  3337
/((?s-i:a.))b/i
dvander@2762
  3338
    a\nB
dvander@2762
  3339
dvander@2762
  3340
/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
dvander@2762
  3341
    cabbbb
dvander@2762
  3342
dvander@2762
  3343
/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
dvander@2762
  3344
    caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
dvander@2762
  3345
dvander@2762
  3346
/(ab)\d\1/i
dvander@2762
  3347
    Ab4ab
dvander@2762
  3348
    ab4Ab
dvander@2762
  3349
dvander@2762
  3350
/foo\w*\d{4}baz/
dvander@2762
  3351
    foobar1234baz
dvander@2762
  3352
dvander@2762
  3353
/x(~~)*(?:(?:F)?)?/
dvander@2762
  3354
    x~~
dvander@2762
  3355
dvander@2762
  3356
/^a(?#xxx){3}c/
dvander@2762
  3357
    aaac
dvander@2762
  3358
dvander@2762
  3359
/^a (?#xxx) (?#yyy) {3}c/x
dvander@2762
  3360
    aaac
dvander@2762
  3361
dvander@2762
  3362
/(?<![cd])b/
dvander@2762
  3363
    *** Failers
dvander@2762
  3364
    B\nB
dvander@2762
  3365
    dbcb
dvander@2762
  3366
dvander@2762
  3367
/(?<![cd])[ab]/
dvander@2762
  3368
    dbaacb
dvander@2762
  3369
dvander@2762
  3370
/(?<!(c|d))b/
dvander@2762
  3371
dvander@2762
  3372
/(?<!(c|d))[ab]/
dvander@2762
  3373
    dbaacb
dvander@2762
  3374
dvander@2762
  3375
/(?<!cd)[ab]/
dvander@2762
  3376
    cdaccb
dvander@2762
  3377
dvander@2762
  3378
/^(?:a?b?)*$/
dvander@2762
  3379
    \
dvander@2762
  3380
    a
dvander@2762
  3381
    ab
dvander@2762
  3382
    aaa   
dvander@2762
  3383
    *** Failers
dvander@2762
  3384
    dbcb
dvander@2762
  3385
    a--
dvander@2762
  3386
    aa-- 
dvander@2762
  3387
dvander@2762
  3388
/((?s)^a(.))((?m)^b$)/
dvander@2762
  3389
    a\nb\nc\n
dvander@2762
  3390
dvander@2762
  3391
/((?m)^b$)/
dvander@2762
  3392
    a\nb\nc\n
dvander@2762
  3393
dvander@2762
  3394
/(?m)^b/
dvander@2762
  3395
    a\nb\n
dvander@2762
  3396
dvander@2762
  3397
/(?m)^(b)/
dvander@2762
  3398
    a\nb\n
dvander@2762
  3399
dvander@2762
  3400
/((?m)^b)/
dvander@2762
  3401
    a\nb\n
dvander@2762
  3402
dvander@2762
  3403
/\n((?m)^b)/
dvander@2762
  3404
    a\nb\n
dvander@2762
  3405
dvander@2762
  3406
/((?s).)c(?!.)/
dvander@2762
  3407
    a\nb\nc\n
dvander@2762
  3408
    a\nb\nc\n
dvander@2762
  3409
dvander@2762
  3410
/((?s)b.)c(?!.)/
dvander@2762
  3411
    a\nb\nc\n
dvander@2762
  3412
    a\nb\nc\n
dvander@2762
  3413
dvander@2762
  3414
/^b/
dvander@2762
  3415
dvander@2762
  3416
/()^b/
dvander@2762
  3417
    *** Failers
dvander@2762
  3418
    a\nb\nc\n
dvander@2762
  3419
    a\nb\nc\n
dvander@2762
  3420
dvander@2762
  3421
/((?m)^b)/
dvander@2762
  3422
    a\nb\nc\n
dvander@2762
  3423
dvander@2762
  3424
/(x)?(?(1)a|b)/
dvander@2762
  3425
    *** Failers
dvander@2762
  3426
    a
dvander@2762
  3427
    a
dvander@2762
  3428
dvander@2762
  3429
/(x)?(?(1)b|a)/
dvander@2762
  3430
    a
dvander@2762
  3431
dvander@2762
  3432
/()?(?(1)b|a)/
dvander@2762
  3433
    a
dvander@2762
  3434
dvander@2762
  3435
/()(?(1)b|a)/
dvander@2762
  3436
dvander@2762
  3437
/()?(?(1)a|b)/
dvander@2762
  3438
    a
dvander@2762
  3439
dvander@2762
  3440
/^(\()?blah(?(1)(\)))$/
dvander@2762
  3441
    (blah)
dvander@2762
  3442
    blah
dvander@2762
  3443
    *** Failers
dvander@2762
  3444
    a
dvander@2762
  3445
    blah)
dvander@2762
  3446
    (blah
dvander@2762
  3447
dvander@2762
  3448
/^(\(+)?blah(?(1)(\)))$/
dvander@2762
  3449
    (blah)
dvander@2762
  3450
    blah
dvander@2762
  3451
    *** Failers
dvander@2762
  3452
    blah)
dvander@2762
  3453
    (blah
dvander@2762
  3454
dvander@2762
  3455
/(?(?!a)a|b)/
dvander@2762
  3456
dvander@2762
  3457
/(?(?!a)b|a)/
dvander@2762
  3458
    a
dvander@2762
  3459
dvander@2762
  3460
/(?(?=a)b|a)/
dvander@2762
  3461
    *** Failers
dvander@2762
  3462
    a
dvander@2762
  3463
    a
dvander@2762
  3464
dvander@2762
  3465
/(?(?=a)a|b)/
dvander@2762
  3466
    a
dvander@2762
  3467
dvander@2762
  3468
/(?=(a+?))(\1ab)/
dvander@2762
  3469
    aaab
dvander@2762
  3470
dvander@2762
  3471
/^(?=(a+?))\1ab/
dvander@2762
  3472
dvander@2762
  3473
/(\w+:)+/
dvander@2762
  3474
    one:
dvander@2762
  3475
dvander@2762
  3476
/$(?<=^(a))/
dvander@2762
  3477
    a
dvander@2762
  3478
dvander@2762
  3479
/(?=(a+?))(\1ab)/
dvander@2762
  3480
    aaab
dvander@2762
  3481
dvander@2762
  3482
/^(?=(a+?))\1ab/
dvander@2762
  3483
    *** Failers
dvander@2762
  3484
    aaab
dvander@2762
  3485
    aaab
dvander@2762
  3486
dvander@2762
  3487
/([\w:]+::)?(\w+)$/
dvander@2762
  3488
    abcd
dvander@2762
  3489
    xy:z:::abcd
dvander@2762
  3490
dvander@2762
  3491
/^[^bcd]*(c+)/
dvander@2762
  3492
    aexycd
dvander@2762
  3493
dvander@2762
  3494
/(a*)b+/
dvander@2762
  3495
    caab
dvander@2762
  3496
dvander@2762
  3497
/([\w:]+::)?(\w+)$/
dvander@2762
  3498
    abcd
dvander@2762
  3499
    xy:z:::abcd
dvander@2762
  3500
    *** Failers
dvander@2762
  3501
    abcd:
dvander@2762
  3502
    abcd:
dvander@2762
  3503
dvander@2762
  3504
/^[^bcd]*(c+)/
dvander@2762
  3505
    aexycd
dvander@2762
  3506
dvander@2762
  3507
/(>a+)ab/
dvander@2762
  3508
dvander@2762
  3509
/(?>a+)b/
dvander@2762
  3510
    aaab
dvander@2762
  3511
dvander@2762
  3512
/([[:]+)/
dvander@2762
  3513
    a:[b]:
dvander@2762
  3514
dvander@2762
  3515
/([[=]+)/
dvander@2762
  3516
    a=[b]=
dvander@2762
  3517
dvander@2762
  3518
/([[.]+)/
dvander@2762
  3519
    a.[b].
dvander@2762
  3520
dvander@2762
  3521
/((?>a+)b)/
dvander@2762
  3522
    aaab
dvander@2762
  3523
dvander@2762
  3524
/(?>(a+))b/
dvander@2762
  3525
    aaab
dvander@2762
  3526
dvander@2762
  3527
/((?>[^()]+)|\([^()]*\))+/
dvander@2762
  3528
    ((abc(ade)ufh()()x
dvander@2762
  3529
dvander@2762
  3530
/a\Z/
dvander@2762
  3531
    *** Failers
dvander@2762
  3532
    aaab
dvander@2762
  3533
    a\nb\n
dvander@2762
  3534
dvander@2762
  3535
/b\Z/
dvander@2762
  3536
    a\nb\n
dvander@2762
  3537
dvander@2762
  3538
/b\z/
dvander@2762
  3539
dvander@2762
  3540
/b\Z/
dvander@2762
  3541
    a\nb
dvander@2762
  3542
dvander@2762
  3543
/b\z/
dvander@2762
  3544
    a\nb
dvander@2762
  3545
    *** Failers
dvander@2762
  3546
    
dvander@2762
  3547
/^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
dvander@2762
  3548
    a
dvander@2762
  3549
    abc
dvander@2762
  3550
    a-b
dvander@2762
  3551
    0-9 
dvander@2762
  3552
    a.b
dvander@2762
  3553
    5.6.7  
dvander@2762
  3554
    the.quick.brown.fox
dvander@2762
  3555
    a100.b200.300c  
dvander@2762
  3556
    12-ab.1245 
dvander@2762
  3557
    *** Failers
dvander@2762
  3558
    \
dvander@2762
  3559
    .a
dvander@2762
  3560
    -a
dvander@2762
  3561
    a-
dvander@2762
  3562
    a.  
dvander@2762
  3563
    a_b 
dvander@2762
  3564
    a.-
dvander@2762
  3565
    a..  
dvander@2762
  3566
    ab..bc 
dvander@2762
  3567
    the.quick.brown.fox-
dvander@2762
  3568
    the.quick.brown.fox.
dvander@2762
  3569
    the.quick.brown.fox_
dvander@2762
  3570
    the.quick.brown.fox+       
dvander@2762
  3571
dvander@2762
  3572
/(?>.*)(?<=(abcd|wxyz))/
dvander@2762
  3573
    alphabetabcd
dvander@2762
  3574
    endingwxyz
dvander@2762
  3575
    *** Failers
dvander@2762
  3576
    a rather long string that doesn't end with one of them
dvander@2762
  3577
dvander@2762
  3578
/word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
dvander@2762
  3579
    word cat dog elephant mussel cow horse canary baboon snake shark otherword
dvander@2762
  3580
    word cat dog elephant mussel cow horse canary baboon snake shark
dvander@2762
  3581
  
dvander@2762
  3582
/word (?>[a-zA-Z0-9]+ ){0,30}otherword/
dvander@2762
  3583
    word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
dvander@2762
  3584
dvander@2762
  3585
/(?<=\d{3}(?!999))foo/
dvander@2762
  3586
    999foo
dvander@2762
  3587
    123999foo 
dvander@2762
  3588
    *** Failers
dvander@2762
  3589
    123abcfoo
dvander@2762
  3590
    
dvander@2762
  3591
/(?<=(?!...999)\d{3})foo/
dvander@2762
  3592
    999foo
dvander@2762
  3593
    123999foo 
dvander@2762
  3594
    *** Failers
dvander@2762
  3595
    123abcfoo
dvander@2762
  3596
dvander@2762
  3597
/(?<=\d{3}(?!999)...)foo/
dvander@2762
  3598
    123abcfoo
dvander@2762
  3599
    123456foo 
dvander@2762
  3600
    *** Failers
dvander@2762
  3601
    123999foo  
dvander@2762
  3602
    
dvander@2762
  3603
/(?<=\d{3}...)(?<!999)foo/
dvander@2762
  3604
    123abcfoo   
dvander@2762
  3605
    123456foo 
dvander@2762
  3606
    *** Failers
dvander@2762
  3607
    123999foo  
dvander@2762
  3608
dvander@2762
  3609
/<a[\s]+href[\s]*=[\s]*          # find <a href=
dvander@2762
  3610
 ([\"\'])?                       # find single or double quote
dvander@2762
  3611
 (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
dvander@2762
  3612
                                 # quote, otherwise match up to next space
dvander@2762
  3613
/isx
dvander@2762
  3614
    <a href=abcd xyz
dvander@2762
  3615
    <a href=\"abcd xyz pqr\" cats
dvander@2762
  3616
    <a href=\'abcd xyz pqr\' cats
dvander@2762
  3617
dvander@2762
  3618
/<a\s+href\s*=\s*                # find <a href=
dvander@2762
  3619
 (["'])?                         # find single or double quote
dvander@2762
  3620
 (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
dvander@2762
  3621
                                 # quote, otherwise match up to next space
dvander@2762
  3622
/isx
dvander@2762
  3623
    <a href=abcd xyz
dvander@2762
  3624
    <a href=\"abcd xyz pqr\" cats
dvander@2762
  3625
    <a href       =       \'abcd xyz pqr\' cats
dvander@2762
  3626
dvander@2762
  3627
/<a\s+href(?>\s*)=(?>\s*)        # find <a href=
dvander@2762
  3628
 (["'])?                         # find single or double quote
dvander@2762
  3629
 (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
dvander@2762
  3630
                                 # quote, otherwise match up to next space
dvander@2762
  3631
/isx
dvander@2762
  3632
    <a href=abcd xyz
dvander@2762
  3633
    <a href=\"abcd xyz pqr\" cats
dvander@2762
  3634
    <a href       =       \'abcd xyz pqr\' cats
dvander@2762
  3635
dvander@2762
  3636
/((Z)+|A)*/
dvander@2762
  3637
    ZABCDEFG
dvander@2762
  3638
dvander@2762
  3639
/(Z()|A)*/
dvander@2762
  3640
    ZABCDEFG
dvander@2762
  3641
dvander@2762
  3642
/(Z(())|A)*/
dvander@2762
  3643
    ZABCDEFG
dvander@2762
  3644
dvander@2762
  3645
/((?>Z)+|A)*/
dvander@2762
  3646
    ZABCDEFG
dvander@2762
  3647
dvander@2762
  3648
/((?>)+|A)*/
dvander@2762
  3649
    ZABCDEFG
dvander@2762
  3650
dvander@2762
  3651
/a*/g
dvander@2762
  3652
    abbab
dvander@2762
  3653
dvander@2762
  3654
/^[a-\d]/
dvander@2762
  3655
    abcde
dvander@2762
  3656
    -things
dvander@2762
  3657
    0digit
dvander@2762
  3658
    *** Failers
dvander@2762
  3659
    bcdef    
dvander@2762
  3660
dvander@2762
  3661
/^[\d-a]/
dvander@2762
  3662
    abcde
dvander@2762
  3663
    -things
dvander@2762
  3664
    0digit
dvander@2762
  3665
    *** Failers
dvander@2762
  3666
    bcdef    
dvander@2762
  3667
    
dvander@2762
  3668
/[[:space:]]+/
dvander@2762
  3669
    > \x09\x0a\x0c\x0d\x0b<
dvander@2762
  3670
     
dvander@2762
  3671
/[[:blank:]]+/
dvander@2762
  3672
    > \x09\x0a\x0c\x0d\x0b<
dvander@2762
  3673
     
dvander@2762
  3674
/[\s]+/
dvander@2762
  3675
    > \x09\x0a\x0c\x0d\x0b<
dvander@2762
  3676
     
dvander@2762
  3677
/\s+/
dvander@2762
  3678
    > \x09\x0a\x0c\x0d\x0b<
dvander@2762
  3679
     
dvander@2762
  3680
/a
dvander@2762
  3681
b/x
dvander@2762
  3682
    ab
dvander@2762
  3683
dvander@2762
  3684
/(?!\A)x/m
dvander@2762
  3685
  a\nxb\n
dvander@2762
  3686
dvander@2762
  3687
/(?!^)x/m
dvander@2762
  3688
  a\nxb\n
dvander@2762
  3689
dvander@2762
  3690
/abc\Qabc\Eabc/
dvander@2762
  3691
    abcabcabc
dvander@2762
  3692
    
dvander@2762
  3693
/abc\Q(*+|\Eabc/
dvander@2762
  3694
    abc(*+|abc 
dvander@2762
  3695
dvander@2762
  3696
/   abc\Q abc\Eabc/x
dvander@2762
  3697
    abc abcabc
dvander@2762
  3698
    *** Failers
dvander@2762
  3699
    abcabcabc  
dvander@2762
  3700
    
dvander@2762
  3701
/abc#comment
dvander@2762
  3702
    \Q#not comment
dvander@2762
  3703
    literal\E/x
dvander@2762
  3704
    abc#not comment\n    literal     
dvander@2762
  3705
dvander@2762
  3706
/abc#comment
dvander@2762
  3707
    \Q#not comment
dvander@2762
  3708
    literal/x
dvander@2762
  3709
    abc#not comment\n    literal     
dvander@2762
  3710
dvander@2762
  3711
/abc#comment
dvander@2762
  3712
    \Q#not comment
dvander@2762
  3713
    literal\E #more comment
dvander@2762
  3714
    /x
dvander@2762
  3715
    abc#not comment\n    literal     
dvander@2762
  3716
dvander@2762
  3717
/abc#comment
dvander@2762
  3718
    \Q#not comment
dvander@2762
  3719
    literal\E #more comment/x
dvander@2762
  3720
    abc#not comment\n    literal     
dvander@2762
  3721
dvander@2762
  3722
/\Qabc\$xyz\E/
dvander@2762
  3723
    abc\\\$xyz
dvander@2762
  3724
dvander@2762
  3725
/\Qabc\E\$\Qxyz\E/
dvander@2762
  3726
    abc\$xyz
dvander@2762
  3727
dvander@2762
  3728
/\Gabc/
dvander@2762
  3729
    abc
dvander@2762
  3730
    *** Failers
dvander@2762
  3731
    xyzabc  
dvander@2762
  3732
dvander@2762
  3733
/\Gabc./g
dvander@2762
  3734
    abc1abc2xyzabc3
dvander@2762
  3735
dvander@2762
  3736
/abc./g
dvander@2762
  3737
    abc1abc2xyzabc3 
dvander@2762
  3738
dvander@2762
  3739
/a(?x: b c )d/
dvander@2762
  3740
    XabcdY
dvander@2762
  3741
    *** Failers 
dvander@2762
  3742
    Xa b c d Y 
dvander@2762
  3743
dvander@2762
  3744
/((?x)x y z | a b c)/
dvander@2762
  3745
    XabcY
dvander@2762
  3746
    AxyzB 
dvander@2762
  3747
dvander@2762
  3748
/(?i)AB(?-i)C/
dvander@2762
  3749
    XabCY
dvander@2762
  3750
    *** Failers
dvander@2762
  3751
    XabcY  
dvander@2762
  3752
dvander@2762
  3753
/((?i)AB(?-i)C|D)E/
dvander@2762
  3754
    abCE
dvander@2762
  3755
    DE
dvander@2762
  3756
    *** Failers
dvander@2762
  3757
    abcE
dvander@2762
  3758
    abCe  
dvander@2762
  3759
    dE
dvander@2762
  3760
    De    
dvander@2762
  3761
dvander@2762
  3762
/(.*)\d+\1/
dvander@2762
  3763
    abc123abc
dvander@2762
  3764
    abc123bc 
dvander@2762
  3765
dvander@2762
  3766
/(.*)\d+\1/s
dvander@2762
  3767
    abc123abc
dvander@2762
  3768
    abc123bc 
dvander@2762
  3769
    
dvander@2762
  3770
/((.*))\d+\1/
dvander@2762
  3771
    abc123abc
dvander@2762
  3772
    abc123bc  
dvander@2762
  3773
dvander@2762
  3774
/-- This tests for an IPv6 address in the form where it can have up to --/
dvander@2762
  3775
/-- eight components, one and only one of which is empty. This must be --/
dvander@2762
  3776
/-- an internal component. --/
dvander@2762
  3777
dvander@2762
  3778
/^(?!:)                       # colon disallowed at start
dvander@2762
  3779
  (?:                         # start of item
dvander@2762
  3780
    (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
dvander@2762
  3781
    (?(1)0 | () ) )           # if null previously matched, fail; else null
dvander@2762
  3782
    :                         # followed by colon
dvander@2762
  3783
  ){1,7}                      # end item; 1-7 of them required               
dvander@2762
  3784
  [0-9a-f]{1,4} $             # final hex number at end of string
dvander@2762
  3785
  (?(1)|.)                    # check that there was an empty component
dvander@2762
  3786
  /xi
dvander@2762
  3787
    a123::a123
dvander@2762
  3788
    a123:b342::abcd
dvander@2762
  3789
    a123:b342::324e:abcd
dvander@2762
  3790
    a123:ddde:b342::324e:abcd
dvander@2762
  3791
    a123:ddde:b342::324e:dcba:abcd
dvander@2762
  3792
    a123:ddde:9999:b342::324e:dcba:abcd
dvander@2762
  3793
    *** Failers
dvander@2762
  3794
    1:2:3:4:5:6:7:8
dvander@2762
  3795
    a123:bce:ddde:9999:b342::324e:dcba:abcd
dvander@2762
  3796
    a123::9999:b342::324e:dcba:abcd
dvander@2762
  3797
    abcde:2:3:4:5:6:7:8
dvander@2762
  3798
    ::1
dvander@2762
  3799
    abcd:fee0:123::   
dvander@2762
  3800
    :1
dvander@2762
  3801
    1:  
dvander@2762
  3802
dvander@2762
  3803
/[z\Qa-d]\E]/
dvander@2762
  3804
    z
dvander@2762
  3805
    a
dvander@2762
  3806
    -
dvander@2762
  3807
    d
dvander@2762
  3808
    ] 
dvander@2762
  3809
    *** Failers
dvander@2762
  3810
    b     
dvander@2762
  3811
dvander@2762
  3812
/[\z\C]/
dvander@2762
  3813
    z
dvander@2762
  3814
    C 
dvander@2762
  3815
    
dvander@2762
  3816
/\M/
dvander@2762
  3817
    M 
dvander@2762
  3818
    
dvander@2762
  3819
/(a+)*b/
dvander@2762
  3820
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
dvander@2762
  3821
    
dvander@2762
  3822
/(?i)reg(?:ul(?:[a�]|ae)r|ex)/
dvander@2762
  3823
    REGular
dvander@2762
  3824
    regulaer
dvander@2762
  3825
    Regex  
dvander@2762
  3826
    regul�r 
dvander@2762
  3827
dvander@2762
  3828
/����[�-��-�]+/
dvander@2762
  3829
    �����
dvander@2762
  3830
    �����
dvander@2762
  3831
    �����
dvander@2762
  3832
    �����
dvander@2762
  3833
dvander@2762
  3834
/(?<=Z)X./
dvander@2762
  3835
  \x84XAZXB
dvander@2762
  3836
dvander@2762
  3837
/ab cd (?x) de fg/
dvander@2762
  3838
    ab cd defg
dvander@2762
  3839
dvander@2762
  3840
/ab cd(?x) de fg/
dvander@2762
  3841
    ab cddefg
dvander@2762
  3842
    ** Failers 
dvander@2762
  3843
    abcddefg
dvander@2762
  3844
dvander@2762
  3845
/(?<![^f]oo)(bar)/
dvander@2762
  3846
    foobarX 
dvander@2762
  3847
    ** Failers 
dvander@2762
  3848
    boobarX
dvander@2762
  3849
dvander@2762
  3850
/(?<![^f])X/
dvander@2762
  3851
    offX
dvander@2762
  3852
    ** Failers
dvander@2762
  3853
    onyX  
dvander@2762
  3854
dvander@2762
  3855
/(?<=[^f])X/
dvander@2762
  3856
    onyX
dvander@2762
  3857
    ** Failers
dvander@2762
  3858
    offX 
dvander@2762
  3859
dvander@2762
  3860
/^/mg
dvander@2762
  3861
    a\nb\nc\n
dvander@2762
  3862
    \ 
dvander@2762
  3863
    
dvander@2762
  3864
/(?<=C\n)^/mg
dvander@2762
  3865
    A\nC\nC\n 
dvander@2762
  3866
dvander@2762
  3867
/(?:(?(1)a|b)(X))+/
dvander@2762
  3868
    bXaX
dvander@2762
  3869
dvander@2762
  3870
/(?:(?(1)\1a|b)(X|Y))+/
dvander@2762
  3871
    bXXaYYaY
dvander@2762
  3872
    bXYaXXaX  
dvander@2762
  3873
dvander@2762
  3874
/()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
dvander@2762
  3875
    bXXaYYaY
dvander@2762
  3876
dvander@2762
  3877
/[[,abc,]+]/
dvander@2762
  3878
    abc]
dvander@2762
  3879
    a,b]
dvander@2762
  3880
    [a,b,c]  
dvander@2762
  3881
dvander@2762
  3882
/(?-x: )/x
dvander@2762
  3883
    A\x20B
dvander@2762
  3884
    
dvander@2762
  3885
"(?x)(?-x: \s*#\s*)"
dvander@2762
  3886
    A # B
dvander@2762
  3887
    ** Failers
dvander@2762
  3888
    #  
dvander@2762
  3889
dvander@2762
  3890
"(?x-is)(?:(?-ixs) \s*#\s*) include"
dvander@2762
  3891
    A #include
dvander@2762
  3892
    ** Failers
dvander@2762
  3893
    A#include  
dvander@2762
  3894
    A #Include
dvander@2762
  3895
dvander@2762
  3896
/a*b*\w/
dvander@2762
  3897
    aaabbbb
dvander@2762
  3898
    aaaa
dvander@2762
  3899
    a
dvander@2762
  3900
dvander@2762
  3901
/a*b?\w/
dvander@2762
  3902
    aaabbbb
dvander@2762
  3903
    aaaa
dvander@2762
  3904
    a
dvander@2762
  3905
dvander@2762
  3906
/a*b{0,4}\w/
dvander@2762
  3907
    aaabbbb
dvander@2762
  3908
    aaaa
dvander@2762
  3909
    a
dvander@2762
  3910
dvander@2762
  3911
/a*b{0,}\w/
dvander@2762
  3912
    aaabbbb
dvander@2762
  3913
    aaaa
dvander@2762
  3914
    a
dvander@2762
  3915
    
dvander@2762
  3916
/a*\d*\w/
dvander@2762
  3917
    0a
dvander@2762
  3918
    a 
dvander@2762
  3919
    
dvander@2762
  3920
/a*b *\w/x
dvander@2762
  3921
    a 
dvander@2762
  3922
dvander@2762
  3923
/a*b#comment
dvander@2762
  3924
  *\w/x
dvander@2762
  3925
    a 
dvander@2762
  3926
dvander@2762
  3927
/a* b *\w/x
dvander@2762
  3928
    a 
dvander@2762
  3929
dvander@2762
  3930
/^\w+=.*(\\\n.*)*/
dvander@2762
  3931
    abc=xyz\\\npqr
dvander@2762
  3932
dvander@2762
  3933
/(?=(\w+))\1:/
dvander@2762
  3934
    abcd:
dvander@2762
  3935
dvander@2762
  3936
/^(?=(\w+))\1:/
dvander@2762
  3937
    abcd:
dvander@2762
  3938
dvander@2762
  3939
/^\Eabc/
dvander@2762
  3940
    abc
dvander@2762
  3941
    
dvander@2762
  3942
/^[\Eabc]/
dvander@2762
  3943
    a
dvander@2762
  3944
    ** Failers 
dvander@2762
  3945
    E 
dvander@2762
  3946
    
dvander@2762
  3947
/^[a-\Ec]/
dvander@2762
  3948
    b
dvander@2762
  3949
    ** Failers
dvander@2762
  3950
    -
dvander@2762
  3951
    E    
dvander@2762
  3952
dvander@2762
  3953
/^[a\E\E-\Ec]/
dvander@2762
  3954
    b
dvander@2762
  3955
    ** Failers
dvander@2762
  3956
    -
dvander@2762
  3957
    E    
dvander@2762
  3958
dvander@2762
  3959
/^[\E\Qa\E-\Qz\E]+/
dvander@2762
  3960
    b
dvander@2762
  3961
    ** Failers
dvander@2762
  3962
    -  
dvander@2762
  3963
    
dvander@2762
  3964
/^[a\Q]bc\E]/
dvander@2762
  3965
    a
dvander@2762
  3966
    ]
dvander@2762
  3967
    c
dvander@2762
  3968
    
dvander@2762
  3969
/^[a-\Q\E]/
dvander@2762
  3970
    a
dvander@2762
  3971
    -     
dvander@2762
  3972
dvander@2762
  3973
/^(a()*)*/
dvander@2762
  3974
    aaaa
dvander@2762
  3975
dvander@2762
  3976
/^(?:a(?:(?:))*)*/
dvander@2762
  3977
    aaaa
dvander@2762
  3978
dvander@2762
  3979
/^(a()+)+/
dvander@2762
  3980
    aaaa
dvander@2762
  3981
dvander@2762
  3982
/^(?:a(?:(?:))+)+/
dvander@2762
  3983
    aaaa
dvander@2762
  3984
dvander@2762
  3985
/(a){0,3}(?(1)b|(c|))*D/
dvander@2762
  3986
    abbD
dvander@2762
  3987
    ccccD
dvander@2762
  3988
    D  
dvander@2762
  3989
dvander@2762
  3990
/(a|)*\d/
dvander@2762
  3991
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
dvander@2762
  3992
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
dvander@2762
  3993
dvander@2762
  3994
/(?>a|)*\d/
dvander@2762
  3995
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
dvander@2762
  3996
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
dvander@2762
  3997
dvander@2762
  3998
/(?:a|)*\d/
dvander@2762
  3999
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
dvander@2762
  4000
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
dvander@2762
  4001
dvander@2762
  4002
/\Z/g
dvander@2762
  4003
  abc\n
dvander@2762
  4004
  
dvander@2762
  4005
/^(?s)(?>.*)(?<!\n)/
dvander@2762
  4006
  abc
dvander@2762
  4007
  abc\n  
dvander@2762
  4008
dvander@2762
  4009
/^(?![^\n]*\n\z)/
dvander@2762
  4010
  abc
dvander@2762
  4011
  abc\n 
dvander@2762
  4012
  
dvander@2762
  4013
/\z(?<!\n)/
dvander@2762
  4014
  abc
dvander@2762
  4015
  abc\n  
dvander@2762
  4016
dvander@2762
  4017
/(.*(.)?)*/
dvander@2762
  4018
    abcd
dvander@2762
  4019
dvander@2762
  4020
/( (A | (?(1)0|) )*   )/x
dvander@2762
  4021
    abcd
dvander@2762
  4022
dvander@2762
  4023
/( ( (?(1)0|) )*   )/x
dvander@2762
  4024
    abcd
dvander@2762
  4025
dvander@2762
  4026
/(  (?(1)0|)*   )/x
dvander@2762
  4027
    abcd
dvander@2762
  4028
dvander@2762
  4029
/[[:abcd:xyz]]/
dvander@2762
  4030
    a]
dvander@2762
  4031
    :] 
dvander@2762
  4032
    
dvander@2762
  4033
/[abc[:x\]pqr]/
dvander@2762
  4034
    a
dvander@2762
  4035
    [
dvander@2762
  4036
    :
dvander@2762
  4037
    ]
dvander@2762
  4038
    p    
dvander@2762
  4039
dvander@2762
  4040
/.*[op][xyz]/
dvander@2762
  4041
    fooabcfoo
dvander@2762
  4042
dvander@2762
  4043
/(?(?=.*b)b|^)/
dvander@2762
  4044
   adc
dvander@2762
  4045
   abc 
dvander@2762
  4046
dvander@2762
  4047
/(?(?=^.*b)b|^)/
dvander@2762
  4048
   adc
dvander@2762
  4049
   abc 
dvander@2762
  4050
dvander@2762
  4051
/(?(?=.*b)b|^)*/
dvander@2762
  4052
   adc
dvander@2762
  4053
   abc 
dvander@2762
  4054
dvander@2762
  4055
/(?(?=.*b)b|^)+/
dvander@2762
  4056
   adc
dvander@2762
  4057
   abc 
dvander@2762
  4058
dvander@2762
  4059
/(?(?=b).*b|^d)/
dvander@2762
  4060
    abc
dvander@2762
  4061
dvander@2762
  4062
/(?(?=.*b).*b|^d)/
dvander@2762
  4063
    abc
dvander@2762
  4064
dvander@2762
  4065
/^%((?(?=[a])[^%])|b)*%$/
dvander@2762
  4066
    %ab%
dvander@2762
  4067