Annotation of embedaddon/pcre/testdata/testoutput1, revision 1.1.1.1

1.1       misho       1: /-- This set of tests is for features that are compatible with all versions of
                      2:     Perl 5, in non-UTF-8 mode. --/
                      3: 
                      4: /the quick brown fox/
                      5:     the quick brown fox
                      6:  0: the quick brown fox
                      7:     The quick brown FOX
                      8: No match
                      9:     What do you know about the quick brown fox?
                     10:  0: the quick brown fox
                     11:     What do you know about THE QUICK BROWN FOX?
                     12: No match
                     13: 
                     14: /The quick brown fox/i
                     15:     the quick brown fox
                     16:  0: the quick brown fox
                     17:     The quick brown FOX
                     18:  0: The quick brown FOX
                     19:     What do you know about the quick brown fox?
                     20:  0: the quick brown fox
                     21:     What do you know about THE QUICK BROWN FOX?
                     22:  0: THE QUICK BROWN FOX
                     23: 
                     24: /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
                     25:     abcd\t\n\r\f\a\e9;\$\\?caxyz
                     26:  0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
                     27: 
                     28: /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
                     29:     abxyzpqrrrabbxyyyypqAzz
                     30:  0: abxyzpqrrrabbxyyyypqAzz
                     31:     abxyzpqrrrabbxyyyypqAzz
                     32:  0: abxyzpqrrrabbxyyyypqAzz
                     33:     aabxyzpqrrrabbxyyyypqAzz
                     34:  0: aabxyzpqrrrabbxyyyypqAzz
                     35:     aaabxyzpqrrrabbxyyyypqAzz
                     36:  0: aaabxyzpqrrrabbxyyyypqAzz
                     37:     aaaabxyzpqrrrabbxyyyypqAzz
                     38:  0: aaaabxyzpqrrrabbxyyyypqAzz
                     39:     abcxyzpqrrrabbxyyyypqAzz
                     40:  0: abcxyzpqrrrabbxyyyypqAzz
                     41:     aabcxyzpqrrrabbxyyyypqAzz
                     42:  0: aabcxyzpqrrrabbxyyyypqAzz
                     43:     aaabcxyzpqrrrabbxyyyypAzz
                     44:  0: aaabcxyzpqrrrabbxyyyypAzz
                     45:     aaabcxyzpqrrrabbxyyyypqAzz
                     46:  0: aaabcxyzpqrrrabbxyyyypqAzz
                     47:     aaabcxyzpqrrrabbxyyyypqqAzz
                     48:  0: aaabcxyzpqrrrabbxyyyypqqAzz
                     49:     aaabcxyzpqrrrabbxyyyypqqqAzz
                     50:  0: aaabcxyzpqrrrabbxyyyypqqqAzz
                     51:     aaabcxyzpqrrrabbxyyyypqqqqAzz
                     52:  0: aaabcxyzpqrrrabbxyyyypqqqqAzz
                     53:     aaabcxyzpqrrrabbxyyyypqqqqqAzz
                     54:  0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
                     55:     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
                     56:  0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
                     57:     aaaabcxyzpqrrrabbxyyyypqAzz
                     58:  0: aaaabcxyzpqrrrabbxyyyypqAzz
                     59:     abxyzzpqrrrabbxyyyypqAzz
                     60:  0: abxyzzpqrrrabbxyyyypqAzz
                     61:     aabxyzzzpqrrrabbxyyyypqAzz
                     62:  0: aabxyzzzpqrrrabbxyyyypqAzz
                     63:     aaabxyzzzzpqrrrabbxyyyypqAzz
                     64:  0: aaabxyzzzzpqrrrabbxyyyypqAzz
                     65:     aaaabxyzzzzpqrrrabbxyyyypqAzz
                     66:  0: aaaabxyzzzzpqrrrabbxyyyypqAzz
                     67:     abcxyzzpqrrrabbxyyyypqAzz
                     68:  0: abcxyzzpqrrrabbxyyyypqAzz
                     69:     aabcxyzzzpqrrrabbxyyyypqAzz
                     70:  0: aabcxyzzzpqrrrabbxyyyypqAzz
                     71:     aaabcxyzzzzpqrrrabbxyyyypqAzz
                     72:  0: aaabcxyzzzzpqrrrabbxyyyypqAzz
                     73:     aaaabcxyzzzzpqrrrabbxyyyypqAzz
                     74:  0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
                     75:     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
                     76:  0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
                     77:     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
                     78:  0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
                     79:     aaabcxyzpqrrrabbxyyyypABzz
                     80:  0: aaabcxyzpqrrrabbxyyyypABzz
                     81:     aaabcxyzpqrrrabbxyyyypABBzz
                     82:  0: aaabcxyzpqrrrabbxyyyypABBzz
                     83:     >>>aaabxyzpqrrrabbxyyyypqAzz
                     84:  0: aaabxyzpqrrrabbxyyyypqAzz
                     85:     >aaaabxyzpqrrrabbxyyyypqAzz
                     86:  0: aaaabxyzpqrrrabbxyyyypqAzz
                     87:     >>>>abcxyzpqrrrabbxyyyypqAzz
                     88:  0: abcxyzpqrrrabbxyyyypqAzz
                     89:     *** Failers
                     90: No match
                     91:     abxyzpqrrabbxyyyypqAzz
                     92: No match
                     93:     abxyzpqrrrrabbxyyyypqAzz
                     94: No match
                     95:     abxyzpqrrrabxyyyypqAzz
                     96: No match
                     97:     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
                     98: No match
                     99:     aaaabcxyzzzzpqrrrabbbxyyypqAzz
                    100: No match
                    101:     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
                    102: No match
                    103: 
                    104: /^(abc){1,2}zz/
                    105:     abczz
                    106:  0: abczz
                    107:  1: abc
                    108:     abcabczz
                    109:  0: abcabczz
                    110:  1: abc
                    111:     *** Failers
                    112: No match
                    113:     zz
                    114: No match
                    115:     abcabcabczz
                    116: No match
                    117:     >>abczz
                    118: No match
                    119: 
                    120: /^(b+?|a){1,2}?c/
                    121:     bc
                    122:  0: bc
                    123:  1: b
                    124:     bbc
                    125:  0: bbc
                    126:  1: b
                    127:     bbbc
                    128:  0: bbbc
                    129:  1: bb
                    130:     bac
                    131:  0: bac
                    132:  1: a
                    133:     bbac
                    134:  0: bbac
                    135:  1: a
                    136:     aac
                    137:  0: aac
                    138:  1: a
                    139:     abbbbbbbbbbbc
                    140:  0: abbbbbbbbbbbc
                    141:  1: bbbbbbbbbbb
                    142:     bbbbbbbbbbbac
                    143:  0: bbbbbbbbbbbac
                    144:  1: a
                    145:     *** Failers
                    146: No match
                    147:     aaac
                    148: No match
                    149:     abbbbbbbbbbbac
                    150: No match
                    151: 
                    152: /^(b+|a){1,2}c/
                    153:     bc
                    154:  0: bc
                    155:  1: b
                    156:     bbc
                    157:  0: bbc
                    158:  1: bb
                    159:     bbbc
                    160:  0: bbbc
                    161:  1: bbb
                    162:     bac
                    163:  0: bac
                    164:  1: a
                    165:     bbac
                    166:  0: bbac
                    167:  1: a
                    168:     aac
                    169:  0: aac
                    170:  1: a
                    171:     abbbbbbbbbbbc
                    172:  0: abbbbbbbbbbbc
                    173:  1: bbbbbbbbbbb
                    174:     bbbbbbbbbbbac
                    175:  0: bbbbbbbbbbbac
                    176:  1: a
                    177:     *** Failers
                    178: No match
                    179:     aaac
                    180: No match
                    181:     abbbbbbbbbbbac
                    182: No match
                    183: 
                    184: /^(b+|a){1,2}?bc/
                    185:     bbc
                    186:  0: bbc
                    187:  1: b
                    188: 
                    189: /^(b*|ba){1,2}?bc/
                    190:     babc
                    191:  0: babc
                    192:  1: ba
                    193:     bbabc
                    194:  0: bbabc
                    195:  1: ba
                    196:     bababc
                    197:  0: bababc
                    198:  1: ba
                    199:     *** Failers
                    200: No match
                    201:     bababbc
                    202: No match
                    203:     babababc
                    204: No match
                    205: 
                    206: /^(ba|b*){1,2}?bc/
                    207:     babc
                    208:  0: babc
                    209:  1: ba
                    210:     bbabc
                    211:  0: bbabc
                    212:  1: ba
                    213:     bababc
                    214:  0: bababc
                    215:  1: ba
                    216:     *** Failers
                    217: No match
                    218:     bababbc
                    219: No match
                    220:     babababc
                    221: No match
                    222: 
                    223: /^\ca\cA\c[\c{\c:/
                    224:     \x01\x01\e;z
                    225:  0: \x01\x01\x1b;z
                    226: 
                    227: /^[ab\]cde]/
                    228:     athing
                    229:  0: a
                    230:     bthing
                    231:  0: b
                    232:     ]thing
                    233:  0: ]
                    234:     cthing
                    235:  0: c
                    236:     dthing
                    237:  0: d
                    238:     ething
                    239:  0: e
                    240:     *** Failers
                    241: No match
                    242:     fthing
                    243: No match
                    244:     [thing
                    245: No match
                    246:     \\thing
                    247: No match
                    248: 
                    249: /^[]cde]/
                    250:     ]thing
                    251:  0: ]
                    252:     cthing
                    253:  0: c
                    254:     dthing
                    255:  0: d
                    256:     ething
                    257:  0: e
                    258:     *** Failers
                    259: No match
                    260:     athing
                    261: No match
                    262:     fthing
                    263: No match
                    264: 
                    265: /^[^ab\]cde]/
                    266:     fthing
                    267:  0: f
                    268:     [thing
                    269:  0: [
                    270:     \\thing
                    271:  0: \
                    272:     *** Failers
                    273:  0: *
                    274:     athing
                    275: No match
                    276:     bthing
                    277: No match
                    278:     ]thing
                    279: No match
                    280:     cthing
                    281: No match
                    282:     dthing
                    283: No match
                    284:     ething
                    285: No match
                    286: 
                    287: /^[^]cde]/
                    288:     athing
                    289:  0: a
                    290:     fthing
                    291:  0: f
                    292:     *** Failers
                    293:  0: *
                    294:     ]thing
                    295: No match
                    296:     cthing
                    297: No match
                    298:     dthing
                    299: No match
                    300:     ething
                    301: No match
                    302: 
                    303: /^\/
                    304:     
                    305:  0: \x81
                    306: 
                    307: /^/
                    308:     
                    309:  0: \xff
                    310: 
                    311: /^[0-9]+$/
                    312:     0
                    313:  0: 0
                    314:     1
                    315:  0: 1
                    316:     2
                    317:  0: 2
                    318:     3
                    319:  0: 3
                    320:     4
                    321:  0: 4
                    322:     5
                    323:  0: 5
                    324:     6
                    325:  0: 6
                    326:     7
                    327:  0: 7
                    328:     8
                    329:  0: 8
                    330:     9
                    331:  0: 9
                    332:     10
                    333:  0: 10
                    334:     100
                    335:  0: 100
                    336:     *** Failers
                    337: No match
                    338:     abc
                    339: No match
                    340: 
                    341: /^.*nter/
                    342:     enter
                    343:  0: enter
                    344:     inter
                    345:  0: inter
                    346:     uponter
                    347:  0: uponter
                    348: 
                    349: /^xxx[0-9]+$/
                    350:     xxx0
                    351:  0: xxx0
                    352:     xxx1234
                    353:  0: xxx1234
                    354:     *** Failers
                    355: No match
                    356:     xxx
                    357: No match
                    358: 
                    359: /^.+[0-9][0-9][0-9]$/
                    360:     x123
                    361:  0: x123
                    362:     xx123
                    363:  0: xx123
                    364:     123456
                    365:  0: 123456
                    366:     *** Failers
                    367: No match
                    368:     123
                    369: No match
                    370:     x1234
                    371:  0: x1234
                    372: 
                    373: /^.+?[0-9][0-9][0-9]$/
                    374:     x123
                    375:  0: x123
                    376:     xx123
                    377:  0: xx123
                    378:     123456
                    379:  0: 123456
                    380:     *** Failers
                    381: No match
                    382:     123
                    383: No match
                    384:     x1234
                    385:  0: x1234
                    386: 
                    387: /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
                    388:     abc!pqr=apquxz.ixr.zzz.ac.uk
                    389:  0: abc!pqr=apquxz.ixr.zzz.ac.uk
                    390:  1: abc
                    391:  2: pqr
                    392:     *** Failers
                    393: No match
                    394:     !pqr=apquxz.ixr.zzz.ac.uk
                    395: No match
                    396:     abc!=apquxz.ixr.zzz.ac.uk
                    397: No match
                    398:     abc!pqr=apquxz:ixr.zzz.ac.uk
                    399: No match
                    400:     abc!pqr=apquxz.ixr.zzz.ac.ukk
                    401: No match
                    402: 
                    403: /:/
                    404:     Well, we need a colon: somewhere
                    405:  0: :
                    406:     *** Fail if we don't
                    407: No match
                    408: 
                    409: /([\da-f:]+)$/i
                    410:     0abc
                    411:  0: 0abc
                    412:  1: 0abc
                    413:     abc
                    414:  0: abc
                    415:  1: abc
                    416:     fed
                    417:  0: fed
                    418:  1: fed
                    419:     E
                    420:  0: E
                    421:  1: E
                    422:     ::
                    423:  0: ::
                    424:  1: ::
                    425:     5f03:12C0::932e
                    426:  0: 5f03:12C0::932e
                    427:  1: 5f03:12C0::932e
                    428:     fed def
                    429:  0: def
                    430:  1: def
                    431:     Any old stuff
                    432:  0: ff
                    433:  1: ff
                    434:     *** Failers
                    435: No match
                    436:     0zzz
                    437: No match
                    438:     gzzz
                    439: No match
                    440:     fed\x20
                    441: No match
                    442:     Any old rubbish
                    443: No match
                    444: 
                    445: /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
                    446:     .1.2.3
                    447:  0: .1.2.3
                    448:  1: 1
                    449:  2: 2
                    450:  3: 3
                    451:     A.12.123.0
                    452:  0: A.12.123.0
                    453:  1: 12
                    454:  2: 123
                    455:  3: 0
                    456:     *** Failers
                    457: No match
                    458:     .1.2.3333
                    459: No match
                    460:     1.2.3
                    461: No match
                    462:     1234.2.3
                    463: No match
                    464: 
                    465: /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
                    466:     1 IN SOA non-sp1 non-sp2(
                    467:  0: 1 IN SOA non-sp1 non-sp2(
                    468:  1: 1
                    469:  2: non-sp1
                    470:  3: non-sp2
                    471:     1    IN    SOA    non-sp1    non-sp2   (
                    472:  0: 1    IN    SOA    non-sp1    non-sp2   (
                    473:  1: 1
                    474:  2: non-sp1
                    475:  3: non-sp2
                    476:     *** Failers
                    477: No match
                    478:     1IN SOA non-sp1 non-sp2(
                    479: No match
                    480: 
                    481: /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
                    482:     a.
                    483:  0: a.
                    484:     Z.
                    485:  0: Z.
                    486:     2.
                    487:  0: 2.
                    488:     ab-c.pq-r.
                    489:  0: ab-c.pq-r.
                    490:  1: .pq-r
                    491:     sxk.zzz.ac.uk.
                    492:  0: sxk.zzz.ac.uk.
                    493:  1: .uk
                    494:     x-.y-.
                    495:  0: x-.y-.
                    496:  1: .y-
                    497:     *** Failers
                    498: No match
                    499:     -abc.peq.
                    500: No match
                    501: 
                    502: /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
                    503:     *.a
                    504:  0: *.a
                    505:     *.b0-a
                    506:  0: *.b0-a
                    507:  1: 0-a
                    508:     *.c3-b.c
                    509:  0: *.c3-b.c
                    510:  1: 3-b
                    511:  2: .c
                    512:     *.c-a.b-c
                    513:  0: *.c-a.b-c
                    514:  1: -a
                    515:  2: .b-c
                    516:  3: -c
                    517:     *** Failers
                    518: No match
                    519:     *.0
                    520: No match
                    521:     *.a-
                    522: No match
                    523:     *.a-b.c-
                    524: No match
                    525:     *.c-a.0-c
                    526: No match
                    527: 
                    528: /^(?=ab(de))(abd)(e)/
                    529:     abde
                    530:  0: abde
                    531:  1: de
                    532:  2: abd
                    533:  3: e
                    534: 
                    535: /^(?!(ab)de|x)(abd)(f)/
                    536:     abdf
                    537:  0: abdf
                    538:  1: <unset>
                    539:  2: abd
                    540:  3: f
                    541: 
                    542: /^(?=(ab(cd)))(ab)/
                    543:     abcd
                    544:  0: ab
                    545:  1: abcd
                    546:  2: cd
                    547:  3: ab
                    548: 
                    549: /^[\da-f](\.[\da-f])*$/i
                    550:     a.b.c.d
                    551:  0: a.b.c.d
                    552:  1: .d
                    553:     A.B.C.D
                    554:  0: A.B.C.D
                    555:  1: .D
                    556:     a.b.c.1.2.3.C
                    557:  0: a.b.c.1.2.3.C
                    558:  1: .C
                    559: 
                    560: /^\".*\"\s*(;.*)?$/
                    561:     \"1234\"
                    562:  0: "1234"
                    563:     \"abcd\" ;
                    564:  0: "abcd" ;
                    565:  1: ;
                    566:     \"\" ; rhubarb
                    567:  0: "" ; rhubarb
                    568:  1: ; rhubarb
                    569:     *** Failers
                    570: No match
                    571:     \"1234\" : things
                    572: No match
                    573: 
                    574: /^$/
                    575:     \
                    576:  0: 
                    577:     *** Failers
                    578: No match
                    579: 
                    580: /   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
                    581:     ab c
                    582:  0: ab c
                    583:     *** Failers
                    584: No match
                    585:     abc
                    586: No match
                    587:     ab cde
                    588: No match
                    589: 
                    590: /(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
                    591:     ab c
                    592:  0: ab c
                    593:     *** Failers
                    594: No match
                    595:     abc
                    596: No match
                    597:     ab cde
                    598: No match
                    599: 
                    600: /^   a\ b[c ]d       $/x
                    601:     a bcd
                    602:  0: a bcd
                    603:     a b d
                    604:  0: a b d
                    605:     *** Failers
                    606: No match
                    607:     abcd
                    608: No match
                    609:     ab d
                    610: No match
                    611: 
                    612: /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
                    613:     abcdefhijklm
                    614:  0: abcdefhijklm
                    615:  1: abc
                    616:  2: bc
                    617:  3: c
                    618:  4: def
                    619:  5: ef
                    620:  6: f
                    621:  7: hij
                    622:  8: ij
                    623:  9: j
                    624: 10: klm
                    625: 11: lm
                    626: 12: m
                    627: 
                    628: /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
                    629:     abcdefhijklm
                    630:  0: abcdefhijklm
                    631:  1: bc
                    632:  2: c
                    633:  3: ef
                    634:  4: f
                    635:  5: ij
                    636:  6: j
                    637:  7: lm
                    638:  8: m
                    639: 
                    640: /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
                    641:     a+ Z0+\x08\n\x1d\x12
                    642:  0: a+ Z0+\x08\x0a\x1d\x12
                    643: 
                    644: /^[.^$|()*+?{,}]+/
                    645:     .^\$(*+)|{?,?}
                    646:  0: .^$(*+)|{?,?}
                    647: 
                    648: /^a*\w/
                    649:     z
                    650:  0: z
                    651:     az
                    652:  0: az
                    653:     aaaz
                    654:  0: aaaz
                    655:     a
                    656:  0: a
                    657:     aa
                    658:  0: aa
                    659:     aaaa
                    660:  0: aaaa
                    661:     a+
                    662:  0: a
                    663:     aa+
                    664:  0: aa
                    665: 
                    666: /^a*?\w/
                    667:     z
                    668:  0: z
                    669:     az
                    670:  0: a
                    671:     aaaz
                    672:  0: a
                    673:     a
                    674:  0: a
                    675:     aa
                    676:  0: a
                    677:     aaaa
                    678:  0: a
                    679:     a+
                    680:  0: a
                    681:     aa+
                    682:  0: a
                    683: 
                    684: /^a+\w/
                    685:     az
                    686:  0: az
                    687:     aaaz
                    688:  0: aaaz
                    689:     aa
                    690:  0: aa
                    691:     aaaa
                    692:  0: aaaa
                    693:     aa+
                    694:  0: aa
                    695: 
                    696: /^a+?\w/
                    697:     az
                    698:  0: az
                    699:     aaaz
                    700:  0: aa
                    701:     aa
                    702:  0: aa
                    703:     aaaa
                    704:  0: aa
                    705:     aa+
                    706:  0: aa
                    707: 
                    708: /^\d{8}\w{2,}/
                    709:     1234567890
                    710:  0: 1234567890
                    711:     12345678ab
                    712:  0: 12345678ab
                    713:     12345678__
                    714:  0: 12345678__
                    715:     *** Failers
                    716: No match
                    717:     1234567
                    718: No match
                    719: 
                    720: /^[aeiou\d]{4,5}$/
                    721:     uoie
                    722:  0: uoie
                    723:     1234
                    724:  0: 1234
                    725:     12345
                    726:  0: 12345
                    727:     aaaaa
                    728:  0: aaaaa
                    729:     *** Failers
                    730: No match
                    731:     123456
                    732: No match
                    733: 
                    734: /^[aeiou\d]{4,5}?/
                    735:     uoie
                    736:  0: uoie
                    737:     1234
                    738:  0: 1234
                    739:     12345
                    740:  0: 1234
                    741:     aaaaa
                    742:  0: aaaa
                    743:     123456
                    744:  0: 1234
                    745: 
                    746: /\A(abc|def)=(\1){2,3}\Z/
                    747:     abc=abcabc
                    748:  0: abc=abcabc
                    749:  1: abc
                    750:  2: abc
                    751:     def=defdefdef
                    752:  0: def=defdefdef
                    753:  1: def
                    754:  2: def
                    755:     *** Failers
                    756: No match
                    757:     abc=defdef
                    758: No match
                    759: 
                    760: /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
                    761:     abcdefghijkcda2
                    762:  0: abcdefghijkcda2
                    763:  1: a
                    764:  2: b
                    765:  3: c
                    766:  4: d
                    767:  5: e
                    768:  6: f
                    769:  7: g
                    770:  8: h
                    771:  9: i
                    772: 10: j
                    773: 11: k
                    774: 12: cd
                    775:     abcdefghijkkkkcda2
                    776:  0: abcdefghijkkkkcda2
                    777:  1: a
                    778:  2: b
                    779:  3: c
                    780:  4: d
                    781:  5: e
                    782:  6: f
                    783:  7: g
                    784:  8: h
                    785:  9: i
                    786: 10: j
                    787: 11: k
                    788: 12: cd
                    789: 
                    790: /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
                    791:     cataract cataract23
                    792:  0: cataract cataract23
                    793:  1: cataract
                    794:  2: aract
                    795:  3: ract
                    796:  4: 
                    797:  5: 3
                    798:     catatonic catatonic23
                    799:  0: catatonic catatonic23
                    800:  1: catatonic
                    801:  2: atonic
                    802:  3: tonic
                    803:  4: 
                    804:  5: 3
                    805:     caterpillar caterpillar23
                    806:  0: caterpillar caterpillar23
                    807:  1: caterpillar
                    808:  2: erpillar
                    809:  3: <unset>
                    810:  4: 
                    811:  5: 3
                    812: 
                    813: 
                    814: /^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]/
                    815:     From abcd  Mon Sep 01 12:33:02 1997
                    816:  0: From abcd  Mon Sep 01 12:33
                    817:  1: abcd
                    818: 
                    819: /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
                    820:     From abcd  Mon Sep 01 12:33:02 1997
                    821:  0: From abcd  Mon Sep 01 12:33
                    822:  1: Sep 
                    823:     From abcd  Mon Sep  1 12:33:02 1997
                    824:  0: From abcd  Mon Sep  1 12:33
                    825:  1: Sep  
                    826:     *** Failers
                    827: No match
                    828:     From abcd  Sep 01 12:33:02 1997
                    829: No match
                    830: 
                    831: /^12.34/s
                    832:     12\n34
                    833:  0: 12\x0a34
                    834:     12\r34
                    835:  0: 12\x0d34
                    836: 
                    837: /\w+(?=\t)/
                    838:     the quick brown\t fox
                    839:  0: brown
                    840: 
                    841: /foo(?!bar)(.*)/
                    842:     foobar is foolish see?
                    843:  0: foolish see?
                    844:  1: lish see?
                    845: 
                    846: /(?:(?!foo)...|^.{0,2})bar(.*)/
                    847:     foobar crowbar etc
                    848:  0: rowbar etc
                    849:  1:  etc
                    850:     barrel
                    851:  0: barrel
                    852:  1: rel
                    853:     2barrel
                    854:  0: 2barrel
                    855:  1: rel
                    856:     A barrel
                    857:  0: A barrel
                    858:  1: rel
                    859: 
                    860: /^(\D*)(?=\d)(?!123)/
                    861:     abc456
                    862:  0: abc
                    863:  1: abc
                    864:     *** Failers
                    865: No match
                    866:     abc123
                    867: No match
                    868: 
                    869: /^1234(?# test newlines
                    870:   inside)/
                    871:     1234
                    872:  0: 1234
                    873: 
                    874: /^1234 #comment in extended re
                    875:   /x
                    876:     1234
                    877:  0: 1234
                    878: 
                    879: /#rhubarb
                    880:   abcd/x
                    881:     abcd
                    882:  0: abcd
                    883: 
                    884: /^abcd#rhubarb/x
                    885:     abcd
                    886:  0: abcd
                    887: 
                    888: /^(a)\1{2,3}(.)/
                    889:     aaab
                    890:  0: aaab
                    891:  1: a
                    892:  2: b
                    893:     aaaab
                    894:  0: aaaab
                    895:  1: a
                    896:  2: b
                    897:     aaaaab
                    898:  0: aaaaa
                    899:  1: a
                    900:  2: a
                    901:     aaaaaab
                    902:  0: aaaaa
                    903:  1: a
                    904:  2: a
                    905: 
                    906: /(?!^)abc/
                    907:     the abc
                    908:  0: abc
                    909:     *** Failers
                    910: No match
                    911:     abc
                    912: No match
                    913: 
                    914: /(?=^)abc/
                    915:     abc
                    916:  0: abc
                    917:     *** Failers
                    918: No match
                    919:     the abc
                    920: No match
                    921: 
                    922: /^[ab]{1,3}(ab*|b)/
                    923:     aabbbbb
                    924:  0: aabb
                    925:  1: b
                    926: 
                    927: /^[ab]{1,3}?(ab*|b)/
                    928:     aabbbbb
                    929:  0: aabbbbb
                    930:  1: abbbbb
                    931: 
                    932: /^[ab]{1,3}?(ab*?|b)/
                    933:     aabbbbb
                    934:  0: aa
                    935:  1: a
                    936: 
                    937: /^[ab]{1,3}(ab*?|b)/
                    938:     aabbbbb
                    939:  0: aabb
                    940:  1: b
                    941: 
                    942: /  (?: [\040\t] |  \(
                    943: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                    944: \)  )*                          # optional leading comment
                    945: (?:    (?:
                    946: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                    947: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                    948: |
                    949: " (?:                      # opening quote...
                    950: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
                    951: |                     #    or
                    952: \\ [^\x80-\xff]           #   Escaped something (something != CR)
                    953: )* "  # closing quote
                    954: )                    # initial word
                    955: (?:  (?: [\040\t] |  \(
                    956: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                    957: \)  )*  \.  (?: [\040\t] |  \(
                    958: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                    959: \)  )*   (?:
                    960: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                    961: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                    962: |
                    963: " (?:                      # opening quote...
                    964: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
                    965: |                     #    or
                    966: \\ [^\x80-\xff]           #   Escaped something (something != CR)
                    967: )* "  # closing quote
                    968: )  )* # further okay, if led by a period
                    969: (?: [\040\t] |  \(
                    970: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                    971: \)  )*  @  (?: [\040\t] |  \(
                    972: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                    973: \)  )*    (?:
                    974: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                    975: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                    976: |   \[                         # [
                    977: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                    978: \]                        #           ]
                    979: )                           # initial subdomain
                    980: (?:                                  #
                    981: (?: [\040\t] |  \(
                    982: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                    983: \)  )*  \.                        # if led by a period...
                    984: (?: [\040\t] |  \(
                    985: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                    986: \)  )*   (?:
                    987: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                    988: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                    989: |   \[                         # [
                    990: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                    991: \]                        #           ]
                    992: )                     #   ...further okay
                    993: )*
                    994: # address
                    995: |                     #  or
                    996: (?:
                    997: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                    998: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                    999: |
                   1000: " (?:                      # opening quote...
                   1001: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
                   1002: |                     #    or
                   1003: \\ [^\x80-\xff]           #   Escaped something (something != CR)
                   1004: )* "  # closing quote
                   1005: )             # one word, optionally followed by....
                   1006: (?:
                   1007: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
                   1008: \(
                   1009: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1010: \)       |  # comments, or...
                   1011: 
                   1012: " (?:                      # opening quote...
                   1013: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
                   1014: |                     #    or
                   1015: \\ [^\x80-\xff]           #   Escaped something (something != CR)
                   1016: )* "  # closing quote
                   1017: # quoted strings
                   1018: )*
                   1019: <  (?: [\040\t] |  \(
                   1020: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1021: \)  )*                     # leading <
                   1022: (?:  @  (?: [\040\t] |  \(
                   1023: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1024: \)  )*    (?:
                   1025: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1026: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1027: |   \[                         # [
                   1028: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                   1029: \]                        #           ]
                   1030: )                           # initial subdomain
                   1031: (?:                                  #
                   1032: (?: [\040\t] |  \(
                   1033: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1034: \)  )*  \.                        # if led by a period...
                   1035: (?: [\040\t] |  \(
                   1036: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1037: \)  )*   (?:
                   1038: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1039: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1040: |   \[                         # [
                   1041: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                   1042: \]                        #           ]
                   1043: )                     #   ...further okay
                   1044: )*
                   1045: 
                   1046: (?:  (?: [\040\t] |  \(
                   1047: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1048: \)  )*  ,  (?: [\040\t] |  \(
                   1049: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1050: \)  )*  @  (?: [\040\t] |  \(
                   1051: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1052: \)  )*    (?:
                   1053: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1054: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1055: |   \[                         # [
                   1056: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                   1057: \]                        #           ]
                   1058: )                           # initial subdomain
                   1059: (?:                                  #
                   1060: (?: [\040\t] |  \(
                   1061: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1062: \)  )*  \.                        # if led by a period...
                   1063: (?: [\040\t] |  \(
                   1064: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1065: \)  )*   (?:
                   1066: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1067: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1068: |   \[                         # [
                   1069: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                   1070: \]                        #           ]
                   1071: )                     #   ...further okay
                   1072: )*
                   1073: )* # further okay, if led by comma
                   1074: :                                # closing colon
                   1075: (?: [\040\t] |  \(
                   1076: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1077: \)  )*  )? #       optional route
                   1078: (?:
                   1079: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1080: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1081: |
                   1082: " (?:                      # opening quote...
                   1083: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
                   1084: |                     #    or
                   1085: \\ [^\x80-\xff]           #   Escaped something (something != CR)
                   1086: )* "  # closing quote
                   1087: )                    # initial word
                   1088: (?:  (?: [\040\t] |  \(
                   1089: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1090: \)  )*  \.  (?: [\040\t] |  \(
                   1091: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1092: \)  )*   (?:
                   1093: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1094: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1095: |
                   1096: " (?:                      # opening quote...
                   1097: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
                   1098: |                     #    or
                   1099: \\ [^\x80-\xff]           #   Escaped something (something != CR)
                   1100: )* "  # closing quote
                   1101: )  )* # further okay, if led by a period
                   1102: (?: [\040\t] |  \(
                   1103: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1104: \)  )*  @  (?: [\040\t] |  \(
                   1105: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1106: \)  )*    (?:
                   1107: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1108: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1109: |   \[                         # [
                   1110: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                   1111: \]                        #           ]
                   1112: )                           # initial subdomain
                   1113: (?:                                  #
                   1114: (?: [\040\t] |  \(
                   1115: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1116: \)  )*  \.                        # if led by a period...
                   1117: (?: [\040\t] |  \(
                   1118: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1119: \)  )*   (?:
                   1120: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1121: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1122: |   \[                         # [
                   1123: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                   1124: \]                        #           ]
                   1125: )                     #   ...further okay
                   1126: )*
                   1127: #       address spec
                   1128: (?: [\040\t] |  \(
                   1129: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1130: \)  )*  > #                  trailing >
                   1131: # name and address
                   1132: )  (?: [\040\t] |  \(
                   1133: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1134: \)  )*                       # optional trailing comment
                   1135: /x
                   1136:     Alan Other <user\@dom.ain>
                   1137:  0: Alan Other <user@dom.ain>
                   1138:     <user\@dom.ain>
                   1139:  0: user@dom.ain
                   1140:     user\@dom.ain
                   1141:  0: user@dom.ain
                   1142:     \"A. Other\" <user.1234\@dom.ain> (a comment)
                   1143:  0: "A. Other" <user.1234@dom.ain> (a comment)
                   1144:     A. Other <user.1234\@dom.ain> (a comment)
                   1145:  0:  Other <user.1234@dom.ain> (a comment)
                   1146:     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
                   1147:  0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
                   1148:     A missing angle <user\@some.where
                   1149:  0: user@some.where
                   1150:     *** Failers
                   1151: No match
                   1152:     The quick brown fox
                   1153: No match
                   1154: 
                   1155: /[\040\t]*                    # Nab whitespace.
                   1156: (?:
                   1157: \(                              #  (
                   1158: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1159: (?:                                 #       (
                   1160: (?:  \\ [^\x80-\xff]  |
                   1161: \(                            #  (
                   1162: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1163: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1164: \)                           #                       )
                   1165: )    #         special
                   1166: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1167: )*                                  #            )*
                   1168: \)                             #                )
                   1169: [\040\t]* )*    # If comment found, allow more spaces.
                   1170: # optional leading comment
                   1171: (?:
                   1172: (?:
                   1173: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1174: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1175: # Atom
                   1176: |                       #  or
                   1177: "                                     # "
                   1178: [^\\\x80-\xff\n\015"] *                            #   normal
                   1179: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
                   1180: "                                     #        "
                   1181: # Quoted string
                   1182: )
                   1183: [\040\t]*                    # Nab whitespace.
                   1184: (?:
                   1185: \(                              #  (
                   1186: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1187: (?:                                 #       (
                   1188: (?:  \\ [^\x80-\xff]  |
                   1189: \(                            #  (
                   1190: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1191: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1192: \)                           #                       )
                   1193: )    #         special
                   1194: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1195: )*                                  #            )*
                   1196: \)                             #                )
                   1197: [\040\t]* )*    # If comment found, allow more spaces.
                   1198: (?:
                   1199: \.
                   1200: [\040\t]*                    # Nab whitespace.
                   1201: (?:
                   1202: \(                              #  (
                   1203: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1204: (?:                                 #       (
                   1205: (?:  \\ [^\x80-\xff]  |
                   1206: \(                            #  (
                   1207: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1208: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1209: \)                           #                       )
                   1210: )    #         special
                   1211: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1212: )*                                  #            )*
                   1213: \)                             #                )
                   1214: [\040\t]* )*    # If comment found, allow more spaces.
                   1215: (?:
                   1216: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1217: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1218: # Atom
                   1219: |                       #  or
                   1220: "                                     # "
                   1221: [^\\\x80-\xff\n\015"] *                            #   normal
                   1222: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
                   1223: "                                     #        "
                   1224: # Quoted string
                   1225: )
                   1226: [\040\t]*                    # Nab whitespace.
                   1227: (?:
                   1228: \(                              #  (
                   1229: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1230: (?:                                 #       (
                   1231: (?:  \\ [^\x80-\xff]  |
                   1232: \(                            #  (
                   1233: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1234: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1235: \)                           #                       )
                   1236: )    #         special
                   1237: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1238: )*                                  #            )*
                   1239: \)                             #                )
                   1240: [\040\t]* )*    # If comment found, allow more spaces.
                   1241: # additional words
                   1242: )*
                   1243: @
                   1244: [\040\t]*                    # Nab whitespace.
                   1245: (?:
                   1246: \(                              #  (
                   1247: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1248: (?:                                 #       (
                   1249: (?:  \\ [^\x80-\xff]  |
                   1250: \(                            #  (
                   1251: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1252: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1253: \)                           #                       )
                   1254: )    #         special
                   1255: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1256: )*                                  #            )*
                   1257: \)                             #                )
                   1258: [\040\t]* )*    # If comment found, allow more spaces.
                   1259: (?:
                   1260: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1261: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1262: |
                   1263: \[                            # [
                   1264: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1265: \]                           #           ]
                   1266: )
                   1267: [\040\t]*                    # Nab whitespace.
                   1268: (?:
                   1269: \(                              #  (
                   1270: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1271: (?:                                 #       (
                   1272: (?:  \\ [^\x80-\xff]  |
                   1273: \(                            #  (
                   1274: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1275: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1276: \)                           #                       )
                   1277: )    #         special
                   1278: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1279: )*                                  #            )*
                   1280: \)                             #                )
                   1281: [\040\t]* )*    # If comment found, allow more spaces.
                   1282: # optional trailing comments
                   1283: (?:
                   1284: \.
                   1285: [\040\t]*                    # Nab whitespace.
                   1286: (?:
                   1287: \(                              #  (
                   1288: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1289: (?:                                 #       (
                   1290: (?:  \\ [^\x80-\xff]  |
                   1291: \(                            #  (
                   1292: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1293: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1294: \)                           #                       )
                   1295: )    #         special
                   1296: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1297: )*                                  #            )*
                   1298: \)                             #                )
                   1299: [\040\t]* )*    # If comment found, allow more spaces.
                   1300: (?:
                   1301: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1302: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1303: |
                   1304: \[                            # [
                   1305: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1306: \]                           #           ]
                   1307: )
                   1308: [\040\t]*                    # Nab whitespace.
                   1309: (?:
                   1310: \(                              #  (
                   1311: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1312: (?:                                 #       (
                   1313: (?:  \\ [^\x80-\xff]  |
                   1314: \(                            #  (
                   1315: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1316: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1317: \)                           #                       )
                   1318: )    #         special
                   1319: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1320: )*                                  #            )*
                   1321: \)                             #                )
                   1322: [\040\t]* )*    # If comment found, allow more spaces.
                   1323: # optional trailing comments
                   1324: )*
                   1325: # address
                   1326: |                             #  or
                   1327: (?:
                   1328: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1329: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1330: # Atom
                   1331: |                       #  or
                   1332: "                                     # "
                   1333: [^\\\x80-\xff\n\015"] *                            #   normal
                   1334: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
                   1335: "                                     #        "
                   1336: # Quoted string
                   1337: )
                   1338: # leading word
                   1339: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
                   1340: (?:
                   1341: (?:
                   1342: \(                              #  (
                   1343: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1344: (?:                                 #       (
                   1345: (?:  \\ [^\x80-\xff]  |
                   1346: \(                            #  (
                   1347: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1348: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1349: \)                           #                       )
                   1350: )    #         special
                   1351: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1352: )*                                  #            )*
                   1353: \)                             #                )
                   1354: |
                   1355: "                                     # "
                   1356: [^\\\x80-\xff\n\015"] *                            #   normal
                   1357: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
                   1358: "                                     #        "
                   1359: ) # "special" comment or quoted string
                   1360: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
                   1361: )*
                   1362: <
                   1363: [\040\t]*                    # Nab whitespace.
                   1364: (?:
                   1365: \(                              #  (
                   1366: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1367: (?:                                 #       (
                   1368: (?:  \\ [^\x80-\xff]  |
                   1369: \(                            #  (
                   1370: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1371: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1372: \)                           #                       )
                   1373: )    #         special
                   1374: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1375: )*                                  #            )*
                   1376: \)                             #                )
                   1377: [\040\t]* )*    # If comment found, allow more spaces.
                   1378: # <
                   1379: (?:
                   1380: @
                   1381: [\040\t]*                    # Nab whitespace.
                   1382: (?:
                   1383: \(                              #  (
                   1384: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1385: (?:                                 #       (
                   1386: (?:  \\ [^\x80-\xff]  |
                   1387: \(                            #  (
                   1388: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1389: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1390: \)                           #                       )
                   1391: )    #         special
                   1392: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1393: )*                                  #            )*
                   1394: \)                             #                )
                   1395: [\040\t]* )*    # If comment found, allow more spaces.
                   1396: (?:
                   1397: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1398: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1399: |
                   1400: \[                            # [
                   1401: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1402: \]                           #           ]
                   1403: )
                   1404: [\040\t]*                    # Nab whitespace.
                   1405: (?:
                   1406: \(                              #  (
                   1407: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1408: (?:                                 #       (
                   1409: (?:  \\ [^\x80-\xff]  |
                   1410: \(                            #  (
                   1411: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1412: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1413: \)                           #                       )
                   1414: )    #         special
                   1415: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1416: )*                                  #            )*
                   1417: \)                             #                )
                   1418: [\040\t]* )*    # If comment found, allow more spaces.
                   1419: # optional trailing comments
                   1420: (?:
                   1421: \.
                   1422: [\040\t]*                    # Nab whitespace.
                   1423: (?:
                   1424: \(                              #  (
                   1425: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1426: (?:                                 #       (
                   1427: (?:  \\ [^\x80-\xff]  |
                   1428: \(                            #  (
                   1429: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1430: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1431: \)                           #                       )
                   1432: )    #         special
                   1433: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1434: )*                                  #            )*
                   1435: \)                             #                )
                   1436: [\040\t]* )*    # If comment found, allow more spaces.
                   1437: (?:
                   1438: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1439: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1440: |
                   1441: \[                            # [
                   1442: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1443: \]                           #           ]
                   1444: )
                   1445: [\040\t]*                    # Nab whitespace.
                   1446: (?:
                   1447: \(                              #  (
                   1448: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1449: (?:                                 #       (
                   1450: (?:  \\ [^\x80-\xff]  |
                   1451: \(                            #  (
                   1452: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1453: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1454: \)                           #                       )
                   1455: )    #         special
                   1456: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1457: )*                                  #            )*
                   1458: \)                             #                )
                   1459: [\040\t]* )*    # If comment found, allow more spaces.
                   1460: # optional trailing comments
                   1461: )*
                   1462: (?: ,
                   1463: [\040\t]*                    # Nab whitespace.
                   1464: (?:
                   1465: \(                              #  (
                   1466: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1467: (?:                                 #       (
                   1468: (?:  \\ [^\x80-\xff]  |
                   1469: \(                            #  (
                   1470: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1471: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1472: \)                           #                       )
                   1473: )    #         special
                   1474: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1475: )*                                  #            )*
                   1476: \)                             #                )
                   1477: [\040\t]* )*    # If comment found, allow more spaces.
                   1478: @
                   1479: [\040\t]*                    # Nab whitespace.
                   1480: (?:
                   1481: \(                              #  (
                   1482: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1483: (?:                                 #       (
                   1484: (?:  \\ [^\x80-\xff]  |
                   1485: \(                            #  (
                   1486: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1487: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1488: \)                           #                       )
                   1489: )    #         special
                   1490: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1491: )*                                  #            )*
                   1492: \)                             #                )
                   1493: [\040\t]* )*    # If comment found, allow more spaces.
                   1494: (?:
                   1495: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1496: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1497: |
                   1498: \[                            # [
                   1499: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1500: \]                           #           ]
                   1501: )
                   1502: [\040\t]*                    # Nab whitespace.
                   1503: (?:
                   1504: \(                              #  (
                   1505: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1506: (?:                                 #       (
                   1507: (?:  \\ [^\x80-\xff]  |
                   1508: \(                            #  (
                   1509: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1510: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1511: \)                           #                       )
                   1512: )    #         special
                   1513: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1514: )*                                  #            )*
                   1515: \)                             #                )
                   1516: [\040\t]* )*    # If comment found, allow more spaces.
                   1517: # optional trailing comments
                   1518: (?:
                   1519: \.
                   1520: [\040\t]*                    # Nab whitespace.
                   1521: (?:
                   1522: \(                              #  (
                   1523: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1524: (?:                                 #       (
                   1525: (?:  \\ [^\x80-\xff]  |
                   1526: \(                            #  (
                   1527: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1528: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1529: \)                           #                       )
                   1530: )    #         special
                   1531: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1532: )*                                  #            )*
                   1533: \)                             #                )
                   1534: [\040\t]* )*    # If comment found, allow more spaces.
                   1535: (?:
                   1536: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1537: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1538: |
                   1539: \[                            # [
                   1540: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1541: \]                           #           ]
                   1542: )
                   1543: [\040\t]*                    # Nab whitespace.
                   1544: (?:
                   1545: \(                              #  (
                   1546: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1547: (?:                                 #       (
                   1548: (?:  \\ [^\x80-\xff]  |
                   1549: \(                            #  (
                   1550: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1551: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1552: \)                           #                       )
                   1553: )    #         special
                   1554: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1555: )*                                  #            )*
                   1556: \)                             #                )
                   1557: [\040\t]* )*    # If comment found, allow more spaces.
                   1558: # optional trailing comments
                   1559: )*
                   1560: )*  # additional domains
                   1561: :
                   1562: [\040\t]*                    # Nab whitespace.
                   1563: (?:
                   1564: \(                              #  (
                   1565: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1566: (?:                                 #       (
                   1567: (?:  \\ [^\x80-\xff]  |
                   1568: \(                            #  (
                   1569: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1570: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1571: \)                           #                       )
                   1572: )    #         special
                   1573: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1574: )*                                  #            )*
                   1575: \)                             #                )
                   1576: [\040\t]* )*    # If comment found, allow more spaces.
                   1577: # optional trailing comments
                   1578: )?     #       optional route
                   1579: (?:
                   1580: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1581: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1582: # Atom
                   1583: |                       #  or
                   1584: "                                     # "
                   1585: [^\\\x80-\xff\n\015"] *                            #   normal
                   1586: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
                   1587: "                                     #        "
                   1588: # Quoted string
                   1589: )
                   1590: [\040\t]*                    # Nab whitespace.
                   1591: (?:
                   1592: \(                              #  (
                   1593: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1594: (?:                                 #       (
                   1595: (?:  \\ [^\x80-\xff]  |
                   1596: \(                            #  (
                   1597: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1598: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1599: \)                           #                       )
                   1600: )    #         special
                   1601: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1602: )*                                  #            )*
                   1603: \)                             #                )
                   1604: [\040\t]* )*    # If comment found, allow more spaces.
                   1605: (?:
                   1606: \.
                   1607: [\040\t]*                    # Nab whitespace.
                   1608: (?:
                   1609: \(                              #  (
                   1610: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1611: (?:                                 #       (
                   1612: (?:  \\ [^\x80-\xff]  |
                   1613: \(                            #  (
                   1614: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1615: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1616: \)                           #                       )
                   1617: )    #         special
                   1618: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1619: )*                                  #            )*
                   1620: \)                             #                )
                   1621: [\040\t]* )*    # If comment found, allow more spaces.
                   1622: (?:
                   1623: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1624: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1625: # Atom
                   1626: |                       #  or
                   1627: "                                     # "
                   1628: [^\\\x80-\xff\n\015"] *                            #   normal
                   1629: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
                   1630: "                                     #        "
                   1631: # Quoted string
                   1632: )
                   1633: [\040\t]*                    # Nab whitespace.
                   1634: (?:
                   1635: \(                              #  (
                   1636: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1637: (?:                                 #       (
                   1638: (?:  \\ [^\x80-\xff]  |
                   1639: \(                            #  (
                   1640: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1641: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1642: \)                           #                       )
                   1643: )    #         special
                   1644: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1645: )*                                  #            )*
                   1646: \)                             #                )
                   1647: [\040\t]* )*    # If comment found, allow more spaces.
                   1648: # additional words
                   1649: )*
                   1650: @
                   1651: [\040\t]*                    # Nab whitespace.
                   1652: (?:
                   1653: \(                              #  (
                   1654: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1655: (?:                                 #       (
                   1656: (?:  \\ [^\x80-\xff]  |
                   1657: \(                            #  (
                   1658: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1659: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1660: \)                           #                       )
                   1661: )    #         special
                   1662: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1663: )*                                  #            )*
                   1664: \)                             #                )
                   1665: [\040\t]* )*    # If comment found, allow more spaces.
                   1666: (?:
                   1667: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1668: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1669: |
                   1670: \[                            # [
                   1671: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1672: \]                           #           ]
                   1673: )
                   1674: [\040\t]*                    # Nab whitespace.
                   1675: (?:
                   1676: \(                              #  (
                   1677: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1678: (?:                                 #       (
                   1679: (?:  \\ [^\x80-\xff]  |
                   1680: \(                            #  (
                   1681: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1682: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1683: \)                           #                       )
                   1684: )    #         special
                   1685: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1686: )*                                  #            )*
                   1687: \)                             #                )
                   1688: [\040\t]* )*    # If comment found, allow more spaces.
                   1689: # optional trailing comments
                   1690: (?:
                   1691: \.
                   1692: [\040\t]*                    # Nab whitespace.
                   1693: (?:
                   1694: \(                              #  (
                   1695: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1696: (?:                                 #       (
                   1697: (?:  \\ [^\x80-\xff]  |
                   1698: \(                            #  (
                   1699: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1700: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1701: \)                           #                       )
                   1702: )    #         special
                   1703: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1704: )*                                  #            )*
                   1705: \)                             #                )
                   1706: [\040\t]* )*    # If comment found, allow more spaces.
                   1707: (?:
                   1708: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1709: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1710: |
                   1711: \[                            # [
                   1712: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1713: \]                           #           ]
                   1714: )
                   1715: [\040\t]*                    # Nab whitespace.
                   1716: (?:
                   1717: \(                              #  (
                   1718: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1719: (?:                                 #       (
                   1720: (?:  \\ [^\x80-\xff]  |
                   1721: \(                            #  (
                   1722: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1723: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1724: \)                           #                       )
                   1725: )    #         special
                   1726: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1727: )*                                  #            )*
                   1728: \)                             #                )
                   1729: [\040\t]* )*    # If comment found, allow more spaces.
                   1730: # optional trailing comments
                   1731: )*
                   1732: #       address spec
                   1733: >                    #                 >
                   1734: # name and address
                   1735: )
                   1736: /x
                   1737:     Alan Other <user\@dom.ain>
                   1738:  0: Alan Other <user@dom.ain>
                   1739:     <user\@dom.ain>
                   1740:  0: user@dom.ain
                   1741:     user\@dom.ain
                   1742:  0: user@dom.ain
                   1743:     \"A. Other\" <user.1234\@dom.ain> (a comment)
                   1744:  0: "A. Other" <user.1234@dom.ain>
                   1745:     A. Other <user.1234\@dom.ain> (a comment)
                   1746:  0:  Other <user.1234@dom.ain>
                   1747:     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
                   1748:  0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
                   1749:     A missing angle <user\@some.where
                   1750:  0: user@some.where
                   1751:     *** Failers
                   1752: No match
                   1753:     The quick brown fox
                   1754: No match
                   1755: 
                   1756: /abc\0def\00pqr\000xyz\0000AB/
                   1757:     abc\0def\00pqr\000xyz\0000AB
                   1758:  0: abc\x00def\x00pqr\x00xyz\x000AB
                   1759:     abc456 abc\0def\00pqr\000xyz\0000ABCDE
                   1760:  0: abc\x00def\x00pqr\x00xyz\x000AB
                   1761: 
                   1762: /abc\x0def\x00pqr\x000xyz\x0000AB/
                   1763:     abc\x0def\x00pqr\x000xyz\x0000AB
                   1764:  0: abc\x0def\x00pqr\x000xyz\x0000AB
                   1765:     abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
                   1766:  0: abc\x0def\x00pqr\x000xyz\x0000AB
                   1767: 
                   1768: /^[\000-\037]/
                   1769:     \0A
                   1770:  0: \x00
                   1771:     \01B
                   1772:  0: \x01
                   1773:     \037C
                   1774:  0: \x1f
                   1775: 
                   1776: /\0*/
                   1777:     \0\0\0\0
                   1778:  0: \x00\x00\x00\x00
                   1779: 
                   1780: /A\x0{2,3}Z/
                   1781:     The A\x0\x0Z
                   1782:  0: A\x00\x00Z
                   1783:     An A\0\x0\0Z
                   1784:  0: A\x00\x00\x00Z
                   1785:     *** Failers
                   1786: No match
                   1787:     A\0Z
                   1788: No match
                   1789:     A\0\x0\0\x0Z
                   1790: No match
                   1791: 
                   1792: /^(cow|)\1(bell)/
                   1793:     cowcowbell
                   1794:  0: cowcowbell
                   1795:  1: cow
                   1796:  2: bell
                   1797:     bell
                   1798:  0: bell
                   1799:  1: 
                   1800:  2: bell
                   1801:     *** Failers
                   1802: No match
                   1803:     cowbell
                   1804: No match
                   1805: 
                   1806: /^\s/
                   1807:     \040abc
                   1808:  0:  
                   1809:     \x0cabc
                   1810:  0: \x0c
                   1811:     \nabc
                   1812:  0: \x0a
                   1813:     \rabc
                   1814:  0: \x0d
                   1815:     \tabc
                   1816:  0: \x09
                   1817:     *** Failers
                   1818: No match
                   1819:     abc
                   1820: No match
                   1821: 
                   1822: /^a    b
                   1823:       c/x
                   1824:     abc
                   1825:  0: abc
                   1826: 
                   1827: /^(a|)\1*b/
                   1828:     ab
                   1829:  0: ab
                   1830:  1: a
                   1831:     aaaab
                   1832:  0: aaaab
                   1833:  1: a
                   1834:     b
                   1835:  0: b
                   1836:  1: 
                   1837:     *** Failers
                   1838: No match
                   1839:     acb
                   1840: No match
                   1841: 
                   1842: /^(a|)\1+b/
                   1843:     aab
                   1844:  0: aab
                   1845:  1: a
                   1846:     aaaab
                   1847:  0: aaaab
                   1848:  1: a
                   1849:     b
                   1850:  0: b
                   1851:  1: 
                   1852:     *** Failers
                   1853: No match
                   1854:     ab
                   1855: No match
                   1856: 
                   1857: /^(a|)\1?b/
                   1858:     ab
                   1859:  0: ab
                   1860:  1: a
                   1861:     aab
                   1862:  0: aab
                   1863:  1: a
                   1864:     b
                   1865:  0: b
                   1866:  1: 
                   1867:     *** Failers
                   1868: No match
                   1869:     acb
                   1870: No match
                   1871: 
                   1872: /^(a|)\1{2}b/
                   1873:     aaab
                   1874:  0: aaab
                   1875:  1: a
                   1876:     b
                   1877:  0: b
                   1878:  1: 
                   1879:     *** Failers
                   1880: No match
                   1881:     ab
                   1882: No match
                   1883:     aab
                   1884: No match
                   1885:     aaaab
                   1886: No match
                   1887: 
                   1888: /^(a|)\1{2,3}b/
                   1889:     aaab
                   1890:  0: aaab
                   1891:  1: a
                   1892:     aaaab
                   1893:  0: aaaab
                   1894:  1: a
                   1895:     b
                   1896:  0: b
                   1897:  1: 
                   1898:     *** Failers
                   1899: No match
                   1900:     ab
                   1901: No match
                   1902:     aab
                   1903: No match
                   1904:     aaaaab
                   1905: No match
                   1906: 
                   1907: /ab{1,3}bc/
                   1908:     abbbbc
                   1909:  0: abbbbc
                   1910:     abbbc
                   1911:  0: abbbc
                   1912:     abbc
                   1913:  0: abbc
                   1914:     *** Failers
                   1915: No match
                   1916:     abc
                   1917: No match
                   1918:     abbbbbc
                   1919: No match
                   1920: 
                   1921: /([^.]*)\.([^:]*):[T ]+(.*)/
                   1922:     track1.title:TBlah blah blah
                   1923:  0: track1.title:TBlah blah blah
                   1924:  1: track1
                   1925:  2: title
                   1926:  3: Blah blah blah
                   1927: 
                   1928: /([^.]*)\.([^:]*):[T ]+(.*)/i
                   1929:     track1.title:TBlah blah blah
                   1930:  0: track1.title:TBlah blah blah
                   1931:  1: track1
                   1932:  2: title
                   1933:  3: Blah blah blah
                   1934: 
                   1935: /([^.]*)\.([^:]*):[t ]+(.*)/i
                   1936:     track1.title:TBlah blah blah
                   1937:  0: track1.title:TBlah blah blah
                   1938:  1: track1
                   1939:  2: title
                   1940:  3: Blah blah blah
                   1941: 
                   1942: /^[W-c]+$/
                   1943:     WXY_^abc
                   1944:  0: WXY_^abc
                   1945:     *** Failers
                   1946: No match
                   1947:     wxy
                   1948: No match
                   1949: 
                   1950: /^[W-c]+$/i
                   1951:     WXY_^abc
                   1952:  0: WXY_^abc
                   1953:     wxy_^ABC
                   1954:  0: wxy_^ABC
                   1955: 
                   1956: /^[\x3f-\x5F]+$/i
                   1957:     WXY_^abc
                   1958:  0: WXY_^abc
                   1959:     wxy_^ABC
                   1960:  0: wxy_^ABC
                   1961: 
                   1962: /^abc$/m
                   1963:     abc
                   1964:  0: abc
                   1965:     qqq\nabc
                   1966:  0: abc
                   1967:     abc\nzzz
                   1968:  0: abc
                   1969:     qqq\nabc\nzzz
                   1970:  0: abc
                   1971: 
                   1972: /^abc$/
                   1973:     abc
                   1974:  0: abc
                   1975:     *** Failers
                   1976: No match
                   1977:     qqq\nabc
                   1978: No match
                   1979:     abc\nzzz
                   1980: No match
                   1981:     qqq\nabc\nzzz
                   1982: No match
                   1983: 
                   1984: /\Aabc\Z/m
                   1985:     abc
                   1986:  0: abc
                   1987:     abc\n 
                   1988:  0: abc
                   1989:     *** Failers
                   1990: No match
                   1991:     qqq\nabc
                   1992: No match
                   1993:     abc\nzzz
                   1994: No match
                   1995:     qqq\nabc\nzzz
                   1996: No match
                   1997:     
                   1998: /\A(.)*\Z/s
                   1999:     abc\ndef
                   2000:  0: abc\x0adef
                   2001:  1: f
                   2002: 
                   2003: /\A(.)*\Z/m
                   2004:     *** Failers
                   2005:  0: *** Failers
                   2006:  1: s
                   2007:     abc\ndef
                   2008: No match
                   2009: 
                   2010: /(?:b)|(?::+)/
                   2011:     b::c
                   2012:  0: b
                   2013:     c::b
                   2014:  0: ::
                   2015: 
                   2016: /[-az]+/
                   2017:     az-
                   2018:  0: az-
                   2019:     *** Failers
                   2020:  0: a
                   2021:     b
                   2022: No match
                   2023: 
                   2024: /[az-]+/
                   2025:     za-
                   2026:  0: za-
                   2027:     *** Failers
                   2028:  0: a
                   2029:     b
                   2030: No match
                   2031: 
                   2032: /[a\-z]+/
                   2033:     a-z
                   2034:  0: a-z
                   2035:     *** Failers
                   2036:  0: a
                   2037:     b
                   2038: No match
                   2039: 
                   2040: /[a-z]+/
                   2041:     abcdxyz
                   2042:  0: abcdxyz
                   2043: 
                   2044: /[\d-]+/
                   2045:     12-34
                   2046:  0: 12-34
                   2047:     *** Failers
                   2048: No match
                   2049:     aaa
                   2050: No match
                   2051: 
                   2052: /[\d-z]+/
                   2053:     12-34z
                   2054:  0: 12-34z
                   2055:     *** Failers
                   2056: No match
                   2057:     aaa
                   2058: No match
                   2059: 
                   2060: /\x5c/
                   2061:     \\
                   2062:  0: \
                   2063: 
                   2064: /\x20Z/
                   2065:     the Zoo
                   2066:  0:  Z
                   2067:     *** Failers
                   2068: No match
                   2069:     Zulu
                   2070: No match
                   2071: 
                   2072: /(abc)\1/i
                   2073:     abcabc
                   2074:  0: abcabc
                   2075:  1: abc
                   2076:     ABCabc
                   2077:  0: ABCabc
                   2078:  1: ABC
                   2079:     abcABC
                   2080:  0: abcABC
                   2081:  1: abc
                   2082: 
                   2083: /ab{3cd/
                   2084:     ab{3cd
                   2085:  0: ab{3cd
                   2086: 
                   2087: /ab{3,cd/
                   2088:     ab{3,cd
                   2089:  0: ab{3,cd
                   2090: 
                   2091: /ab{3,4a}cd/
                   2092:     ab{3,4a}cd
                   2093:  0: ab{3,4a}cd
                   2094: 
                   2095: /{4,5a}bc/
                   2096:     {4,5a}bc
                   2097:  0: {4,5a}bc
                   2098: 
                   2099: /abc$/
                   2100:     abc
                   2101:  0: abc
                   2102:     abc\n
                   2103:  0: abc
                   2104:     *** Failers
                   2105: No match
                   2106:     abc\ndef
                   2107: No match
                   2108: 
                   2109: /(abc)\123/
                   2110:     abc\x53
                   2111:  0: abcS
                   2112:  1: abc
                   2113: 
                   2114: /(abc)\223/
                   2115:     abc\x93
                   2116:  0: abc\x93
                   2117:  1: abc
                   2118: 
                   2119: /(abc)\323/
                   2120:     abc\xd3
                   2121:  0: abc\xd3
                   2122:  1: abc
                   2123: 
                   2124: /(abc)\100/
                   2125:     abc\x40
                   2126:  0: abc@
                   2127:  1: abc
                   2128:     abc\100
                   2129:  0: abc@
                   2130:  1: abc
                   2131: 
                   2132: /(abc)\1000/
                   2133:     abc\x400
                   2134:  0: abc@0
                   2135:  1: abc
                   2136:     abc\x40\x30
                   2137:  0: abc@0
                   2138:  1: abc
                   2139:     abc\1000
                   2140:  0: abc@0
                   2141:  1: abc
                   2142:     abc\100\x30
                   2143:  0: abc@0
                   2144:  1: abc
                   2145:     abc\100\060
                   2146:  0: abc@0
                   2147:  1: abc
                   2148:     abc\100\60
                   2149:  0: abc@0
                   2150:  1: abc
                   2151: 
                   2152: /abc\81/
                   2153:     abc\081
                   2154:  0: abc\x0081
                   2155:     abc\0\x38\x31
                   2156:  0: abc\x0081
                   2157: 
                   2158: /abc\91/
                   2159:     abc\091
                   2160:  0: abc\x0091
                   2161:     abc\0\x39\x31
                   2162:  0: abc\x0091
                   2163: 
                   2164: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
                   2165:     abcdefghijkllS
                   2166:  0: abcdefghijkllS
                   2167:  1: a
                   2168:  2: b
                   2169:  3: c
                   2170:  4: d
                   2171:  5: e
                   2172:  6: f
                   2173:  7: g
                   2174:  8: h
                   2175:  9: i
                   2176: 10: j
                   2177: 11: k
                   2178: 12: l
                   2179: 
                   2180: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
                   2181:     abcdefghijk\12S
                   2182:  0: abcdefghijk\x0aS
                   2183:  1: a
                   2184:  2: b
                   2185:  3: c
                   2186:  4: d
                   2187:  5: e
                   2188:  6: f
                   2189:  7: g
                   2190:  8: h
                   2191:  9: i
                   2192: 10: j
                   2193: 11: k
                   2194: 
                   2195: /ab\idef/
                   2196:     abidef
                   2197:  0: abidef
                   2198: 
                   2199: /a{0}bc/
                   2200:     bc
                   2201:  0: bc
                   2202: 
                   2203: /(a|(bc)){0,0}?xyz/
                   2204:     xyz
                   2205:  0: xyz
                   2206: 
                   2207: /abc[\10]de/
                   2208:     abc\010de
                   2209:  0: abc\x08de
                   2210: 
                   2211: /abc[\1]de/
                   2212:     abc\1de
                   2213:  0: abc\x01de
                   2214: 
                   2215: /(abc)[\1]de/
                   2216:     abc\1de
                   2217:  0: abc\x01de
                   2218:  1: abc
                   2219: 
                   2220: /(?s)a.b/
                   2221:     a\nb
                   2222:  0: a\x0ab
                   2223: 
                   2224: /^([^a])([^\b])([^c]*)([^d]{3,4})/
                   2225:     baNOTccccd
                   2226:  0: baNOTcccc
                   2227:  1: b
                   2228:  2: a
                   2229:  3: NOT
                   2230:  4: cccc
                   2231:     baNOTcccd
                   2232:  0: baNOTccc
                   2233:  1: b
                   2234:  2: a
                   2235:  3: NOT
                   2236:  4: ccc
                   2237:     baNOTccd
                   2238:  0: baNOTcc
                   2239:  1: b
                   2240:  2: a
                   2241:  3: NO
                   2242:  4: Tcc
                   2243:     bacccd
                   2244:  0: baccc
                   2245:  1: b
                   2246:  2: a
                   2247:  3: 
                   2248:  4: ccc
                   2249:     *** Failers
                   2250:  0: *** Failers
                   2251:  1: *
                   2252:  2: *
                   2253:  3: * Fail
                   2254:  4: ers
                   2255:     anything
                   2256: No match
                   2257:     b\bc   
                   2258: No match
                   2259:     baccd
                   2260: No match
                   2261: 
                   2262: /[^a]/
                   2263:     Abc
                   2264:  0: A
                   2265:   
                   2266: /[^a]/i
                   2267:     Abc 
                   2268:  0: b
                   2269: 
                   2270: /[^a]+/
                   2271:     AAAaAbc
                   2272:  0: AAA
                   2273:   
                   2274: /[^a]+/i
                   2275:     AAAaAbc 
                   2276:  0: bc
                   2277: 
                   2278: /[^a]+/
                   2279:     bbb\nccc
                   2280:  0: bbb\x0accc
                   2281:    
                   2282: /[^k]$/
                   2283:     abc
                   2284:  0: c
                   2285:     *** Failers
                   2286:  0: s
                   2287:     abk   
                   2288: No match
                   2289:    
                   2290: /[^k]{2,3}$/
                   2291:     abc
                   2292:  0: abc
                   2293:     kbc
                   2294:  0: bc
                   2295:     kabc 
                   2296:  0: abc
                   2297:     *** Failers
                   2298:  0: ers
                   2299:     abk
                   2300: No match
                   2301:     akb
                   2302: No match
                   2303:     akk 
                   2304: No match
                   2305: 
                   2306: /^\d{8,}\@.+[^k]$/
                   2307:     12345678\@a.b.c.d
                   2308:  0: 12345678@a.b.c.d
                   2309:     123456789\@x.y.z
                   2310:  0: 123456789@x.y.z
                   2311:     *** Failers
                   2312: No match
                   2313:     12345678\@x.y.uk
                   2314: No match
                   2315:     1234567\@a.b.c.d       
                   2316: No match
                   2317: 
                   2318: /(a)\1{8,}/
                   2319:     aaaaaaaaa
                   2320:  0: aaaaaaaaa
                   2321:  1: a
                   2322:     aaaaaaaaaa
                   2323:  0: aaaaaaaaaa
                   2324:  1: a
                   2325:     *** Failers
                   2326: No match
                   2327:     aaaaaaa   
                   2328: No match
                   2329: 
                   2330: /[^a]/
                   2331:     aaaabcd
                   2332:  0: b
                   2333:     aaAabcd 
                   2334:  0: A
                   2335: 
                   2336: /[^a]/i
                   2337:     aaaabcd
                   2338:  0: b
                   2339:     aaAabcd 
                   2340:  0: b
                   2341: 
                   2342: /[^az]/
                   2343:     aaaabcd
                   2344:  0: b
                   2345:     aaAabcd 
                   2346:  0: A
                   2347: 
                   2348: /[^az]/i
                   2349:     aaaabcd
                   2350:  0: b
                   2351:     aaAabcd 
                   2352:  0: b
                   2353: 
                   2354: /\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/
                   2355:  \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
                   2356:  0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff
                   2357: 
                   2358: /P[^*]TAIRE[^*]{1,6}?LL/
                   2359:     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
                   2360:  0: PSTAIREISLL
                   2361: 
                   2362: /P[^*]TAIRE[^*]{1,}?LL/
                   2363:     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
                   2364:  0: PSTAIREISLL
                   2365: 
                   2366: /(\.\d\d[1-9]?)\d+/
                   2367:     1.230003938
                   2368:  0: .230003938
                   2369:  1: .23
                   2370:     1.875000282   
                   2371:  0: .875000282
                   2372:  1: .875
                   2373:     1.235  
                   2374:  0: .235
                   2375:  1: .23
                   2376:                   
                   2377: /(\.\d\d((?=0)|\d(?=\d)))/
                   2378:     1.230003938      
                   2379:  0: .23
                   2380:  1: .23
                   2381:  2: 
                   2382:     1.875000282
                   2383:  0: .875
                   2384:  1: .875
                   2385:  2: 5
                   2386:     *** Failers 
                   2387: No match
                   2388:     1.235 
                   2389: No match
                   2390:     
                   2391: /a(?)b/
                   2392:     ab 
                   2393:  0: ab
                   2394:  
                   2395: /\b(foo)\s+(\w+)/i
                   2396:     Food is on the foo table
                   2397:  0: foo table
                   2398:  1: foo
                   2399:  2: table
                   2400:     
                   2401: /foo(.*)bar/
                   2402:     The food is under the bar in the barn.
                   2403:  0: food is under the bar in the bar
                   2404:  1: d is under the bar in the 
                   2405:     
                   2406: /foo(.*?)bar/  
                   2407:     The food is under the bar in the barn.
                   2408:  0: food is under the bar
                   2409:  1: d is under the 
                   2410: 
                   2411: /(.*)(\d*)/
                   2412:     I have 2 numbers: 53147
                   2413:  0: I have 2 numbers: 53147
                   2414:  1: I have 2 numbers: 53147
                   2415:  2: 
                   2416:     
                   2417: /(.*)(\d+)/
                   2418:     I have 2 numbers: 53147
                   2419:  0: I have 2 numbers: 53147
                   2420:  1: I have 2 numbers: 5314
                   2421:  2: 7
                   2422:  
                   2423: /(.*?)(\d*)/
                   2424:     I have 2 numbers: 53147
                   2425:  0: 
                   2426:  1: 
                   2427:  2: 
                   2428: 
                   2429: /(.*?)(\d+)/
                   2430:     I have 2 numbers: 53147
                   2431:  0: I have 2
                   2432:  1: I have 
                   2433:  2: 2
                   2434: 
                   2435: /(.*)(\d+)$/
                   2436:     I have 2 numbers: 53147
                   2437:  0: I have 2 numbers: 53147
                   2438:  1: I have 2 numbers: 5314
                   2439:  2: 7
                   2440: 
                   2441: /(.*?)(\d+)$/
                   2442:     I have 2 numbers: 53147
                   2443:  0: I have 2 numbers: 53147
                   2444:  1: I have 2 numbers: 
                   2445:  2: 53147
                   2446: 
                   2447: /(.*)\b(\d+)$/
                   2448:     I have 2 numbers: 53147
                   2449:  0: I have 2 numbers: 53147
                   2450:  1: I have 2 numbers: 
                   2451:  2: 53147
                   2452: 
                   2453: /(.*\D)(\d+)$/
                   2454:     I have 2 numbers: 53147
                   2455:  0: I have 2 numbers: 53147
                   2456:  1: I have 2 numbers: 
                   2457:  2: 53147
                   2458: 
                   2459: /^\D*(?!123)/
                   2460:     ABC123
                   2461:  0: AB
                   2462:      
                   2463: /^(\D*)(?=\d)(?!123)/
                   2464:     ABC445
                   2465:  0: ABC
                   2466:  1: ABC
                   2467:     *** Failers
                   2468: No match
                   2469:     ABC123
                   2470: No match
                   2471:     
                   2472: /^[W-]46]/
                   2473:     W46]789 
                   2474:  0: W46]
                   2475:     -46]789
                   2476:  0: -46]
                   2477:     *** Failers
                   2478: No match
                   2479:     Wall
                   2480: No match
                   2481:     Zebra
                   2482: No match
                   2483:     42
                   2484: No match
                   2485:     [abcd] 
                   2486: No match
                   2487:     ]abcd[
                   2488: No match
                   2489:        
                   2490: /^[W-\]46]/
                   2491:     W46]789 
                   2492:  0: W
                   2493:     Wall
                   2494:  0: W
                   2495:     Zebra
                   2496:  0: Z
                   2497:     Xylophone  
                   2498:  0: X
                   2499:     42
                   2500:  0: 4
                   2501:     [abcd] 
                   2502:  0: [
                   2503:     ]abcd[
                   2504:  0: ]
                   2505:     \\backslash 
                   2506:  0: \
                   2507:     *** Failers
                   2508: No match
                   2509:     -46]789
                   2510: No match
                   2511:     well
                   2512: No match
                   2513:     
                   2514: /\d\d\/\d\d\/\d\d\d\d/
                   2515:     01/01/2000
                   2516:  0: 01/01/2000
                   2517: 
                   2518: /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
                   2519:   word cat dog elephant mussel cow horse canary baboon snake shark otherword
                   2520:  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
                   2521:   word cat dog elephant mussel cow horse canary baboon snake shark
                   2522: No match
                   2523: 
                   2524: /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
                   2525:   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
                   2526: No match
                   2527: 
                   2528: /^(a){0,0}/
                   2529:     bcd
                   2530:  0: 
                   2531:     abc
                   2532:  0: 
                   2533:     aab     
                   2534:  0: 
                   2535: 
                   2536: /^(a){0,1}/
                   2537:     bcd
                   2538:  0: 
                   2539:     abc
                   2540:  0: a
                   2541:  1: a
                   2542:     aab  
                   2543:  0: a
                   2544:  1: a
                   2545: 
                   2546: /^(a){0,2}/
                   2547:     bcd
                   2548:  0: 
                   2549:     abc
                   2550:  0: a
                   2551:  1: a
                   2552:     aab  
                   2553:  0: aa
                   2554:  1: a
                   2555: 
                   2556: /^(a){0,3}/
                   2557:     bcd
                   2558:  0: 
                   2559:     abc
                   2560:  0: a
                   2561:  1: a
                   2562:     aab
                   2563:  0: aa
                   2564:  1: a
                   2565:     aaa   
                   2566:  0: aaa
                   2567:  1: a
                   2568: 
                   2569: /^(a){0,}/
                   2570:     bcd
                   2571:  0: 
                   2572:     abc
                   2573:  0: a
                   2574:  1: a
                   2575:     aab
                   2576:  0: aa
                   2577:  1: a
                   2578:     aaa
                   2579:  0: aaa
                   2580:  1: a
                   2581:     aaaaaaaa    
                   2582:  0: aaaaaaaa
                   2583:  1: a
                   2584: 
                   2585: /^(a){1,1}/
                   2586:     bcd
                   2587: No match
                   2588:     abc
                   2589:  0: a
                   2590:  1: a
                   2591:     aab  
                   2592:  0: a
                   2593:  1: a
                   2594: 
                   2595: /^(a){1,2}/
                   2596:     bcd
                   2597: No match
                   2598:     abc
                   2599:  0: a
                   2600:  1: a
                   2601:     aab  
                   2602:  0: aa
                   2603:  1: a
                   2604: 
                   2605: /^(a){1,3}/
                   2606:     bcd
                   2607: No match
                   2608:     abc
                   2609:  0: a
                   2610:  1: a
                   2611:     aab
                   2612:  0: aa
                   2613:  1: a
                   2614:     aaa   
                   2615:  0: aaa
                   2616:  1: a
                   2617: 
                   2618: /^(a){1,}/
                   2619:     bcd
                   2620: No match
                   2621:     abc
                   2622:  0: a
                   2623:  1: a
                   2624:     aab
                   2625:  0: aa
                   2626:  1: a
                   2627:     aaa
                   2628:  0: aaa
                   2629:  1: a
                   2630:     aaaaaaaa    
                   2631:  0: aaaaaaaa
                   2632:  1: a
                   2633: 
                   2634: /.*\.gif/
                   2635:     borfle\nbib.gif\nno
                   2636:  0: bib.gif
                   2637: 
                   2638: /.{0,}\.gif/
                   2639:     borfle\nbib.gif\nno
                   2640:  0: bib.gif
                   2641: 
                   2642: /.*\.gif/m
                   2643:     borfle\nbib.gif\nno
                   2644:  0: bib.gif
                   2645: 
                   2646: /.*\.gif/s
                   2647:     borfle\nbib.gif\nno
                   2648:  0: borfle\x0abib.gif
                   2649: 
                   2650: /.*\.gif/ms
                   2651:     borfle\nbib.gif\nno
                   2652:  0: borfle\x0abib.gif
                   2653:     
                   2654: /.*$/
                   2655:     borfle\nbib.gif\nno
                   2656:  0: no
                   2657: 
                   2658: /.*$/m
                   2659:     borfle\nbib.gif\nno
                   2660:  0: borfle
                   2661: 
                   2662: /.*$/s
                   2663:     borfle\nbib.gif\nno
                   2664:  0: borfle\x0abib.gif\x0ano
                   2665: 
                   2666: /.*$/ms
                   2667:     borfle\nbib.gif\nno
                   2668:  0: borfle\x0abib.gif\x0ano
                   2669:     
                   2670: /.*$/
                   2671:     borfle\nbib.gif\nno\n
                   2672:  0: no
                   2673: 
                   2674: /.*$/m
                   2675:     borfle\nbib.gif\nno\n
                   2676:  0: borfle
                   2677: 
                   2678: /.*$/s
                   2679:     borfle\nbib.gif\nno\n
                   2680:  0: borfle\x0abib.gif\x0ano\x0a
                   2681: 
                   2682: /.*$/ms
                   2683:     borfle\nbib.gif\nno\n
                   2684:  0: borfle\x0abib.gif\x0ano\x0a
                   2685:     
                   2686: /(.*X|^B)/
                   2687:     abcde\n1234Xyz
                   2688:  0: 1234X
                   2689:  1: 1234X
                   2690:     BarFoo 
                   2691:  0: B
                   2692:  1: B
                   2693:     *** Failers
                   2694: No match
                   2695:     abcde\nBar  
                   2696: No match
                   2697: 
                   2698: /(.*X|^B)/m
                   2699:     abcde\n1234Xyz
                   2700:  0: 1234X
                   2701:  1: 1234X
                   2702:     BarFoo 
                   2703:  0: B
                   2704:  1: B
                   2705:     abcde\nBar  
                   2706:  0: B
                   2707:  1: B
                   2708: 
                   2709: /(.*X|^B)/s
                   2710:     abcde\n1234Xyz
                   2711:  0: abcde\x0a1234X
                   2712:  1: abcde\x0a1234X
                   2713:     BarFoo 
                   2714:  0: B
                   2715:  1: B
                   2716:     *** Failers
                   2717: No match
                   2718:     abcde\nBar  
                   2719: No match
                   2720: 
                   2721: /(.*X|^B)/ms
                   2722:     abcde\n1234Xyz
                   2723:  0: abcde\x0a1234X
                   2724:  1: abcde\x0a1234X
                   2725:     BarFoo 
                   2726:  0: B
                   2727:  1: B
                   2728:     abcde\nBar  
                   2729:  0: B
                   2730:  1: B
                   2731: 
                   2732: /(?s)(.*X|^B)/
                   2733:     abcde\n1234Xyz
                   2734:  0: abcde\x0a1234X
                   2735:  1: abcde\x0a1234X
                   2736:     BarFoo 
                   2737:  0: B
                   2738:  1: B
                   2739:     *** Failers 
                   2740: No match
                   2741:     abcde\nBar  
                   2742: No match
                   2743: 
                   2744: /(?s:.*X|^B)/
                   2745:     abcde\n1234Xyz
                   2746:  0: abcde\x0a1234X
                   2747:     BarFoo 
                   2748:  0: B
                   2749:     *** Failers 
                   2750: No match
                   2751:     abcde\nBar  
                   2752: No match
                   2753: 
                   2754: /^.*B/
                   2755:     **** Failers
                   2756: No match
                   2757:     abc\nB
                   2758: No match
                   2759:      
                   2760: /(?s)^.*B/
                   2761:     abc\nB
                   2762:  0: abc\x0aB
                   2763: 
                   2764: /(?m)^.*B/
                   2765:     abc\nB
                   2766:  0: B
                   2767:      
                   2768: /(?ms)^.*B/
                   2769:     abc\nB
                   2770:  0: abc\x0aB
                   2771: 
                   2772: /(?ms)^B/
                   2773:     abc\nB
                   2774:  0: B
                   2775: 
                   2776: /(?s)B$/
                   2777:     B\n
                   2778:  0: B
                   2779: 
                   2780: /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
                   2781:     123456654321
                   2782:  0: 123456654321
                   2783:   
                   2784: /^\d\d\d\d\d\d\d\d\d\d\d\d/
                   2785:     123456654321 
                   2786:  0: 123456654321
                   2787: 
                   2788: /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
                   2789:     123456654321
                   2790:  0: 123456654321
                   2791:   
                   2792: /^[abc]{12}/
                   2793:     abcabcabcabc
                   2794:  0: abcabcabcabc
                   2795:     
                   2796: /^[a-c]{12}/
                   2797:     abcabcabcabc
                   2798:  0: abcabcabcabc
                   2799:     
                   2800: /^(a|b|c){12}/
                   2801:     abcabcabcabc 
                   2802:  0: abcabcabcabc
                   2803:  1: c
                   2804: 
                   2805: /^[abcdefghijklmnopqrstuvwxy0123456789]/
                   2806:     n
                   2807:  0: n
                   2808:     *** Failers 
                   2809: No match
                   2810:     z 
                   2811: No match
                   2812: 
                   2813: /abcde{0,0}/
                   2814:     abcd
                   2815:  0: abcd
                   2816:     *** Failers
                   2817: No match
                   2818:     abce  
                   2819: No match
                   2820: 
                   2821: /ab[cd]{0,0}e/
                   2822:     abe
                   2823:  0: abe
                   2824:     *** Failers
                   2825: No match
                   2826:     abcde 
                   2827: No match
                   2828:     
                   2829: /ab(c){0,0}d/
                   2830:     abd
                   2831:  0: abd
                   2832:     *** Failers
                   2833: No match
                   2834:     abcd   
                   2835: No match
                   2836: 
                   2837: /a(b*)/
                   2838:     a
                   2839:  0: a
                   2840:  1: 
                   2841:     ab
                   2842:  0: ab
                   2843:  1: b
                   2844:     abbbb
                   2845:  0: abbbb
                   2846:  1: bbbb
                   2847:     *** Failers
                   2848:  0: a
                   2849:  1: 
                   2850:     bbbbb    
                   2851: No match
                   2852:     
                   2853: /ab\d{0}e/
                   2854:     abe
                   2855:  0: abe
                   2856:     *** Failers
                   2857: No match
                   2858:     ab1e   
                   2859: No match
                   2860:     
                   2861: /"([^\\"]+|\\.)*"/
                   2862:     the \"quick\" brown fox
                   2863:  0: "quick"
                   2864:  1: quick
                   2865:     \"the \\\"quick\\\" brown fox\" 
                   2866:  0: "the \"quick\" brown fox"
                   2867:  1:  brown fox
                   2868: 
                   2869: /.*?/g+
                   2870:     abc
                   2871:  0: 
                   2872:  0+ abc
                   2873:  0: a
                   2874:  0+ bc
                   2875:  0: 
                   2876:  0+ bc
                   2877:  0: b
                   2878:  0+ c
                   2879:  0: 
                   2880:  0+ c
                   2881:  0: c
                   2882:  0+ 
                   2883:  0: 
                   2884:  0+ 
                   2885:   
                   2886: /\b/g+
                   2887:     abc 
                   2888:  0: 
                   2889:  0+ abc
                   2890:  0: 
                   2891:  0+ 
                   2892: 
                   2893: /\b/+g
                   2894:     abc 
                   2895:  0: 
                   2896:  0+ abc
                   2897:  0: 
                   2898:  0+ 
                   2899: 
                   2900: //g
                   2901:     abc
                   2902:  0: 
                   2903:  0: 
                   2904:  0: 
                   2905:  0: 
                   2906: 
                   2907: /<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
                   2908:   <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>
                   2909:  0: <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>
                   2910:  1:  BGCOLOR='#DBE9E9'
                   2911:  2:  align=left valign=top
                   2912:  3: 43.
                   2913:  4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)
                   2914:  5: 
                   2915:  6: 
                   2916:  7: <unset>
                   2917:  8:  align=left valign=top
                   2918:  9: Lega lstaff.com
                   2919: 10:  align=left valign=top
                   2920: 11: CA - Statewide
                   2921: 
                   2922: /a[^a]b/
                   2923:     acb
                   2924:  0: acb
                   2925:     a\nb
                   2926:  0: a\x0ab
                   2927:     
                   2928: /a.b/
                   2929:     acb
                   2930:  0: acb
                   2931:     *** Failers 
                   2932: No match
                   2933:     a\nb   
                   2934: No match
                   2935:     
                   2936: /a[^a]b/s
                   2937:     acb
                   2938:  0: acb
                   2939:     a\nb  
                   2940:  0: a\x0ab
                   2941:     
                   2942: /a.b/s
                   2943:     acb
                   2944:  0: acb
                   2945:     a\nb  
                   2946:  0: a\x0ab
                   2947: 
                   2948: /^(b+?|a){1,2}?c/
                   2949:     bac
                   2950:  0: bac
                   2951:  1: a
                   2952:     bbac
                   2953:  0: bbac
                   2954:  1: a
                   2955:     bbbac
                   2956:  0: bbbac
                   2957:  1: a
                   2958:     bbbbac
                   2959:  0: bbbbac
                   2960:  1: a
                   2961:     bbbbbac 
                   2962:  0: bbbbbac
                   2963:  1: a
                   2964: 
                   2965: /^(b+|a){1,2}?c/
                   2966:     bac
                   2967:  0: bac
                   2968:  1: a
                   2969:     bbac
                   2970:  0: bbac
                   2971:  1: a
                   2972:     bbbac
                   2973:  0: bbbac
                   2974:  1: a
                   2975:     bbbbac
                   2976:  0: bbbbac
                   2977:  1: a
                   2978:     bbbbbac 
                   2979:  0: bbbbbac
                   2980:  1: a
                   2981:     
                   2982: /(?!\A)x/m
                   2983:     x\nb\n
                   2984: No match
                   2985:     a\bx\n  
                   2986:  0: x
                   2987:     
                   2988: /\x0{ab}/
                   2989:     \0{ab} 
                   2990:  0: \x00{ab}
                   2991: 
                   2992: /(A|B)*?CD/
                   2993:     CD 
                   2994:  0: CD
                   2995:     
                   2996: /(A|B)*CD/
                   2997:     CD 
                   2998:  0: CD
                   2999: 
                   3000: /(AB)*?\1/
                   3001:     ABABAB
                   3002:  0: ABAB
                   3003:  1: AB
                   3004: 
                   3005: /(AB)*\1/
                   3006:     ABABAB
                   3007:  0: ABABAB
                   3008:  1: AB
                   3009:     
                   3010: /(?<!bar)foo/
                   3011:     foo
                   3012:  0: foo
                   3013:     catfood
                   3014:  0: foo
                   3015:     arfootle
                   3016:  0: foo
                   3017:     rfoosh
                   3018:  0: foo
                   3019:     *** Failers
                   3020: No match
                   3021:     barfoo
                   3022: No match
                   3023:     towbarfoo
                   3024: No match
                   3025: 
                   3026: /\w{3}(?<!bar)foo/
                   3027:     catfood
                   3028:  0: catfoo
                   3029:     *** Failers
                   3030: No match
                   3031:     foo
                   3032: No match
                   3033:     barfoo
                   3034: No match
                   3035:     towbarfoo
                   3036: No match
                   3037: 
                   3038: /(?<=(foo)a)bar/
                   3039:     fooabar
                   3040:  0: bar
                   3041:  1: foo
                   3042:     *** Failers
                   3043: No match
                   3044:     bar
                   3045: No match
                   3046:     foobbar
                   3047: No match
                   3048:       
                   3049: /\Aabc\z/m
                   3050:     abc
                   3051:  0: abc
                   3052:     *** Failers
                   3053: No match
                   3054:     abc\n   
                   3055: No match
                   3056:     qqq\nabc
                   3057: No match
                   3058:     abc\nzzz
                   3059: No match
                   3060:     qqq\nabc\nzzz
                   3061: No match
                   3062: 
                   3063: "(?>.*/)foo"
                   3064:     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
                   3065: No match
                   3066: 
                   3067: "(?>.*/)foo"
                   3068:     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
                   3069:  0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
                   3070: 
                   3071: /(?>(\.\d\d[1-9]?))\d+/
                   3072:     1.230003938
                   3073:  0: .230003938
                   3074:  1: .23
                   3075:     1.875000282
                   3076:  0: .875000282
                   3077:  1: .875
                   3078:     *** Failers 
                   3079: No match
                   3080:     1.235 
                   3081: No match
                   3082: 
                   3083: /^((?>\w+)|(?>\s+))*$/
                   3084:     now is the time for all good men to come to the aid of the party
                   3085:  0: now is the time for all good men to come to the aid of the party
                   3086:  1: party
                   3087:     *** Failers
                   3088: No match
                   3089:     this is not a line with only words and spaces!
                   3090: No match
                   3091:     
                   3092: /(\d+)(\w)/
                   3093:     12345a
                   3094:  0: 12345a
                   3095:  1: 12345
                   3096:  2: a
                   3097:     12345+ 
                   3098:  0: 12345
                   3099:  1: 1234
                   3100:  2: 5
                   3101: 
                   3102: /((?>\d+))(\w)/
                   3103:     12345a
                   3104:  0: 12345a
                   3105:  1: 12345
                   3106:  2: a
                   3107:     *** Failers
                   3108: No match
                   3109:     12345+ 
                   3110: No match
                   3111: 
                   3112: /(?>a+)b/
                   3113:     aaab
                   3114:  0: aaab
                   3115: 
                   3116: /((?>a+)b)/
                   3117:     aaab
                   3118:  0: aaab
                   3119:  1: aaab
                   3120: 
                   3121: /(?>(a+))b/
                   3122:     aaab
                   3123:  0: aaab
                   3124:  1: aaa
                   3125: 
                   3126: /(?>b)+/
                   3127:     aaabbbccc
                   3128:  0: bbb
                   3129: 
                   3130: /(?>a+|b+|c+)*c/
                   3131:     aaabbbbccccd
                   3132:  0: aaabbbbc
                   3133: 
                   3134: /((?>[^()]+)|\([^()]*\))+/
                   3135:     ((abc(ade)ufh()()x
                   3136:  0: abc(ade)ufh()()x
                   3137:  1: x
                   3138:     
                   3139: /\(((?>[^()]+)|\([^()]+\))+\)/ 
                   3140:     (abc)
                   3141:  0: (abc)
                   3142:  1: abc
                   3143:     (abc(def)xyz)
                   3144:  0: (abc(def)xyz)
                   3145:  1: xyz
                   3146:     *** Failers
                   3147: No match
                   3148:     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
                   3149: No match
                   3150: 
                   3151: /a(?-i)b/i
                   3152:     ab
                   3153:  0: ab
                   3154:     Ab
                   3155:  0: Ab
                   3156:     *** Failers 
                   3157: No match
                   3158:     aB
                   3159: No match
                   3160:     AB
                   3161: No match
                   3162:         
                   3163: /(a (?x)b c)d e/
                   3164:     a bcd e
                   3165:  0: a bcd e
                   3166:  1: a bc
                   3167:     *** Failers
                   3168: No match
                   3169:     a b cd e
                   3170: No match
                   3171:     abcd e   
                   3172: No match
                   3173:     a bcde 
                   3174: No match
                   3175:  
                   3176: /(a b(?x)c d (?-x)e f)/
                   3177:     a bcde f
                   3178:  0: a bcde f
                   3179:  1: a bcde f
                   3180:     *** Failers
                   3181: No match
                   3182:     abcdef  
                   3183: No match
                   3184: 
                   3185: /(a(?i)b)c/
                   3186:     abc
                   3187:  0: abc
                   3188:  1: ab
                   3189:     aBc
                   3190:  0: aBc
                   3191:  1: aB
                   3192:     *** Failers
                   3193: No match
                   3194:     abC
                   3195: No match
                   3196:     aBC  
                   3197: No match
                   3198:     Abc
                   3199: No match
                   3200:     ABc
                   3201: No match
                   3202:     ABC
                   3203: No match
                   3204:     AbC
                   3205: No match
                   3206:     
                   3207: /a(?i:b)c/
                   3208:     abc
                   3209:  0: abc
                   3210:     aBc
                   3211:  0: aBc
                   3212:     *** Failers 
                   3213: No match
                   3214:     ABC
                   3215: No match
                   3216:     abC
                   3217: No match
                   3218:     aBC
                   3219: No match
                   3220:     
                   3221: /a(?i:b)*c/
                   3222:     aBc
                   3223:  0: aBc
                   3224:     aBBc
                   3225:  0: aBBc
                   3226:     *** Failers 
                   3227: No match
                   3228:     aBC
                   3229: No match
                   3230:     aBBC
                   3231: No match
                   3232:     
                   3233: /a(?=b(?i)c)\w\wd/
                   3234:     abcd
                   3235:  0: abcd
                   3236:     abCd
                   3237:  0: abCd
                   3238:     *** Failers
                   3239: No match
                   3240:     aBCd
                   3241: No match
                   3242:     abcD     
                   3243: No match
                   3244:     
                   3245: /(?s-i:more.*than).*million/i
                   3246:     more than million
                   3247:  0: more than million
                   3248:     more than MILLION
                   3249:  0: more than MILLION
                   3250:     more \n than Million 
                   3251:  0: more \x0a than Million
                   3252:     *** Failers
                   3253: No match
                   3254:     MORE THAN MILLION    
                   3255: No match
                   3256:     more \n than \n million 
                   3257: No match
                   3258: 
                   3259: /(?:(?s-i)more.*than).*million/i
                   3260:     more than million
                   3261:  0: more than million
                   3262:     more than MILLION
                   3263:  0: more than MILLION
                   3264:     more \n than Million 
                   3265:  0: more \x0a than Million
                   3266:     *** Failers
                   3267: No match
                   3268:     MORE THAN MILLION    
                   3269: No match
                   3270:     more \n than \n million 
                   3271: No match
                   3272:     
                   3273: /(?>a(?i)b+)+c/ 
                   3274:     abc
                   3275:  0: abc
                   3276:     aBbc
                   3277:  0: aBbc
                   3278:     aBBc 
                   3279:  0: aBBc
                   3280:     *** Failers
                   3281: No match
                   3282:     Abc
                   3283: No match
                   3284:     abAb    
                   3285: No match
                   3286:     abbC 
                   3287: No match
                   3288:     
                   3289: /(?=a(?i)b)\w\wc/
                   3290:     abc
                   3291:  0: abc
                   3292:     aBc
                   3293:  0: aBc
                   3294:     *** Failers
                   3295: No match
                   3296:     Ab 
                   3297: No match
                   3298:     abC
                   3299: No match
                   3300:     aBC     
                   3301: No match
                   3302:     
                   3303: /(?<=a(?i)b)(\w\w)c/
                   3304:     abxxc
                   3305:  0: xxc
                   3306:  1: xx
                   3307:     aBxxc
                   3308:  0: xxc
                   3309:  1: xx
                   3310:     *** Failers
                   3311: No match
                   3312:     Abxxc
                   3313: No match
                   3314:     ABxxc
                   3315: No match
                   3316:     abxxC      
                   3317: No match
                   3318: 
                   3319: /(?:(a)|b)(?(1)A|B)/
                   3320:     aA
                   3321:  0: aA
                   3322:  1: a
                   3323:     bB
                   3324:  0: bB
                   3325:     *** Failers
                   3326: No match
                   3327:     aB
                   3328: No match
                   3329:     bA    
                   3330: No match
                   3331: 
                   3332: /^(a)?(?(1)a|b)+$/
                   3333:     aa
                   3334:  0: aa
                   3335:  1: a
                   3336:     b
                   3337:  0: b
                   3338:     bb  
                   3339:  0: bb
                   3340:     *** Failers
                   3341: No match
                   3342:     ab   
                   3343: No match
                   3344: 
                   3345: /^(?(?=abc)\w{3}:|\d\d)$/
                   3346:     abc:
                   3347:  0: abc:
                   3348:     12
                   3349:  0: 12
                   3350:     *** Failers
                   3351: No match
                   3352:     123
                   3353: No match
                   3354:     xyz    
                   3355: No match
                   3356: 
                   3357: /^(?(?!abc)\d\d|\w{3}:)$/
                   3358:     abc:
                   3359:  0: abc:
                   3360:     12
                   3361:  0: 12
                   3362:     *** Failers
                   3363: No match
                   3364:     123
                   3365: No match
                   3366:     xyz    
                   3367: No match
                   3368:     
                   3369: /(?(?<=foo)bar|cat)/
                   3370:     foobar
                   3371:  0: bar
                   3372:     cat
                   3373:  0: cat
                   3374:     fcat
                   3375:  0: cat
                   3376:     focat   
                   3377:  0: cat
                   3378:     *** Failers
                   3379: No match
                   3380:     foocat  
                   3381: No match
                   3382: 
                   3383: /(?(?<!foo)cat|bar)/
                   3384:     foobar
                   3385:  0: bar
                   3386:     cat
                   3387:  0: cat
                   3388:     fcat
                   3389:  0: cat
                   3390:     focat   
                   3391:  0: cat
                   3392:     *** Failers
                   3393: No match
                   3394:     foocat  
                   3395: No match
                   3396: 
                   3397: /( \( )? [^()]+ (?(1) \) |) /x
                   3398:     abcd
                   3399:  0: abcd
                   3400:     (abcd)
                   3401:  0: (abcd)
                   3402:  1: (
                   3403:     the quick (abcd) fox
                   3404:  0: the quick 
                   3405:     (abcd   
                   3406:  0: abcd
                   3407: 
                   3408: /( \( )? [^()]+ (?(1) \) ) /x
                   3409:     abcd
                   3410:  0: abcd
                   3411:     (abcd)
                   3412:  0: (abcd)
                   3413:  1: (
                   3414:     the quick (abcd) fox
                   3415:  0: the quick 
                   3416:     (abcd   
                   3417:  0: abcd
                   3418: 
                   3419: /^(?(2)a|(1)(2))+$/
                   3420:     12
                   3421:  0: 12
                   3422:  1: 1
                   3423:  2: 2
                   3424:     12a
                   3425:  0: 12a
                   3426:  1: 1
                   3427:  2: 2
                   3428:     12aa
                   3429:  0: 12aa
                   3430:  1: 1
                   3431:  2: 2
                   3432:     *** Failers
                   3433: No match
                   3434:     1234    
                   3435: No match
                   3436: 
                   3437: /((?i)blah)\s+\1/
                   3438:     blah blah
                   3439:  0: blah blah
                   3440:  1: blah
                   3441:     BLAH BLAH
                   3442:  0: BLAH BLAH
                   3443:  1: BLAH
                   3444:     Blah Blah
                   3445:  0: Blah Blah
                   3446:  1: Blah
                   3447:     blaH blaH
                   3448:  0: blaH blaH
                   3449:  1: blaH
                   3450:     *** Failers
                   3451: No match
                   3452:     blah BLAH
                   3453: No match
                   3454:     Blah blah      
                   3455: No match
                   3456:     blaH blah 
                   3457: No match
                   3458: 
                   3459: /((?i)blah)\s+(?i:\1)/
                   3460:     blah blah
                   3461:  0: blah blah
                   3462:  1: blah
                   3463:     BLAH BLAH
                   3464:  0: BLAH BLAH
                   3465:  1: BLAH
                   3466:     Blah Blah
                   3467:  0: Blah Blah
                   3468:  1: Blah
                   3469:     blaH blaH
                   3470:  0: blaH blaH
                   3471:  1: blaH
                   3472:     blah BLAH
                   3473:  0: blah BLAH
                   3474:  1: blah
                   3475:     Blah blah      
                   3476:  0: Blah blah
                   3477:  1: Blah
                   3478:     blaH blah 
                   3479:  0: blaH blah
                   3480:  1: blaH
                   3481: 
                   3482: /(?>a*)*/
                   3483:     a
                   3484:  0: a
                   3485:     aa
                   3486:  0: aa
                   3487:     aaaa
                   3488:  0: aaaa
                   3489:     
                   3490: /(abc|)+/
                   3491:     abc
                   3492:  0: abc
                   3493:  1: 
                   3494:     abcabc
                   3495:  0: abcabc
                   3496:  1: 
                   3497:     abcabcabc
                   3498:  0: abcabcabc
                   3499:  1: 
                   3500:     xyz      
                   3501:  0: 
                   3502:  1: 
                   3503: 
                   3504: /([a]*)*/
                   3505:     a
                   3506:  0: a
                   3507:  1: 
                   3508:     aaaaa 
                   3509:  0: aaaaa
                   3510:  1: 
                   3511:  
                   3512: /([ab]*)*/
                   3513:     a
                   3514:  0: a
                   3515:  1: 
                   3516:     b
                   3517:  0: b
                   3518:  1: 
                   3519:     ababab
                   3520:  0: ababab
                   3521:  1: 
                   3522:     aaaabcde
                   3523:  0: aaaab
                   3524:  1: 
                   3525:     bbbb    
                   3526:  0: bbbb
                   3527:  1: 
                   3528:  
                   3529: /([^a]*)*/
                   3530:     b
                   3531:  0: b
                   3532:  1: 
                   3533:     bbbb
                   3534:  0: bbbb
                   3535:  1: 
                   3536:     aaa   
                   3537:  0: 
                   3538:  1: 
                   3539:  
                   3540: /([^ab]*)*/
                   3541:     cccc
                   3542:  0: cccc
                   3543:  1: 
                   3544:     abab  
                   3545:  0: 
                   3546:  1: 
                   3547:  
                   3548: /([a]*?)*/
                   3549:     a
                   3550:  0: 
                   3551:  1: 
                   3552:     aaaa 
                   3553:  0: 
                   3554:  1: 
                   3555:  
                   3556: /([ab]*?)*/
                   3557:     a
                   3558:  0: 
                   3559:  1: 
                   3560:     b
                   3561:  0: 
                   3562:  1: 
                   3563:     abab
                   3564:  0: 
                   3565:  1: 
                   3566:     baba   
                   3567:  0: 
                   3568:  1: 
                   3569:  
                   3570: /([^a]*?)*/
                   3571:     b
                   3572:  0: 
                   3573:  1: 
                   3574:     bbbb
                   3575:  0: 
                   3576:  1: 
                   3577:     aaa   
                   3578:  0: 
                   3579:  1: 
                   3580:  
                   3581: /([^ab]*?)*/
                   3582:     c
                   3583:  0: 
                   3584:  1: 
                   3585:     cccc
                   3586:  0: 
                   3587:  1: 
                   3588:     baba   
                   3589:  0: 
                   3590:  1: 
                   3591:  
                   3592: /(?>a*)*/
                   3593:     a
                   3594:  0: a
                   3595:     aaabcde 
                   3596:  0: aaa
                   3597:  
                   3598: /((?>a*))*/
                   3599:     aaaaa
                   3600:  0: aaaaa
                   3601:  1: 
                   3602:     aabbaa 
                   3603:  0: aa
                   3604:  1: 
                   3605:  
                   3606: /((?>a*?))*/
                   3607:     aaaaa
                   3608:  0: 
                   3609:  1: 
                   3610:     aabbaa 
                   3611:  0: 
                   3612:  1: 
                   3613: 
                   3614: /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
                   3615:     12-sep-98
                   3616:  0: 12-sep-98
                   3617:     12-09-98
                   3618:  0: 12-09-98
                   3619:     *** Failers
                   3620: No match
                   3621:     sep-12-98
                   3622: No match
                   3623:         
                   3624: /(?<=(foo))bar\1/
                   3625:     foobarfoo
                   3626:  0: barfoo
                   3627:  1: foo
                   3628:     foobarfootling 
                   3629:  0: barfoo
                   3630:  1: foo
                   3631:     *** Failers
                   3632: No match
                   3633:     foobar
                   3634: No match
                   3635:     barfoo   
                   3636: No match
                   3637: 
                   3638: /(?i:saturday|sunday)/
                   3639:     saturday
                   3640:  0: saturday
                   3641:     sunday
                   3642:  0: sunday
                   3643:     Saturday
                   3644:  0: Saturday
                   3645:     Sunday
                   3646:  0: Sunday
                   3647:     SATURDAY
                   3648:  0: SATURDAY
                   3649:     SUNDAY
                   3650:  0: SUNDAY
                   3651:     SunDay
                   3652:  0: SunDay
                   3653:     
                   3654: /(a(?i)bc|BB)x/
                   3655:     abcx
                   3656:  0: abcx
                   3657:  1: abc
                   3658:     aBCx
                   3659:  0: aBCx
                   3660:  1: aBC
                   3661:     bbx
                   3662:  0: bbx
                   3663:  1: bb
                   3664:     BBx
                   3665:  0: BBx
                   3666:  1: BB
                   3667:     *** Failers
                   3668: No match
                   3669:     abcX
                   3670: No match
                   3671:     aBCX
                   3672: No match
                   3673:     bbX
                   3674: No match
                   3675:     BBX               
                   3676: No match
                   3677: 
                   3678: /^([ab](?i)[cd]|[ef])/
                   3679:     ac
                   3680:  0: ac
                   3681:  1: ac
                   3682:     aC
                   3683:  0: aC
                   3684:  1: aC
                   3685:     bD
                   3686:  0: bD
                   3687:  1: bD
                   3688:     elephant
                   3689:  0: e
                   3690:  1: e
                   3691:     Europe 
                   3692:  0: E
                   3693:  1: E
                   3694:     frog
                   3695:  0: f
                   3696:  1: f
                   3697:     France
                   3698:  0: F
                   3699:  1: F
                   3700:     *** Failers
                   3701: No match
                   3702:     Africa     
                   3703: No match
                   3704: 
                   3705: /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
                   3706:     ab
                   3707:  0: ab
                   3708:  1: ab
                   3709:     aBd
                   3710:  0: aBd
                   3711:  1: aBd
                   3712:     xy
                   3713:  0: xy
                   3714:  1: xy
                   3715:     xY
                   3716:  0: xY
                   3717:  1: xY
                   3718:     zebra
                   3719:  0: z
                   3720:  1: z
                   3721:     Zambesi
                   3722:  0: Z
                   3723:  1: Z
                   3724:     *** Failers
                   3725: No match
                   3726:     aCD  
                   3727: No match
                   3728:     XY  
                   3729: No match
                   3730: 
                   3731: /(?<=foo\n)^bar/m
                   3732:     foo\nbar
                   3733:  0: bar
                   3734:     *** Failers
                   3735: No match
                   3736:     bar
                   3737: No match
                   3738:     baz\nbar   
                   3739: No match
                   3740: 
                   3741: /(?<=(?<!foo)bar)baz/
                   3742:     barbaz
                   3743:  0: baz
                   3744:     barbarbaz 
                   3745:  0: baz
                   3746:     koobarbaz 
                   3747:  0: baz
                   3748:     *** Failers
                   3749: No match
                   3750:     baz
                   3751: No match
                   3752:     foobarbaz 
                   3753: No match
                   3754: 
                   3755: /The cases of aaaa and aaaaaa are missed out below because Perl does things/
                   3756: /differently. We know that odd, and maybe incorrect, things happen with/
                   3757: No match
                   3758: /recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./
                   3759: No match
                   3760: 
                   3761: /^(a\1?){4}$/
                   3762:     a
                   3763: No match
                   3764:     aa
                   3765: No match
                   3766:     aaa
                   3767: No match
                   3768:     aaaaa
                   3769:  0: aaaaa
                   3770:  1: a
                   3771:     aaaaaaa
                   3772:  0: aaaaaaa
                   3773:  1: a
                   3774:     aaaaaaaa
                   3775: No match
                   3776:     aaaaaaaaa
                   3777: No match
                   3778:     aaaaaaaaaa
                   3779:  0: aaaaaaaaaa
                   3780:  1: aaaa
                   3781:     aaaaaaaaaaa
                   3782: No match
                   3783:     aaaaaaaaaaaa
                   3784: No match
                   3785:     aaaaaaaaaaaaa
                   3786: No match
                   3787:     aaaaaaaaaaaaaa
                   3788: No match
                   3789:     aaaaaaaaaaaaaaa
                   3790: No match
                   3791:     aaaaaaaaaaaaaaaa               
                   3792: No match
                   3793: 
                   3794: /^(a\1?)(a\1?)(a\2?)(a\3?)$/
                   3795:     a
                   3796: No match
                   3797:     aa
                   3798: No match
                   3799:     aaa
                   3800: No match
                   3801:     aaaa
                   3802:  0: aaaa
                   3803:  1: a
                   3804:  2: a
                   3805:  3: a
                   3806:  4: a
                   3807:     aaaaa
                   3808:  0: aaaaa
                   3809:  1: a
                   3810:  2: aa
                   3811:  3: a
                   3812:  4: a
                   3813:     aaaaaa
                   3814:  0: aaaaaa
                   3815:  1: a
                   3816:  2: aa
                   3817:  3: a
                   3818:  4: aa
                   3819:     aaaaaaa
                   3820:  0: aaaaaaa
                   3821:  1: a
                   3822:  2: aa
                   3823:  3: aaa
                   3824:  4: a
                   3825:     aaaaaaaa
                   3826: No match
                   3827:     aaaaaaaaa
                   3828: No match
                   3829:     aaaaaaaaaa
                   3830:  0: aaaaaaaaaa
                   3831:  1: a
                   3832:  2: aa
                   3833:  3: aaa
                   3834:  4: aaaa
                   3835:     aaaaaaaaaaa
                   3836: No match
                   3837:     aaaaaaaaaaaa
                   3838: No match
                   3839:     aaaaaaaaaaaaa
                   3840: No match
                   3841:     aaaaaaaaaaaaaa
                   3842: No match
                   3843:     aaaaaaaaaaaaaaa
                   3844: No match
                   3845:     aaaaaaaaaaaaaaaa               
                   3846: No match
                   3847: 
                   3848: /The following tests are taken from the Perl 5.005 test suite; some of them/
                   3849: /are compatible with 5.004, but I'd rather not have to sort them out./
                   3850: No match
                   3851: 
                   3852: /abc/
                   3853:     abc
                   3854:  0: abc
                   3855:     xabcy
                   3856:  0: abc
                   3857:     ababc
                   3858:  0: abc
                   3859:     *** Failers
                   3860: No match
                   3861:     xbc
                   3862: No match
                   3863:     axc
                   3864: No match
                   3865:     abx
                   3866: No match
                   3867: 
                   3868: /ab*c/
                   3869:     abc
                   3870:  0: abc
                   3871: 
                   3872: /ab*bc/
                   3873:     abc
                   3874:  0: abc
                   3875:     abbc
                   3876:  0: abbc
                   3877:     abbbbc
                   3878:  0: abbbbc
                   3879: 
                   3880: /.{1}/
                   3881:     abbbbc
                   3882:  0: a
                   3883: 
                   3884: /.{3,4}/
                   3885:     abbbbc
                   3886:  0: abbb
                   3887: 
                   3888: /ab{0,}bc/
                   3889:     abbbbc
                   3890:  0: abbbbc
                   3891: 
                   3892: /ab+bc/
                   3893:     abbc
                   3894:  0: abbc
                   3895:     *** Failers
                   3896: No match
                   3897:     abc
                   3898: No match
                   3899:     abq
                   3900: No match
                   3901: 
                   3902: /ab{1,}bc/
                   3903: 
                   3904: /ab+bc/
                   3905:     abbbbc
                   3906:  0: abbbbc
                   3907: 
                   3908: /ab{1,}bc/
                   3909:     abbbbc
                   3910:  0: abbbbc
                   3911: 
                   3912: /ab{1,3}bc/
                   3913:     abbbbc
                   3914:  0: abbbbc
                   3915: 
                   3916: /ab{3,4}bc/
                   3917:     abbbbc
                   3918:  0: abbbbc
                   3919: 
                   3920: /ab{4,5}bc/
                   3921:     *** Failers
                   3922: No match
                   3923:     abq
                   3924: No match
                   3925:     abbbbc
                   3926: No match
                   3927: 
                   3928: /ab?bc/
                   3929:     abbc
                   3930:  0: abbc
                   3931:     abc
                   3932:  0: abc
                   3933: 
                   3934: /ab{0,1}bc/
                   3935:     abc
                   3936:  0: abc
                   3937: 
                   3938: /ab?bc/
                   3939: 
                   3940: /ab?c/
                   3941:     abc
                   3942:  0: abc
                   3943: 
                   3944: /ab{0,1}c/
                   3945:     abc
                   3946:  0: abc
                   3947: 
                   3948: /^abc$/
                   3949:     abc
                   3950:  0: abc
                   3951:     *** Failers
                   3952: No match
                   3953:     abbbbc
                   3954: No match
                   3955:     abcc
                   3956: No match
                   3957: 
                   3958: /^abc/
                   3959:     abcc
                   3960:  0: abc
                   3961: 
                   3962: /^abc$/
                   3963: 
                   3964: /abc$/
                   3965:     aabc
                   3966:  0: abc
                   3967:     *** Failers
                   3968: No match
                   3969:     aabc
                   3970:  0: abc
                   3971:     aabcd
                   3972: No match
                   3973: 
                   3974: /^/
                   3975:     abc
                   3976:  0: 
                   3977: 
                   3978: /$/
                   3979:     abc
                   3980:  0: 
                   3981: 
                   3982: /a.c/
                   3983:     abc
                   3984:  0: abc
                   3985:     axc
                   3986:  0: axc
                   3987: 
                   3988: /a.*c/
                   3989:     axyzc
                   3990:  0: axyzc
                   3991: 
                   3992: /a[bc]d/
                   3993:     abd
                   3994:  0: abd
                   3995:     *** Failers
                   3996: No match
                   3997:     axyzd
                   3998: No match
                   3999:     abc
                   4000: No match
                   4001: 
                   4002: /a[b-d]e/
                   4003:     ace
                   4004:  0: ace
                   4005: 
                   4006: /a[b-d]/
                   4007:     aac
                   4008:  0: ac
                   4009: 
                   4010: /a[-b]/
                   4011:     a-
                   4012:  0: a-
                   4013: 
                   4014: /a[b-]/
                   4015:     a-
                   4016:  0: a-
                   4017: 
                   4018: /a]/
                   4019:     a]
                   4020:  0: a]
                   4021: 
                   4022: /a[]]b/
                   4023:     a]b
                   4024:  0: a]b
                   4025: 
                   4026: /a[^bc]d/
                   4027:     aed
                   4028:  0: aed
                   4029:     *** Failers
                   4030: No match
                   4031:     abd
                   4032: No match
                   4033:     abd
                   4034: No match
                   4035: 
                   4036: /a[^-b]c/
                   4037:     adc
                   4038:  0: adc
                   4039: 
                   4040: /a[^]b]c/
                   4041:     adc
                   4042:  0: adc
                   4043:     *** Failers
                   4044: No match
                   4045:     a-c
                   4046:  0: a-c
                   4047:     a]c
                   4048: No match
                   4049: 
                   4050: /\ba\b/
                   4051:     a-
                   4052:  0: a
                   4053:     -a
                   4054:  0: a
                   4055:     -a-
                   4056:  0: a
                   4057: 
                   4058: /\by\b/
                   4059:     *** Failers
                   4060: No match
                   4061:     xy
                   4062: No match
                   4063:     yz
                   4064: No match
                   4065:     xyz
                   4066: No match
                   4067: 
                   4068: /\Ba\B/
                   4069:     *** Failers
                   4070:  0: a
                   4071:     a-
                   4072: No match
                   4073:     -a
                   4074: No match
                   4075:     -a-
                   4076: No match
                   4077: 
                   4078: /\By\b/
                   4079:     xy
                   4080:  0: y
                   4081: 
                   4082: /\by\B/
                   4083:     yz
                   4084:  0: y
                   4085: 
                   4086: /\By\B/
                   4087:     xyz
                   4088:  0: y
                   4089: 
                   4090: /\w/
                   4091:     a
                   4092:  0: a
                   4093: 
                   4094: /\W/
                   4095:     -
                   4096:  0: -
                   4097:     *** Failers
                   4098:  0: *
                   4099:     -
                   4100:  0: -
                   4101:     a
                   4102: No match
                   4103: 
                   4104: /a\sb/
                   4105:     a b
                   4106:  0: a b
                   4107: 
                   4108: /a\Sb/
                   4109:     a-b
                   4110:  0: a-b
                   4111:     *** Failers
                   4112: No match
                   4113:     a-b
                   4114:  0: a-b
                   4115:     a b
                   4116: No match
                   4117: 
                   4118: /\d/
                   4119:     1
                   4120:  0: 1
                   4121: 
                   4122: /\D/
                   4123:     -
                   4124:  0: -
                   4125:     *** Failers
                   4126:  0: *
                   4127:     -
                   4128:  0: -
                   4129:     1
                   4130: No match
                   4131: 
                   4132: /[\w]/
                   4133:     a
                   4134:  0: a
                   4135: 
                   4136: /[\W]/
                   4137:     -
                   4138:  0: -
                   4139:     *** Failers
                   4140:  0: *
                   4141:     -
                   4142:  0: -
                   4143:     a
                   4144: No match
                   4145: 
                   4146: /a[\s]b/
                   4147:     a b
                   4148:  0: a b
                   4149: 
                   4150: /a[\S]b/
                   4151:     a-b
                   4152:  0: a-b
                   4153:     *** Failers
                   4154: No match
                   4155:     a-b
                   4156:  0: a-b
                   4157:     a b
                   4158: No match
                   4159: 
                   4160: /[\d]/
                   4161:     1
                   4162:  0: 1
                   4163: 
                   4164: /[\D]/
                   4165:     -
                   4166:  0: -
                   4167:     *** Failers
                   4168:  0: *
                   4169:     -
                   4170:  0: -
                   4171:     1
                   4172: No match
                   4173: 
                   4174: /ab|cd/
                   4175:     abc
                   4176:  0: ab
                   4177:     abcd
                   4178:  0: ab
                   4179: 
                   4180: /()ef/
                   4181:     def
                   4182:  0: ef
                   4183:  1: 
                   4184: 
                   4185: /$b/
                   4186: 
                   4187: /a\(b/
                   4188:     a(b
                   4189:  0: a(b
                   4190: 
                   4191: /a\(*b/
                   4192:     ab
                   4193:  0: ab
                   4194:     a((b
                   4195:  0: a((b
                   4196: 
                   4197: /a\\b/
                   4198:     a\b
                   4199: No match
                   4200: 
                   4201: /((a))/
                   4202:     abc
                   4203:  0: a
                   4204:  1: a
                   4205:  2: a
                   4206: 
                   4207: /(a)b(c)/
                   4208:     abc
                   4209:  0: abc
                   4210:  1: a
                   4211:  2: c
                   4212: 
                   4213: /a+b+c/
                   4214:     aabbabc
                   4215:  0: abc
                   4216: 
                   4217: /a{1,}b{1,}c/
                   4218:     aabbabc
                   4219:  0: abc
                   4220: 
                   4221: /a.+?c/
                   4222:     abcabc
                   4223:  0: abc
                   4224: 
                   4225: /(a+|b)*/
                   4226:     ab
                   4227:  0: ab
                   4228:  1: b
                   4229: 
                   4230: /(a+|b){0,}/
                   4231:     ab
                   4232:  0: ab
                   4233:  1: b
                   4234: 
                   4235: /(a+|b)+/
                   4236:     ab
                   4237:  0: ab
                   4238:  1: b
                   4239: 
                   4240: /(a+|b){1,}/
                   4241:     ab
                   4242:  0: ab
                   4243:  1: b
                   4244: 
                   4245: /(a+|b)?/
                   4246:     ab
                   4247:  0: a
                   4248:  1: a
                   4249: 
                   4250: /(a+|b){0,1}/
                   4251:     ab
                   4252:  0: a
                   4253:  1: a
                   4254: 
                   4255: /[^ab]*/
                   4256:     cde
                   4257:  0: cde
                   4258: 
                   4259: /abc/
                   4260:     *** Failers
                   4261: No match
                   4262:     b
                   4263: No match
                   4264:     
                   4265: 
                   4266: /a*/
                   4267:     
                   4268: 
                   4269: /([abc])*d/
                   4270:     abbbcd
                   4271:  0: abbbcd
                   4272:  1: c
                   4273: 
                   4274: /([abc])*bcd/
                   4275:     abcd
                   4276:  0: abcd
                   4277:  1: a
                   4278: 
                   4279: /a|b|c|d|e/
                   4280:     e
                   4281:  0: e
                   4282: 
                   4283: /(a|b|c|d|e)f/
                   4284:     ef
                   4285:  0: ef
                   4286:  1: e
                   4287: 
                   4288: /abcd*efg/
                   4289:     abcdefg
                   4290:  0: abcdefg
                   4291: 
                   4292: /ab*/
                   4293:     xabyabbbz
                   4294:  0: ab
                   4295:     xayabbbz
                   4296:  0: a
                   4297: 
                   4298: /(ab|cd)e/
                   4299:     abcde
                   4300:  0: cde
                   4301:  1: cd
                   4302: 
                   4303: /[abhgefdc]ij/
                   4304:     hij
                   4305:  0: hij
                   4306: 
                   4307: /^(ab|cd)e/
                   4308: 
                   4309: /(abc|)ef/
                   4310:     abcdef
                   4311:  0: ef
                   4312:  1: 
                   4313: 
                   4314: /(a|b)c*d/
                   4315:     abcd
                   4316:  0: bcd
                   4317:  1: b
                   4318: 
                   4319: /(ab|ab*)bc/
                   4320:     abc
                   4321:  0: abc
                   4322:  1: a
                   4323: 
                   4324: /a([bc]*)c*/
                   4325:     abc
                   4326:  0: abc
                   4327:  1: bc
                   4328: 
                   4329: /a([bc]*)(c*d)/
                   4330:     abcd
                   4331:  0: abcd
                   4332:  1: bc
                   4333:  2: d
                   4334: 
                   4335: /a([bc]+)(c*d)/
                   4336:     abcd
                   4337:  0: abcd
                   4338:  1: bc
                   4339:  2: d
                   4340: 
                   4341: /a([bc]*)(c+d)/
                   4342:     abcd
                   4343:  0: abcd
                   4344:  1: b
                   4345:  2: cd
                   4346: 
                   4347: /a[bcd]*dcdcde/
                   4348:     adcdcde
                   4349:  0: adcdcde
                   4350: 
                   4351: /a[bcd]+dcdcde/
                   4352:     *** Failers
                   4353: No match
                   4354:     abcde
                   4355: No match
                   4356:     adcdcde
                   4357: No match
                   4358: 
                   4359: /(ab|a)b*c/
                   4360:     abc
                   4361:  0: abc
                   4362:  1: ab
                   4363: 
                   4364: /((a)(b)c)(d)/
                   4365:     abcd
                   4366:  0: abcd
                   4367:  1: abc
                   4368:  2: a
                   4369:  3: b
                   4370:  4: d
                   4371: 
                   4372: /[a-zA-Z_][a-zA-Z0-9_]*/
                   4373:     alpha
                   4374:  0: alpha
                   4375: 
                   4376: /^a(bc+|b[eh])g|.h$/
                   4377:     abh
                   4378:  0: bh
                   4379: 
                   4380: /(bc+d$|ef*g.|h?i(j|k))/
                   4381:     effgz
                   4382:  0: effgz
                   4383:  1: effgz
                   4384:     ij
                   4385:  0: ij
                   4386:  1: ij
                   4387:  2: j
                   4388:     reffgz
                   4389:  0: effgz
                   4390:  1: effgz
                   4391:     *** Failers
                   4392: No match
                   4393:     effg
                   4394: No match
                   4395:     bcdd
                   4396: No match
                   4397: 
                   4398: /((((((((((a))))))))))/
                   4399:     a
                   4400:  0: a
                   4401:  1: a
                   4402:  2: a
                   4403:  3: a
                   4404:  4: a
                   4405:  5: a
                   4406:  6: a
                   4407:  7: a
                   4408:  8: a
                   4409:  9: a
                   4410: 10: a
                   4411: 
                   4412: /((((((((((a))))))))))\10/
                   4413:     aa
                   4414:  0: aa
                   4415:  1: a
                   4416:  2: a
                   4417:  3: a
                   4418:  4: a
                   4419:  5: a
                   4420:  6: a
                   4421:  7: a
                   4422:  8: a
                   4423:  9: a
                   4424: 10: a
                   4425: 
                   4426: /(((((((((a)))))))))/
                   4427:     a
                   4428:  0: a
                   4429:  1: a
                   4430:  2: a
                   4431:  3: a
                   4432:  4: a
                   4433:  5: a
                   4434:  6: a
                   4435:  7: a
                   4436:  8: a
                   4437:  9: a
                   4438: 
                   4439: /multiple words of text/
                   4440:     *** Failers
                   4441: No match
                   4442:     aa
                   4443: No match
                   4444:     uh-uh
                   4445: No match
                   4446: 
                   4447: /multiple words/
                   4448:     multiple words, yeah
                   4449:  0: multiple words
                   4450: 
                   4451: /(.*)c(.*)/
                   4452:     abcde
                   4453:  0: abcde
                   4454:  1: ab
                   4455:  2: de
                   4456: 
                   4457: /\((.*), (.*)\)/
                   4458:     (a, b)
                   4459:  0: (a, b)
                   4460:  1: a
                   4461:  2: b
                   4462: 
                   4463: /[k]/
                   4464: 
                   4465: /abcd/
                   4466:     abcd
                   4467:  0: abcd
                   4468: 
                   4469: /a(bc)d/
                   4470:     abcd
                   4471:  0: abcd
                   4472:  1: bc
                   4473: 
                   4474: /a[-]?c/
                   4475:     ac
                   4476:  0: ac
                   4477: 
                   4478: /(abc)\1/
                   4479:     abcabc
                   4480:  0: abcabc
                   4481:  1: abc
                   4482: 
                   4483: /([a-c]*)\1/
                   4484:     abcabc
                   4485:  0: abcabc
                   4486:  1: abc
                   4487: 
                   4488: /(a)|\1/
                   4489:     a
                   4490:  0: a
                   4491:  1: a
                   4492:     *** Failers
                   4493:  0: a
                   4494:  1: a
                   4495:     ab
                   4496:  0: a
                   4497:  1: a
                   4498:     x
                   4499: No match
                   4500: 
                   4501: /(([a-c])b*?\2)*/
                   4502:     ababbbcbc
                   4503:  0: ababb
                   4504:  1: bb
                   4505:  2: b
                   4506: 
                   4507: /(([a-c])b*?\2){3}/
                   4508:     ababbbcbc
                   4509:  0: ababbbcbc
                   4510:  1: cbc
                   4511:  2: c
                   4512: 
                   4513: /((\3|b)\2(a)x)+/
                   4514:     aaaxabaxbaaxbbax
                   4515:  0: bbax
                   4516:  1: bbax
                   4517:  2: b
                   4518:  3: a
                   4519: 
                   4520: /((\3|b)\2(a)){2,}/
                   4521:     bbaababbabaaaaabbaaaabba
                   4522:  0: bbaaaabba
                   4523:  1: bba
                   4524:  2: b
                   4525:  3: a
                   4526: 
                   4527: /abc/i
                   4528:     ABC
                   4529:  0: ABC
                   4530:     XABCY
                   4531:  0: ABC
                   4532:     ABABC
                   4533:  0: ABC
                   4534:     *** Failers
                   4535: No match
                   4536:     aaxabxbaxbbx
                   4537: No match
                   4538:     XBC
                   4539: No match
                   4540:     AXC
                   4541: No match
                   4542:     ABX
                   4543: No match
                   4544: 
                   4545: /ab*c/i
                   4546:     ABC
                   4547:  0: ABC
                   4548: 
                   4549: /ab*bc/i
                   4550:     ABC
                   4551:  0: ABC
                   4552:     ABBC
                   4553:  0: ABBC
                   4554: 
                   4555: /ab*?bc/i
                   4556:     ABBBBC
                   4557:  0: ABBBBC
                   4558: 
                   4559: /ab{0,}?bc/i
                   4560:     ABBBBC
                   4561:  0: ABBBBC
                   4562: 
                   4563: /ab+?bc/i
                   4564:     ABBC
                   4565:  0: ABBC
                   4566: 
                   4567: /ab+bc/i
                   4568:     *** Failers
                   4569: No match
                   4570:     ABC
                   4571: No match
                   4572:     ABQ
                   4573: No match
                   4574: 
                   4575: /ab{1,}bc/i
                   4576: 
                   4577: /ab+bc/i
                   4578:     ABBBBC
                   4579:  0: ABBBBC
                   4580: 
                   4581: /ab{1,}?bc/i
                   4582:     ABBBBC
                   4583:  0: ABBBBC
                   4584: 
                   4585: /ab{1,3}?bc/i
                   4586:     ABBBBC
                   4587:  0: ABBBBC
                   4588: 
                   4589: /ab{3,4}?bc/i
                   4590:     ABBBBC
                   4591:  0: ABBBBC
                   4592: 
                   4593: /ab{4,5}?bc/i
                   4594:     *** Failers
                   4595: No match
                   4596:     ABQ
                   4597: No match
                   4598:     ABBBBC
                   4599: No match
                   4600: 
                   4601: /ab??bc/i
                   4602:     ABBC
                   4603:  0: ABBC
                   4604:     ABC
                   4605:  0: ABC
                   4606: 
                   4607: /ab{0,1}?bc/i
                   4608:     ABC
                   4609:  0: ABC
                   4610: 
                   4611: /ab??bc/i
                   4612: 
                   4613: /ab??c/i
                   4614:     ABC
                   4615:  0: ABC
                   4616: 
                   4617: /ab{0,1}?c/i
                   4618:     ABC
                   4619:  0: ABC
                   4620: 
                   4621: /^abc$/i
                   4622:     ABC
                   4623:  0: ABC
                   4624:     *** Failers
                   4625: No match
                   4626:     ABBBBC
                   4627: No match
                   4628:     ABCC
                   4629: No match
                   4630: 
                   4631: /^abc/i
                   4632:     ABCC
                   4633:  0: ABC
                   4634: 
                   4635: /^abc$/i
                   4636: 
                   4637: /abc$/i
                   4638:     AABC
                   4639:  0: ABC
                   4640: 
                   4641: /^/i
                   4642:     ABC
                   4643:  0: 
                   4644: 
                   4645: /$/i
                   4646:     ABC
                   4647:  0: 
                   4648: 
                   4649: /a.c/i
                   4650:     ABC
                   4651:  0: ABC
                   4652:     AXC
                   4653:  0: AXC
                   4654: 
                   4655: /a.*?c/i
                   4656:     AXYZC
                   4657:  0: AXYZC
                   4658: 
                   4659: /a.*c/i
                   4660:     *** Failers
                   4661: No match
                   4662:     AABC
                   4663:  0: AABC
                   4664:     AXYZD
                   4665: No match
                   4666: 
                   4667: /a[bc]d/i
                   4668:     ABD
                   4669:  0: ABD
                   4670: 
                   4671: /a[b-d]e/i
                   4672:     ACE
                   4673:  0: ACE
                   4674:     *** Failers
                   4675: No match
                   4676:     ABC
                   4677: No match
                   4678:     ABD
                   4679: No match
                   4680: 
                   4681: /a[b-d]/i
                   4682:     AAC
                   4683:  0: AC
                   4684: 
                   4685: /a[-b]/i
                   4686:     A-
                   4687:  0: A-
                   4688: 
                   4689: /a[b-]/i
                   4690:     A-
                   4691:  0: A-
                   4692: 
                   4693: /a]/i
                   4694:     A]
                   4695:  0: A]
                   4696: 
                   4697: /a[]]b/i
                   4698:     A]B
                   4699:  0: A]B
                   4700: 
                   4701: /a[^bc]d/i
                   4702:     AED
                   4703:  0: AED
                   4704: 
                   4705: /a[^-b]c/i
                   4706:     ADC
                   4707:  0: ADC
                   4708:     *** Failers
                   4709: No match
                   4710:     ABD
                   4711: No match
                   4712:     A-C
                   4713: No match
                   4714: 
                   4715: /a[^]b]c/i
                   4716:     ADC
                   4717:  0: ADC
                   4718: 
                   4719: /ab|cd/i
                   4720:     ABC
                   4721:  0: AB
                   4722:     ABCD
                   4723:  0: AB
                   4724: 
                   4725: /()ef/i
                   4726:     DEF
                   4727:  0: EF
                   4728:  1: 
                   4729: 
                   4730: /$b/i
                   4731:     *** Failers
                   4732: No match
                   4733:     A]C
                   4734: No match
                   4735:     B
                   4736: No match
                   4737: 
                   4738: /a\(b/i
                   4739:     A(B
                   4740:  0: A(B
                   4741: 
                   4742: /a\(*b/i
                   4743:     AB
                   4744:  0: AB
                   4745:     A((B
                   4746:  0: A((B
                   4747: 
                   4748: /a\\b/i
                   4749:     A\B
                   4750: No match
                   4751: 
                   4752: /((a))/i
                   4753:     ABC
                   4754:  0: A
                   4755:  1: A
                   4756:  2: A
                   4757: 
                   4758: /(a)b(c)/i
                   4759:     ABC
                   4760:  0: ABC
                   4761:  1: A
                   4762:  2: C
                   4763: 
                   4764: /a+b+c/i
                   4765:     AABBABC
                   4766:  0: ABC
                   4767: 
                   4768: /a{1,}b{1,}c/i
                   4769:     AABBABC
                   4770:  0: ABC
                   4771: 
                   4772: /a.+?c/i
                   4773:     ABCABC
                   4774:  0: ABC
                   4775: 
                   4776: /a.*?c/i
                   4777:     ABCABC
                   4778:  0: ABC
                   4779: 
                   4780: /a.{0,5}?c/i
                   4781:     ABCABC
                   4782:  0: ABC
                   4783: 
                   4784: /(a+|b)*/i
                   4785:     AB
                   4786:  0: AB
                   4787:  1: B
                   4788: 
                   4789: /(a+|b){0,}/i
                   4790:     AB
                   4791:  0: AB
                   4792:  1: B
                   4793: 
                   4794: /(a+|b)+/i
                   4795:     AB
                   4796:  0: AB
                   4797:  1: B
                   4798: 
                   4799: /(a+|b){1,}/i
                   4800:     AB
                   4801:  0: AB
                   4802:  1: B
                   4803: 
                   4804: /(a+|b)?/i
                   4805:     AB
                   4806:  0: A
                   4807:  1: A
                   4808: 
                   4809: /(a+|b){0,1}/i
                   4810:     AB
                   4811:  0: A
                   4812:  1: A
                   4813: 
                   4814: /(a+|b){0,1}?/i
                   4815:     AB
                   4816:  0: 
                   4817: 
                   4818: /[^ab]*/i
                   4819:     CDE
                   4820:  0: CDE
                   4821: 
                   4822: /abc/i
                   4823: 
                   4824: /a*/i
                   4825:     
                   4826: 
                   4827: /([abc])*d/i
                   4828:     ABBBCD
                   4829:  0: ABBBCD
                   4830:  1: C
                   4831: 
                   4832: /([abc])*bcd/i
                   4833:     ABCD
                   4834:  0: ABCD
                   4835:  1: A
                   4836: 
                   4837: /a|b|c|d|e/i
                   4838:     E
                   4839:  0: E
                   4840: 
                   4841: /(a|b|c|d|e)f/i
                   4842:     EF
                   4843:  0: EF
                   4844:  1: E
                   4845: 
                   4846: /abcd*efg/i
                   4847:     ABCDEFG
                   4848:  0: ABCDEFG
                   4849: 
                   4850: /ab*/i
                   4851:     XABYABBBZ
                   4852:  0: AB
                   4853:     XAYABBBZ
                   4854:  0: A
                   4855: 
                   4856: /(ab|cd)e/i
                   4857:     ABCDE
                   4858:  0: CDE
                   4859:  1: CD
                   4860: 
                   4861: /[abhgefdc]ij/i
                   4862:     HIJ
                   4863:  0: HIJ
                   4864: 
                   4865: /^(ab|cd)e/i
                   4866:     ABCDE
                   4867: No match
                   4868: 
                   4869: /(abc|)ef/i
                   4870:     ABCDEF
                   4871:  0: EF
                   4872:  1: 
                   4873: 
                   4874: /(a|b)c*d/i
                   4875:     ABCD
                   4876:  0: BCD
                   4877:  1: B
                   4878: 
                   4879: /(ab|ab*)bc/i
                   4880:     ABC
                   4881:  0: ABC
                   4882:  1: A
                   4883: 
                   4884: /a([bc]*)c*/i
                   4885:     ABC
                   4886:  0: ABC
                   4887:  1: BC
                   4888: 
                   4889: /a([bc]*)(c*d)/i
                   4890:     ABCD
                   4891:  0: ABCD
                   4892:  1: BC
                   4893:  2: D
                   4894: 
                   4895: /a([bc]+)(c*d)/i
                   4896:     ABCD
                   4897:  0: ABCD
                   4898:  1: BC
                   4899:  2: D
                   4900: 
                   4901: /a([bc]*)(c+d)/i
                   4902:     ABCD
                   4903:  0: ABCD
                   4904:  1: B
                   4905:  2: CD
                   4906: 
                   4907: /a[bcd]*dcdcde/i
                   4908:     ADCDCDE
                   4909:  0: ADCDCDE
                   4910: 
                   4911: /a[bcd]+dcdcde/i
                   4912: 
                   4913: /(ab|a)b*c/i
                   4914:     ABC
                   4915:  0: ABC
                   4916:  1: AB
                   4917: 
                   4918: /((a)(b)c)(d)/i
                   4919:     ABCD
                   4920:  0: ABCD
                   4921:  1: ABC
                   4922:  2: A
                   4923:  3: B
                   4924:  4: D
                   4925: 
                   4926: /[a-zA-Z_][a-zA-Z0-9_]*/i
                   4927:     ALPHA
                   4928:  0: ALPHA
                   4929: 
                   4930: /^a(bc+|b[eh])g|.h$/i
                   4931:     ABH
                   4932:  0: BH
                   4933: 
                   4934: /(bc+d$|ef*g.|h?i(j|k))/i
                   4935:     EFFGZ
                   4936:  0: EFFGZ
                   4937:  1: EFFGZ
                   4938:     IJ
                   4939:  0: IJ
                   4940:  1: IJ
                   4941:  2: J
                   4942:     REFFGZ
                   4943:  0: EFFGZ
                   4944:  1: EFFGZ
                   4945:     *** Failers
                   4946: No match
                   4947:     ADCDCDE
                   4948: No match
                   4949:     EFFG
                   4950: No match
                   4951:     BCDD
                   4952: No match
                   4953: 
                   4954: /((((((((((a))))))))))/i
                   4955:     A
                   4956:  0: A
                   4957:  1: A
                   4958:  2: A
                   4959:  3: A
                   4960:  4: A
                   4961:  5: A
                   4962:  6: A
                   4963:  7: A
                   4964:  8: A
                   4965:  9: A
                   4966: 10: A
                   4967: 
                   4968: /((((((((((a))))))))))\10/i
                   4969:     AA
                   4970:  0: AA
                   4971:  1: A
                   4972:  2: A
                   4973:  3: A
                   4974:  4: A
                   4975:  5: A
                   4976:  6: A
                   4977:  7: A
                   4978:  8: A
                   4979:  9: A
                   4980: 10: A
                   4981: 
                   4982: /(((((((((a)))))))))/i
                   4983:     A
                   4984:  0: A
                   4985:  1: A
                   4986:  2: A
                   4987:  3: A
                   4988:  4: A
                   4989:  5: A
                   4990:  6: A
                   4991:  7: A
                   4992:  8: A
                   4993:  9: A
                   4994: 
                   4995: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
                   4996:     A
                   4997:  0: A
                   4998:  1: A
                   4999: 
                   5000: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
                   5001:     C
                   5002:  0: C
                   5003:  1: C
                   5004: 
                   5005: /multiple words of text/i
                   5006:     *** Failers
                   5007: No match
                   5008:     AA
                   5009: No match
                   5010:     UH-UH
                   5011: No match
                   5012: 
                   5013: /multiple words/i
                   5014:     MULTIPLE WORDS, YEAH
                   5015:  0: MULTIPLE WORDS
                   5016: 
                   5017: /(.*)c(.*)/i
                   5018:     ABCDE
                   5019:  0: ABCDE
                   5020:  1: AB
                   5021:  2: DE
                   5022: 
                   5023: /\((.*), (.*)\)/i
                   5024:     (A, B)
                   5025:  0: (A, B)
                   5026:  1: A
                   5027:  2: B
                   5028: 
                   5029: /[k]/i
                   5030: 
                   5031: /abcd/i
                   5032:     ABCD
                   5033:  0: ABCD
                   5034: 
                   5035: /a(bc)d/i
                   5036:     ABCD
                   5037:  0: ABCD
                   5038:  1: BC
                   5039: 
                   5040: /a[-]?c/i
                   5041:     AC
                   5042:  0: AC
                   5043: 
                   5044: /(abc)\1/i
                   5045:     ABCABC
                   5046:  0: ABCABC
                   5047:  1: ABC
                   5048: 
                   5049: /([a-c]*)\1/i
                   5050:     ABCABC
                   5051:  0: ABCABC
                   5052:  1: ABC
                   5053: 
                   5054: /a(?!b)./
                   5055:     abad
                   5056:  0: ad
                   5057: 
                   5058: /a(?=d)./
                   5059:     abad
                   5060:  0: ad
                   5061: 
                   5062: /a(?=c|d)./
                   5063:     abad
                   5064:  0: ad
                   5065: 
                   5066: /a(?:b|c|d)(.)/
                   5067:     ace
                   5068:  0: ace
                   5069:  1: e
                   5070: 
                   5071: /a(?:b|c|d)*(.)/
                   5072:     ace
                   5073:  0: ace
                   5074:  1: e
                   5075: 
                   5076: /a(?:b|c|d)+?(.)/
                   5077:     ace
                   5078:  0: ace
                   5079:  1: e
                   5080:     acdbcdbe
                   5081:  0: acd
                   5082:  1: d
                   5083: 
                   5084: /a(?:b|c|d)+(.)/
                   5085:     acdbcdbe
                   5086:  0: acdbcdbe
                   5087:  1: e
                   5088: 
                   5089: /a(?:b|c|d){2}(.)/
                   5090:     acdbcdbe
                   5091:  0: acdb
                   5092:  1: b
                   5093: 
                   5094: /a(?:b|c|d){4,5}(.)/
                   5095:     acdbcdbe
                   5096:  0: acdbcdb
                   5097:  1: b
                   5098: 
                   5099: /a(?:b|c|d){4,5}?(.)/
                   5100:     acdbcdbe
                   5101:  0: acdbcd
                   5102:  1: d
                   5103: 
                   5104: /((foo)|(bar))*/
                   5105:     foobar
                   5106:  0: foobar
                   5107:  1: bar
                   5108:  2: foo
                   5109:  3: bar
                   5110: 
                   5111: /a(?:b|c|d){6,7}(.)/
                   5112:     acdbcdbe
                   5113:  0: acdbcdbe
                   5114:  1: e
                   5115: 
                   5116: /a(?:b|c|d){6,7}?(.)/
                   5117:     acdbcdbe
                   5118:  0: acdbcdbe
                   5119:  1: e
                   5120: 
                   5121: /a(?:b|c|d){5,6}(.)/
                   5122:     acdbcdbe
                   5123:  0: acdbcdbe
                   5124:  1: e
                   5125: 
                   5126: /a(?:b|c|d){5,6}?(.)/
                   5127:     acdbcdbe
                   5128:  0: acdbcdb
                   5129:  1: b
                   5130: 
                   5131: /a(?:b|c|d){5,7}(.)/
                   5132:     acdbcdbe
                   5133:  0: acdbcdbe
                   5134:  1: e
                   5135: 
                   5136: /a(?:b|c|d){5,7}?(.)/
                   5137:     acdbcdbe
                   5138:  0: acdbcdb
                   5139:  1: b
                   5140: 
                   5141: /a(?:b|(c|e){1,2}?|d)+?(.)/
                   5142:     ace
                   5143:  0: ace
                   5144:  1: c
                   5145:  2: e
                   5146: 
                   5147: /^(.+)?B/
                   5148:     AB
                   5149:  0: AB
                   5150:  1: A
                   5151: 
                   5152: /^([^a-z])|(\^)$/
                   5153:     .
                   5154:  0: .
                   5155:  1: .
                   5156: 
                   5157: /^[<>]&/
                   5158:     <&OUT
                   5159:  0: <&
                   5160: 
                   5161: /^(a\1?){4}$/
                   5162:     aaaaaaaaaa
                   5163:  0: aaaaaaaaaa
                   5164:  1: aaaa
                   5165:     *** Failers
                   5166: No match
                   5167:     AB
                   5168: No match
                   5169:     aaaaaaaaa
                   5170: No match
                   5171:     aaaaaaaaaaa
                   5172: No match
                   5173: 
                   5174: /^(a(?(1)\1)){4}$/
                   5175:     aaaaaaaaaa
                   5176:  0: aaaaaaaaaa
                   5177:  1: aaaa
                   5178:     *** Failers
                   5179: No match
                   5180:     aaaaaaaaa
                   5181: No match
                   5182:     aaaaaaaaaaa
                   5183: No match
                   5184: 
                   5185: /(?:(f)(o)(o)|(b)(a)(r))*/
                   5186:     foobar
                   5187:  0: foobar
                   5188:  1: f
                   5189:  2: o
                   5190:  3: o
                   5191:  4: b
                   5192:  5: a
                   5193:  6: r
                   5194: 
                   5195: /(?<=a)b/
                   5196:     ab
                   5197:  0: b
                   5198:     *** Failers
                   5199: No match
                   5200:     cb
                   5201: No match
                   5202:     b
                   5203: No match
                   5204: 
                   5205: /(?<!c)b/
                   5206:     ab
                   5207:  0: b
                   5208:     b
                   5209:  0: b
                   5210:     b
                   5211:  0: b
                   5212: 
                   5213: /(?:..)*a/
                   5214:     aba
                   5215:  0: aba
                   5216: 
                   5217: /(?:..)*?a/
                   5218:     aba
                   5219:  0: a
                   5220: 
                   5221: /^(?:b|a(?=(.)))*\1/
                   5222:     abc
                   5223:  0: ab
                   5224:  1: b
                   5225: 
                   5226: /^(){3,5}/
                   5227:     abc
                   5228:  0: 
                   5229:  1: 
                   5230: 
                   5231: /^(a+)*ax/
                   5232:     aax
                   5233:  0: aax
                   5234:  1: a
                   5235: 
                   5236: /^((a|b)+)*ax/
                   5237:     aax
                   5238:  0: aax
                   5239:  1: a
                   5240:  2: a
                   5241: 
                   5242: /^((a|bc)+)*ax/
                   5243:     aax
                   5244:  0: aax
                   5245:  1: a
                   5246:  2: a
                   5247: 
                   5248: /(a|x)*ab/
                   5249:     cab
                   5250:  0: ab
                   5251: 
                   5252: /(a)*ab/
                   5253:     cab
                   5254:  0: ab
                   5255: 
                   5256: /(?:(?i)a)b/
                   5257:     ab
                   5258:  0: ab
                   5259: 
                   5260: /((?i)a)b/
                   5261:     ab
                   5262:  0: ab
                   5263:  1: a
                   5264: 
                   5265: /(?:(?i)a)b/
                   5266:     Ab
                   5267:  0: Ab
                   5268: 
                   5269: /((?i)a)b/
                   5270:     Ab
                   5271:  0: Ab
                   5272:  1: A
                   5273: 
                   5274: /(?:(?i)a)b/
                   5275:     *** Failers
                   5276: No match
                   5277:     cb
                   5278: No match
                   5279:     aB
                   5280: No match
                   5281: 
                   5282: /((?i)a)b/
                   5283: 
                   5284: /(?i:a)b/
                   5285:     ab
                   5286:  0: ab
                   5287: 
                   5288: /((?i:a))b/
                   5289:     ab
                   5290:  0: ab
                   5291:  1: a
                   5292: 
                   5293: /(?i:a)b/
                   5294:     Ab
                   5295:  0: Ab
                   5296: 
                   5297: /((?i:a))b/
                   5298:     Ab
                   5299:  0: Ab
                   5300:  1: A
                   5301: 
                   5302: /(?i:a)b/
                   5303:     *** Failers
                   5304: No match
                   5305:     aB
                   5306: No match
                   5307:     aB
                   5308: No match
                   5309: 
                   5310: /((?i:a))b/
                   5311: 
                   5312: /(?:(?-i)a)b/i
                   5313:     ab
                   5314:  0: ab
                   5315: 
                   5316: /((?-i)a)b/i
                   5317:     ab
                   5318:  0: ab
                   5319:  1: a
                   5320: 
                   5321: /(?:(?-i)a)b/i
                   5322:     aB
                   5323:  0: aB
                   5324: 
                   5325: /((?-i)a)b/i
                   5326:     aB
                   5327:  0: aB
                   5328:  1: a
                   5329: 
                   5330: /(?:(?-i)a)b/i
                   5331:     *** Failers
                   5332: No match
                   5333:     aB
                   5334:  0: aB
                   5335:     Ab
                   5336: No match
                   5337: 
                   5338: /((?-i)a)b/i
                   5339: 
                   5340: /(?:(?-i)a)b/i
                   5341:     aB
                   5342:  0: aB
                   5343: 
                   5344: /((?-i)a)b/i
                   5345:     aB
                   5346:  0: aB
                   5347:  1: a
                   5348: 
                   5349: /(?:(?-i)a)b/i
                   5350:     *** Failers
                   5351: No match
                   5352:     Ab
                   5353: No match
                   5354:     AB
                   5355: No match
                   5356: 
                   5357: /((?-i)a)b/i
                   5358: 
                   5359: /(?-i:a)b/i
                   5360:     ab
                   5361:  0: ab
                   5362: 
                   5363: /((?-i:a))b/i
                   5364:     ab
                   5365:  0: ab
                   5366:  1: a
                   5367: 
                   5368: /(?-i:a)b/i
                   5369:     aB
                   5370:  0: aB
                   5371: 
                   5372: /((?-i:a))b/i
                   5373:     aB
                   5374:  0: aB
                   5375:  1: a
                   5376: 
                   5377: /(?-i:a)b/i
                   5378:     *** Failers
                   5379: No match
                   5380:     AB
                   5381: No match
                   5382:     Ab
                   5383: No match
                   5384: 
                   5385: /((?-i:a))b/i
                   5386: 
                   5387: /(?-i:a)b/i
                   5388:     aB
                   5389:  0: aB
                   5390: 
                   5391: /((?-i:a))b/i
                   5392:     aB
                   5393:  0: aB
                   5394:  1: a
                   5395: 
                   5396: /(?-i:a)b/i
                   5397:     *** Failers
                   5398: No match
                   5399:     Ab
                   5400: No match
                   5401:     AB
                   5402: No match
                   5403: 
                   5404: /((?-i:a))b/i
                   5405: 
                   5406: /((?-i:a.))b/i
                   5407:     *** Failers
                   5408: No match
                   5409:     AB
                   5410: No match
                   5411:     a\nB
                   5412: No match
                   5413: 
                   5414: /((?s-i:a.))b/i
                   5415:     a\nB
                   5416:  0: a\x0aB
                   5417:  1: a\x0a
                   5418: 
                   5419: /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
                   5420:     cabbbb
                   5421:  0: cabbbb
                   5422: 
                   5423: /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
                   5424:     caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
                   5425:  0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
                   5426: 
                   5427: /(ab)\d\1/i
                   5428:     Ab4ab
                   5429:  0: Ab4ab
                   5430:  1: Ab
                   5431:     ab4Ab
                   5432:  0: ab4Ab
                   5433:  1: ab
                   5434: 
                   5435: /foo\w*\d{4}baz/
                   5436:     foobar1234baz
                   5437:  0: foobar1234baz
                   5438: 
                   5439: /x(~~)*(?:(?:F)?)?/
                   5440:     x~~
                   5441:  0: x~~
                   5442:  1: ~~
                   5443: 
                   5444: /^a(?#xxx){3}c/
                   5445:     aaac
                   5446:  0: aaac
                   5447: 
                   5448: /^a (?#xxx) (?#yyy) {3}c/x
                   5449:     aaac
                   5450:  0: aaac
                   5451: 
                   5452: /(?<![cd])b/
                   5453:     *** Failers
                   5454: No match
                   5455:     B\nB
                   5456: No match
                   5457:     dbcb
                   5458: No match
                   5459: 
                   5460: /(?<![cd])[ab]/
                   5461:     dbaacb
                   5462:  0: a
                   5463: 
                   5464: /(?<!(c|d))b/
                   5465: 
                   5466: /(?<!(c|d))[ab]/
                   5467:     dbaacb
                   5468:  0: a
                   5469: 
                   5470: /(?<!cd)[ab]/
                   5471:     cdaccb
                   5472:  0: b
                   5473: 
                   5474: /^(?:a?b?)*$/
                   5475:     \
                   5476:  0: 
                   5477:     a
                   5478:  0: a
                   5479:     ab
                   5480:  0: ab
                   5481:     aaa   
                   5482:  0: aaa
                   5483:     *** Failers
                   5484: No match
                   5485:     dbcb
                   5486: No match
                   5487:     a--
                   5488: No match
                   5489:     aa-- 
                   5490: No match
                   5491: 
                   5492: /((?s)^a(.))((?m)^b$)/
                   5493:     a\nb\nc\n
                   5494:  0: a\x0ab
                   5495:  1: a\x0a
                   5496:  2: \x0a
                   5497:  3: b
                   5498: 
                   5499: /((?m)^b$)/
                   5500:     a\nb\nc\n
                   5501:  0: b
                   5502:  1: b
                   5503: 
                   5504: /(?m)^b/
                   5505:     a\nb\n
                   5506:  0: b
                   5507: 
                   5508: /(?m)^(b)/
                   5509:     a\nb\n
                   5510:  0: b
                   5511:  1: b
                   5512: 
                   5513: /((?m)^b)/
                   5514:     a\nb\n
                   5515:  0: b
                   5516:  1: b
                   5517: 
                   5518: /\n((?m)^b)/
                   5519:     a\nb\n
                   5520:  0: \x0ab
                   5521:  1: b
                   5522: 
                   5523: /((?s).)c(?!.)/
                   5524:     a\nb\nc\n
                   5525:  0: \x0ac
                   5526:  1: \x0a
                   5527:     a\nb\nc\n
                   5528:  0: \x0ac
                   5529:  1: \x0a
                   5530: 
                   5531: /((?s)b.)c(?!.)/
                   5532:     a\nb\nc\n
                   5533:  0: b\x0ac
                   5534:  1: b\x0a
                   5535:     a\nb\nc\n
                   5536:  0: b\x0ac
                   5537:  1: b\x0a
                   5538: 
                   5539: /^b/
                   5540: 
                   5541: /()^b/
                   5542:     *** Failers
                   5543: No match
                   5544:     a\nb\nc\n
                   5545: No match
                   5546:     a\nb\nc\n
                   5547: No match
                   5548: 
                   5549: /((?m)^b)/
                   5550:     a\nb\nc\n
                   5551:  0: b
                   5552:  1: b
                   5553: 
                   5554: /(x)?(?(1)a|b)/
                   5555:     *** Failers
                   5556: No match
                   5557:     a
                   5558: No match
                   5559:     a
                   5560: No match
                   5561: 
                   5562: /(x)?(?(1)b|a)/
                   5563:     a
                   5564:  0: a
                   5565: 
                   5566: /()?(?(1)b|a)/
                   5567:     a
                   5568:  0: a
                   5569: 
                   5570: /()(?(1)b|a)/
                   5571: 
                   5572: /()?(?(1)a|b)/
                   5573:     a
                   5574:  0: a
                   5575:  1: 
                   5576: 
                   5577: /^(\()?blah(?(1)(\)))$/
                   5578:     (blah)
                   5579:  0: (blah)
                   5580:  1: (
                   5581:  2: )
                   5582:     blah
                   5583:  0: blah
                   5584:     *** Failers
                   5585: No match
                   5586:     a
                   5587: No match
                   5588:     blah)
                   5589: No match
                   5590:     (blah
                   5591: No match
                   5592: 
                   5593: /^(\(+)?blah(?(1)(\)))$/
                   5594:     (blah)
                   5595:  0: (blah)
                   5596:  1: (
                   5597:  2: )
                   5598:     blah
                   5599:  0: blah
                   5600:     *** Failers
                   5601: No match
                   5602:     blah)
                   5603: No match
                   5604:     (blah
                   5605: No match
                   5606: 
                   5607: /(?(?!a)a|b)/
                   5608: 
                   5609: /(?(?!a)b|a)/
                   5610:     a
                   5611:  0: a
                   5612: 
                   5613: /(?(?=a)b|a)/
                   5614:     *** Failers
                   5615: No match
                   5616:     a
                   5617: No match
                   5618:     a
                   5619: No match
                   5620: 
                   5621: /(?(?=a)a|b)/
                   5622:     a
                   5623:  0: a
                   5624: 
                   5625: /(?=(a+?))(\1ab)/
                   5626:     aaab
                   5627:  0: aab
                   5628:  1: a
                   5629:  2: aab
                   5630: 
                   5631: /^(?=(a+?))\1ab/
                   5632: 
                   5633: /(\w+:)+/
                   5634:     one:
                   5635:  0: one:
                   5636:  1: one:
                   5637: 
                   5638: /$(?<=^(a))/
                   5639:     a
                   5640:  0: 
                   5641:  1: a
                   5642: 
                   5643: /(?=(a+?))(\1ab)/
                   5644:     aaab
                   5645:  0: aab
                   5646:  1: a
                   5647:  2: aab
                   5648: 
                   5649: /^(?=(a+?))\1ab/
                   5650:     *** Failers
                   5651: No match
                   5652:     aaab
                   5653: No match
                   5654:     aaab
                   5655: No match
                   5656: 
                   5657: /([\w:]+::)?(\w+)$/
                   5658:     abcd
                   5659:  0: abcd
                   5660:  1: <unset>
                   5661:  2: abcd
                   5662:     xy:z:::abcd
                   5663:  0: xy:z:::abcd
                   5664:  1: xy:z:::
                   5665:  2: abcd
                   5666: 
                   5667: /^[^bcd]*(c+)/
                   5668:     aexycd
                   5669:  0: aexyc
                   5670:  1: c
                   5671: 
                   5672: /(a*)b+/
                   5673:     caab
                   5674:  0: aab
                   5675:  1: aa
                   5676: 
                   5677: /([\w:]+::)?(\w+)$/
                   5678:     abcd
                   5679:  0: abcd
                   5680:  1: <unset>
                   5681:  2: abcd
                   5682:     xy:z:::abcd
                   5683:  0: xy:z:::abcd
                   5684:  1: xy:z:::
                   5685:  2: abcd
                   5686:     *** Failers
                   5687:  0: Failers
                   5688:  1: <unset>
                   5689:  2: Failers
                   5690:     abcd:
                   5691: No match
                   5692:     abcd:
                   5693: No match
                   5694: 
                   5695: /^[^bcd]*(c+)/
                   5696:     aexycd
                   5697:  0: aexyc
                   5698:  1: c
                   5699: 
                   5700: /(>a+)ab/
                   5701: 
                   5702: /(?>a+)b/
                   5703:     aaab
                   5704:  0: aaab
                   5705: 
                   5706: /([[:]+)/
                   5707:     a:[b]:
                   5708:  0: :[
                   5709:  1: :[
                   5710: 
                   5711: /([[=]+)/
                   5712:     a=[b]=
                   5713:  0: =[
                   5714:  1: =[
                   5715: 
                   5716: /([[.]+)/
                   5717:     a.[b].
                   5718:  0: .[
                   5719:  1: .[
                   5720: 
                   5721: /((?>a+)b)/
                   5722:     aaab
                   5723:  0: aaab
                   5724:  1: aaab
                   5725: 
                   5726: /(?>(a+))b/
                   5727:     aaab
                   5728:  0: aaab
                   5729:  1: aaa
                   5730: 
                   5731: /((?>[^()]+)|\([^()]*\))+/
                   5732:     ((abc(ade)ufh()()x
                   5733:  0: abc(ade)ufh()()x
                   5734:  1: x
                   5735: 
                   5736: /a\Z/
                   5737:     *** Failers
                   5738: No match
                   5739:     aaab
                   5740: No match
                   5741:     a\nb\n
                   5742: No match
                   5743: 
                   5744: /b\Z/
                   5745:     a\nb\n
                   5746:  0: b
                   5747: 
                   5748: /b\z/
                   5749: 
                   5750: /b\Z/
                   5751:     a\nb
                   5752:  0: b
                   5753: 
                   5754: /b\z/
                   5755:     a\nb
                   5756:  0: b
                   5757:     *** Failers
                   5758: No match
                   5759:     
                   5760: /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
                   5761:     a
                   5762:  0: a
                   5763:  1: 
                   5764:     abc
                   5765:  0: abc
                   5766:  1: 
                   5767:     a-b
                   5768:  0: a-b
                   5769:  1: 
                   5770:     0-9 
                   5771:  0: 0-9
                   5772:  1: 
                   5773:     a.b
                   5774:  0: a.b
                   5775:  1: 
                   5776:     5.6.7  
                   5777:  0: 5.6.7
                   5778:  1: 
                   5779:     the.quick.brown.fox
                   5780:  0: the.quick.brown.fox
                   5781:  1: 
                   5782:     a100.b200.300c  
                   5783:  0: a100.b200.300c
                   5784:  1: 
                   5785:     12-ab.1245 
                   5786:  0: 12-ab.1245
                   5787:  1: 
                   5788:     *** Failers
                   5789: No match
                   5790:     \
                   5791: No match
                   5792:     .a
                   5793: No match
                   5794:     -a
                   5795: No match
                   5796:     a-
                   5797: No match
                   5798:     a.  
                   5799: No match
                   5800:     a_b 
                   5801: No match
                   5802:     a.-
                   5803: No match
                   5804:     a..  
                   5805: No match
                   5806:     ab..bc 
                   5807: No match
                   5808:     the.quick.brown.fox-
                   5809: No match
                   5810:     the.quick.brown.fox.
                   5811: No match
                   5812:     the.quick.brown.fox_
                   5813: No match
                   5814:     the.quick.brown.fox+       
                   5815: No match
                   5816: 
                   5817: /(?>.*)(?<=(abcd|wxyz))/
                   5818:     alphabetabcd
                   5819:  0: alphabetabcd
                   5820:  1: abcd
                   5821:     endingwxyz
                   5822:  0: endingwxyz
                   5823:  1: wxyz
                   5824:     *** Failers
                   5825: No match
                   5826:     a rather long string that doesn't end with one of them
                   5827: No match
                   5828: 
                   5829: /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
                   5830:     word cat dog elephant mussel cow horse canary baboon snake shark otherword
                   5831:  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
                   5832:     word cat dog elephant mussel cow horse canary baboon snake shark
                   5833: No match
                   5834:   
                   5835: /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
                   5836:     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
                   5837: No match
                   5838: 
                   5839: /(?<=\d{3}(?!999))foo/
                   5840:     999foo
                   5841:  0: foo
                   5842:     123999foo 
                   5843:  0: foo
                   5844:     *** Failers
                   5845: No match
                   5846:     123abcfoo
                   5847: No match
                   5848:     
                   5849: /(?<=(?!...999)\d{3})foo/
                   5850:     999foo
                   5851:  0: foo
                   5852:     123999foo 
                   5853:  0: foo
                   5854:     *** Failers
                   5855: No match
                   5856:     123abcfoo
                   5857: No match
                   5858: 
                   5859: /(?<=\d{3}(?!999)...)foo/
                   5860:     123abcfoo
                   5861:  0: foo
                   5862:     123456foo 
                   5863:  0: foo
                   5864:     *** Failers
                   5865: No match
                   5866:     123999foo  
                   5867: No match
                   5868:     
                   5869: /(?<=\d{3}...)(?<!999)foo/
                   5870:     123abcfoo   
                   5871:  0: foo
                   5872:     123456foo 
                   5873:  0: foo
                   5874:     *** Failers
                   5875: No match
                   5876:     123999foo  
                   5877: No match
                   5878: 
                   5879: /<a[\s]+href[\s]*=[\s]*          # find <a href=
                   5880:  ([\"\'])?                       # find single or double quote
                   5881:  (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
                   5882:                                  # quote, otherwise match up to next space
                   5883: /isx
                   5884:     <a href=abcd xyz
                   5885:  0: <a href=abcd
                   5886:  1: <unset>
                   5887:  2: <unset>
                   5888:  3: abcd
                   5889:     <a href=\"abcd xyz pqr\" cats
                   5890:  0: <a href="abcd xyz pqr"
                   5891:  1: "
                   5892:  2: abcd xyz pqr
                   5893:     <a href=\'abcd xyz pqr\' cats
                   5894:  0: <a href='abcd xyz pqr'
                   5895:  1: '
                   5896:  2: abcd xyz pqr
                   5897: 
                   5898: /<a\s+href\s*=\s*                # find <a href=
                   5899:  (["'])?                         # find single or double quote
                   5900:  (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
                   5901:                                  # quote, otherwise match up to next space
                   5902: /isx
                   5903:     <a href=abcd xyz
                   5904:  0: <a href=abcd
                   5905:  1: <unset>
                   5906:  2: <unset>
                   5907:  3: abcd
                   5908:     <a href=\"abcd xyz pqr\" cats
                   5909:  0: <a href="abcd xyz pqr"
                   5910:  1: "
                   5911:  2: abcd xyz pqr
                   5912:     <a href       =       \'abcd xyz pqr\' cats
                   5913:  0: <a href       =       'abcd xyz pqr'
                   5914:  1: '
                   5915:  2: abcd xyz pqr
                   5916: 
                   5917: /<a\s+href(?>\s*)=(?>\s*)        # find <a href=
                   5918:  (["'])?                         # find single or double quote
                   5919:  (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
                   5920:                                  # quote, otherwise match up to next space
                   5921: /isx
                   5922:     <a href=abcd xyz
                   5923:  0: <a href=abcd
                   5924:  1: <unset>
                   5925:  2: <unset>
                   5926:  3: abcd
                   5927:     <a href=\"abcd xyz pqr\" cats
                   5928:  0: <a href="abcd xyz pqr"
                   5929:  1: "
                   5930:  2: abcd xyz pqr
                   5931:     <a href       =       \'abcd xyz pqr\' cats
                   5932:  0: <a href       =       'abcd xyz pqr'
                   5933:  1: '
                   5934:  2: abcd xyz pqr
                   5935: 
                   5936: /((Z)+|A)*/
                   5937:     ZABCDEFG
                   5938:  0: ZA
                   5939:  1: A
                   5940:  2: Z
                   5941: 
                   5942: /(Z()|A)*/
                   5943:     ZABCDEFG
                   5944:  0: ZA
                   5945:  1: A
                   5946:  2: 
                   5947: 
                   5948: /(Z(())|A)*/
                   5949:     ZABCDEFG
                   5950:  0: ZA
                   5951:  1: A
                   5952:  2: 
                   5953:  3: 
                   5954: 
                   5955: /((?>Z)+|A)*/
                   5956:     ZABCDEFG
                   5957:  0: ZA
                   5958:  1: A
                   5959: 
                   5960: /((?>)+|A)*/
                   5961:     ZABCDEFG
                   5962:  0: 
                   5963:  1: 
                   5964: 
                   5965: /a*/g
                   5966:     abbab
                   5967:  0: a
                   5968:  0: 
                   5969:  0: 
                   5970:  0: a
                   5971:  0: 
                   5972:  0: 
                   5973: 
                   5974: /^[a-\d]/
                   5975:     abcde
                   5976:  0: a
                   5977:     -things
                   5978:  0: -
                   5979:     0digit
                   5980:  0: 0
                   5981:     *** Failers
                   5982: No match
                   5983:     bcdef    
                   5984: No match
                   5985: 
                   5986: /^[\d-a]/
                   5987:     abcde
                   5988:  0: a
                   5989:     -things
                   5990:  0: -
                   5991:     0digit
                   5992:  0: 0
                   5993:     *** Failers
                   5994: No match
                   5995:     bcdef    
                   5996: No match
                   5997:     
                   5998: /[[:space:]]+/
                   5999:     > \x09\x0a\x0c\x0d\x0b<
                   6000:  0:  \x09\x0a\x0c\x0d\x0b
                   6001:      
                   6002: /[[:blank:]]+/
                   6003:     > \x09\x0a\x0c\x0d\x0b<
                   6004:  0:  \x09
                   6005:      
                   6006: /[\s]+/
                   6007:     > \x09\x0a\x0c\x0d\x0b<
                   6008:  0:  \x09\x0a\x0c\x0d
                   6009:      
                   6010: /\s+/
                   6011:     > \x09\x0a\x0c\x0d\x0b<
                   6012:  0:  \x09\x0a\x0c\x0d
                   6013:      
                   6014: /ab/x
                   6015:     ab
                   6016: No match
                   6017: 
                   6018: /(?!\A)x/m
                   6019:   a\nxb\n
                   6020:  0: x
                   6021: 
                   6022: /(?!^)x/m
                   6023:   a\nxb\n
                   6024: No match
                   6025: 
                   6026: /abc\Qabc\Eabc/
                   6027:     abcabcabc
                   6028:  0: abcabcabc
                   6029:     
                   6030: /abc\Q(*+|\Eabc/
                   6031:     abc(*+|abc 
                   6032:  0: abc(*+|abc
                   6033: 
                   6034: /   abc\Q abc\Eabc/x
                   6035:     abc abcabc
                   6036:  0: abc abcabc
                   6037:     *** Failers
                   6038: No match
                   6039:     abcabcabc  
                   6040: No match
                   6041:     
                   6042: /abc#comment
                   6043:     \Q#not comment
                   6044:     literal\E/x
                   6045:     abc#not comment\n    literal     
                   6046:  0: abc#not comment\x0a    literal
                   6047: 
                   6048: /abc#comment
                   6049:     \Q#not comment
                   6050:     literal/x
                   6051:     abc#not comment\n    literal     
                   6052:  0: abc#not comment\x0a    literal
                   6053: 
                   6054: /abc#comment
                   6055:     \Q#not comment
                   6056:     literal\E #more comment
                   6057:     /x
                   6058:     abc#not comment\n    literal     
                   6059:  0: abc#not comment\x0a    literal
                   6060: 
                   6061: /abc#comment
                   6062:     \Q#not comment
                   6063:     literal\E #more comment/x
                   6064:     abc#not comment\n    literal     
                   6065:  0: abc#not comment\x0a    literal
                   6066: 
                   6067: /\Qabc\$xyz\E/
                   6068:     abc\\\$xyz
                   6069:  0: abc\$xyz
                   6070: 
                   6071: /\Qabc\E\$\Qxyz\E/
                   6072:     abc\$xyz
                   6073:  0: abc$xyz
                   6074: 
                   6075: /\Gabc/
                   6076:     abc
                   6077:  0: abc
                   6078:     *** Failers
                   6079: No match
                   6080:     xyzabc  
                   6081: No match
                   6082: 
                   6083: /\Gabc./g
                   6084:     abc1abc2xyzabc3
                   6085:  0: abc1
                   6086:  0: abc2
                   6087: 
                   6088: /abc./g
                   6089:     abc1abc2xyzabc3 
                   6090:  0: abc1
                   6091:  0: abc2
                   6092:  0: abc3
                   6093: 
                   6094: /a(?x: b c )d/
                   6095:     XabcdY
                   6096:  0: abcd
                   6097:     *** Failers 
                   6098: No match
                   6099:     Xa b c d Y 
                   6100: No match
                   6101: 
                   6102: /((?x)x y z | a b c)/
                   6103:     XabcY
                   6104:  0: abc
                   6105:  1: abc
                   6106:     AxyzB 
                   6107:  0: xyz
                   6108:  1: xyz
                   6109: 
                   6110: /(?i)AB(?-i)C/
                   6111:     XabCY
                   6112:  0: abC
                   6113:     *** Failers
                   6114: No match
                   6115:     XabcY  
                   6116: No match
                   6117: 
                   6118: /((?i)AB(?-i)C|D)E/
                   6119:     abCE
                   6120:  0: abCE
                   6121:  1: abC
                   6122:     DE
                   6123:  0: DE
                   6124:  1: D
                   6125:     *** Failers
                   6126: No match
                   6127:     abcE
                   6128: No match
                   6129:     abCe  
                   6130: No match
                   6131:     dE
                   6132: No match
                   6133:     De    
                   6134: No match
                   6135: 
                   6136: /(.*)\d+\1/
                   6137:     abc123abc
                   6138:  0: abc123abc
                   6139:  1: abc
                   6140:     abc123bc 
                   6141:  0: bc123bc
                   6142:  1: bc
                   6143: 
                   6144: /(.*)\d+\1/s
                   6145:     abc123abc
                   6146:  0: abc123abc
                   6147:  1: abc
                   6148:     abc123bc 
                   6149:  0: bc123bc
                   6150:  1: bc
                   6151:     
                   6152: /((.*))\d+\1/
                   6153:     abc123abc
                   6154:  0: abc123abc
                   6155:  1: abc
                   6156:  2: abc
                   6157:     abc123bc  
                   6158:  0: bc123bc
                   6159:  1: bc
                   6160:  2: bc
                   6161: 
                   6162: /-- This tests for an IPv6 address in the form where it can have up to --/
                   6163: /-- eight components, one and only one of which is empty. This must be --/
                   6164: No match
                   6165: /-- an internal component. --/
                   6166: No match
                   6167: 
                   6168: /^(?!:)                       # colon disallowed at start
                   6169:   (?:                         # start of item
                   6170:     (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
                   6171:     (?(1)0 | () ) )           # if null previously matched, fail; else null
                   6172:     :                         # followed by colon
                   6173:   ){1,7}                      # end item; 1-7 of them required               
                   6174:   [0-9a-f]{1,4} $             # final hex number at end of string
                   6175:   (?(1)|.)                    # check that there was an empty component
                   6176:   /xi
                   6177:     a123::a123
                   6178:  0: a123::a123
                   6179:  1: 
                   6180:     a123:b342::abcd
                   6181:  0: a123:b342::abcd
                   6182:  1: 
                   6183:     a123:b342::324e:abcd
                   6184:  0: a123:b342::324e:abcd
                   6185:  1: 
                   6186:     a123:ddde:b342::324e:abcd
                   6187:  0: a123:ddde:b342::324e:abcd
                   6188:  1: 
                   6189:     a123:ddde:b342::324e:dcba:abcd
                   6190:  0: a123:ddde:b342::324e:dcba:abcd
                   6191:  1: 
                   6192:     a123:ddde:9999:b342::324e:dcba:abcd
                   6193:  0: a123:ddde:9999:b342::324e:dcba:abcd
                   6194:  1: 
                   6195:     *** Failers
                   6196: No match
                   6197:     1:2:3:4:5:6:7:8
                   6198: No match
                   6199:     a123:bce:ddde:9999:b342::324e:dcba:abcd
                   6200: No match
                   6201:     a123::9999:b342::324e:dcba:abcd
                   6202: No match
                   6203:     abcde:2:3:4:5:6:7:8
                   6204: No match
                   6205:     ::1
                   6206: No match
                   6207:     abcd:fee0:123::   
                   6208: No match
                   6209:     :1
                   6210: No match
                   6211:     1:  
                   6212: No match
                   6213: 
                   6214: /[z\Qa-d]\E]/
                   6215:     z
                   6216:  0: z
                   6217:     a
                   6218:  0: a
                   6219:     -
                   6220:  0: -
                   6221:     d
                   6222:  0: d
                   6223:     ] 
                   6224:  0: ]
                   6225:     *** Failers
                   6226:  0: a
                   6227:     b     
                   6228: No match
                   6229: 
                   6230: /[\z\C]/
                   6231:     z
                   6232:  0: z
                   6233:     C 
                   6234:  0: C
                   6235:     
                   6236: /\M/
                   6237:     M 
                   6238:  0: M
                   6239:     
                   6240: /(a+)*b/
                   6241:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
                   6242: No match
                   6243:     
                   6244: /(?i)reg(?:ul(?:[a]|ae)r|ex)/
                   6245:     REGular
                   6246:  0: REGular
                   6247:     regulaer
                   6248:  0: regulaer
                   6249:     Regex  
                   6250:  0: Regex
                   6251:     regulr 
                   6252:  0: regul\xe4r
                   6253: 
                   6254: /[--]+/
                   6255:     
                   6256:  0: \xc5\xe6\xe5\xe4\xe0
                   6257:     
                   6258:  0: \xc5\xe6\xe5\xe4\xff
                   6259:     
                   6260:  0: \xc5\xe6\xe5\xe4\xc0
                   6261:     
                   6262:  0: \xc5\xe6\xe5\xe4\xdf
                   6263: 
                   6264: /(?<=Z)X./
                   6265:   \x84XAZXB
                   6266:  0: XB
                   6267: 
                   6268: /ab cd (?x) de fg/
                   6269:     ab cd defg
                   6270:  0: ab cd defg
                   6271: 
                   6272: /ab cd(?x) de fg/
                   6273:     ab cddefg
                   6274:  0: ab cddefg
                   6275:     ** Failers 
                   6276: No match
                   6277:     abcddefg
                   6278: No match
                   6279: 
                   6280: /(?<![^f]oo)(bar)/
                   6281:     foobarX 
                   6282:  0: bar
                   6283:  1: bar
                   6284:     ** Failers 
                   6285: No match
                   6286:     boobarX
                   6287: No match
                   6288: 
                   6289: /(?<![^f])X/
                   6290:     offX
                   6291:  0: X
                   6292:     ** Failers
                   6293: No match
                   6294:     onyX  
                   6295: No match
                   6296: 
                   6297: /(?<=[^f])X/
                   6298:     onyX
                   6299:  0: X
                   6300:     ** Failers
                   6301: No match
                   6302:     offX 
                   6303: No match
                   6304: 
                   6305: /^/mg
                   6306:     a\nb\nc\n
                   6307:  0: 
                   6308:  0: 
                   6309:  0: 
                   6310:     \ 
                   6311:  0: 
                   6312:     
                   6313: /(?<=C\n)^/mg
                   6314:     A\nC\nC\n 
                   6315:  0: 
                   6316: 
                   6317: /(?:(?(1)a|b)(X))+/
                   6318:     bXaX
                   6319:  0: bXaX
                   6320:  1: X
                   6321: 
                   6322: /(?:(?(1)\1a|b)(X|Y))+/
                   6323:     bXXaYYaY
                   6324:  0: bXXaYYaY
                   6325:  1: Y
                   6326:     bXYaXXaX  
                   6327:  0: bX
                   6328:  1: X
                   6329: 
                   6330: /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
                   6331:     bXXaYYaY
                   6332:  0: bX
                   6333:  1: 
                   6334:  2: 
                   6335:  3: 
                   6336:  4: 
                   6337:  5: 
                   6338:  6: 
                   6339:  7: 
                   6340:  8: 
                   6341:  9: 
                   6342: 10: X
                   6343: 
                   6344: /[[,abc,]+]/
                   6345:     abc]
                   6346:  0: abc]
                   6347:     a,b]
                   6348:  0: a,b]
                   6349:     [a,b,c]  
                   6350:  0: [a,b,c]
                   6351: 
                   6352: /(?-x: )/x
                   6353:     A\x20B
                   6354:  0:  
                   6355:     
                   6356: "(?x)(?-x: \s*#\s*)"
                   6357:     A # B
                   6358:  0:  # 
                   6359:     ** Failers
                   6360: No match
                   6361:     #  
                   6362: No match
                   6363: 
                   6364: "(?x-is)(?:(?-ixs) \s*#\s*) include"
                   6365:     A #include
                   6366:  0:  #include
                   6367:     ** Failers
                   6368: No match
                   6369:     A#include  
                   6370: No match
                   6371:     A #Include
                   6372: No match
                   6373: 
                   6374: /a*b*\w/
                   6375:     aaabbbb
                   6376:  0: aaabbbb
                   6377:     aaaa
                   6378:  0: aaaa
                   6379:     a
                   6380:  0: a
                   6381: 
                   6382: /a*b?\w/
                   6383:     aaabbbb
                   6384:  0: aaabb
                   6385:     aaaa
                   6386:  0: aaaa
                   6387:     a
                   6388:  0: a
                   6389: 
                   6390: /a*b{0,4}\w/
                   6391:     aaabbbb
                   6392:  0: aaabbbb
                   6393:     aaaa
                   6394:  0: aaaa
                   6395:     a
                   6396:  0: a
                   6397: 
                   6398: /a*b{0,}\w/
                   6399:     aaabbbb
                   6400:  0: aaabbbb
                   6401:     aaaa
                   6402:  0: aaaa
                   6403:     a
                   6404:  0: a
                   6405:     
                   6406: /a*\d*\w/
                   6407:     0a
                   6408:  0: 0a
                   6409:     a 
                   6410:  0: a
                   6411:     
                   6412: /a*b *\w/x
                   6413:     a 
                   6414:  0: a
                   6415: 
                   6416: /a*b#comment
                   6417:   *\w/x
                   6418:     a 
                   6419:  0: a
                   6420: 
                   6421: /a* b *\w/x
                   6422:     a 
                   6423:  0: a
                   6424: 
                   6425: /^\w+=.*(\\\n.*)*/
                   6426:     abc=xyz\\\npqr
                   6427:  0: abc=xyz\
                   6428: 
                   6429: /(?=(\w+))\1:/
                   6430:     abcd:
                   6431:  0: abcd:
                   6432:  1: abcd
                   6433: 
                   6434: /^(?=(\w+))\1:/
                   6435:     abcd:
                   6436:  0: abcd:
                   6437:  1: abcd
                   6438: 
                   6439: /^\Eabc/
                   6440:     abc
                   6441:  0: abc
                   6442:     
                   6443: /^[\Eabc]/
                   6444:     a
                   6445:  0: a
                   6446:     ** Failers 
                   6447: No match
                   6448:     E 
                   6449: No match
                   6450:     
                   6451: /^[a-\Ec]/
                   6452:     b
                   6453:  0: b
                   6454:     ** Failers
                   6455: No match
                   6456:     -
                   6457: No match
                   6458:     E    
                   6459: No match
                   6460: 
                   6461: /^[a\E\E-\Ec]/
                   6462:     b
                   6463:  0: b
                   6464:     ** Failers
                   6465: No match
                   6466:     -
                   6467: No match
                   6468:     E    
                   6469: No match
                   6470: 
                   6471: /^[\E\Qa\E-\Qz\E]+/
                   6472:     b
                   6473:  0: b
                   6474:     ** Failers
                   6475: No match
                   6476:     -  
                   6477: No match
                   6478:     
                   6479: /^[a\Q]bc\E]/
                   6480:     a
                   6481:  0: a
                   6482:     ]
                   6483:  0: ]
                   6484:     c
                   6485:  0: c
                   6486:     
                   6487: /^[a-\Q\E]/
                   6488:     a
                   6489:  0: a
                   6490:     -     
                   6491:  0: -
                   6492: 
                   6493: /^(a()*)*/
                   6494:     aaaa
                   6495:  0: aaaa
                   6496:  1: a
                   6497:  2: 
                   6498: 
                   6499: /^(?:a(?:(?:))*)*/
                   6500:     aaaa
                   6501:  0: aaaa
                   6502: 
                   6503: /^(a()+)+/
                   6504:     aaaa
                   6505:  0: aaaa
                   6506:  1: a
                   6507:  2: 
                   6508: 
                   6509: /^(?:a(?:(?:))+)+/
                   6510:     aaaa
                   6511:  0: aaaa
                   6512: 
                   6513: /(a){0,3}(?(1)b|(c|))*D/
                   6514:     abbD
                   6515:  0: abbD
                   6516:  1: a
                   6517:     ccccD
                   6518:  0: ccccD
                   6519:  1: <unset>
                   6520:  2: 
                   6521:     D  
                   6522:  0: D
                   6523:  1: <unset>
                   6524:  2: 
                   6525: 
                   6526: /(a|)*\d/
                   6527:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   6528: No match
                   6529:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
                   6530:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
                   6531:  1: 
                   6532: 
                   6533: /(?>a|)*\d/
                   6534:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   6535: No match
                   6536:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
                   6537:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
                   6538: 
                   6539: /(?:a|)*\d/
                   6540:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   6541: No match
                   6542:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
                   6543:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
                   6544: 
                   6545: /\Z/g
                   6546:   abc\n
                   6547:  0: 
                   6548:  0: 
                   6549:   
                   6550: /^(?s)(?>.*)(?<!\n)/
                   6551:   abc
                   6552:  0: abc
                   6553:   abc\n  
                   6554: No match
                   6555: 
                   6556: /^(?![^\n]*\n\z)/
                   6557:   abc
                   6558:  0: 
                   6559:   abc\n 
                   6560: No match
                   6561:   
                   6562: /\z(?<!\n)/
                   6563:   abc
                   6564:  0: 
                   6565:   abc\n  
                   6566: No match
                   6567: 
                   6568: /(.*(.)?)*/
                   6569:     abcd
                   6570:  0: abcd
                   6571:  1: 
                   6572: 
                   6573: /( (A | (?(1)0|) )*   )/x
                   6574:     abcd
                   6575:  0: 
                   6576:  1: 
                   6577:  2: 
                   6578: 
                   6579: /( ( (?(1)0|) )*   )/x
                   6580:     abcd
                   6581:  0: 
                   6582:  1: 
                   6583:  2: 
                   6584: 
                   6585: /(  (?(1)0|)*   )/x
                   6586:     abcd
                   6587:  0: 
                   6588:  1: 
                   6589: 
                   6590: /[[:abcd:xyz]]/
                   6591:     a]
                   6592:  0: a]
                   6593:     :] 
                   6594:  0: :]
                   6595:     
                   6596: /[abc[:x\]pqr]/
                   6597:     a
                   6598:  0: a
                   6599:     [
                   6600:  0: [
                   6601:     :
                   6602:  0: :
                   6603:     ]
                   6604:  0: ]
                   6605:     p    
                   6606:  0: p
                   6607: 
                   6608: /.*[op][xyz]/
                   6609:     fooabcfoo
                   6610: No match
                   6611: 
                   6612: /(?(?=.*b)b|^)/
                   6613:    adc
                   6614:  0: 
                   6615:    abc 
                   6616:  0: b
                   6617: 
                   6618: /(?(?=^.*b)b|^)/
                   6619:    adc
                   6620:  0: 
                   6621:    abc 
                   6622: No match
                   6623: 
                   6624: /(?(?=.*b)b|^)*/
                   6625:    adc
                   6626:  0: 
                   6627:    abc 
                   6628:  0: 
                   6629: 
                   6630: /(?(?=.*b)b|^)+/
                   6631:    adc
                   6632:  0: 
                   6633:    abc 
                   6634:  0: b
                   6635: 
                   6636: /(?(?=b).*b|^d)/
                   6637:     abc
                   6638:  0: b
                   6639: 
                   6640: /(?(?=.*b).*b|^d)/
                   6641:     abc
                   6642:  0: ab
                   6643: 
                   6644: /^%((?(?=[a])[^%])|b)*%$/
                   6645:     %ab%
                   6646:  0: %ab%
                   6647:  1: 
                   6648: 
                   6649: /(?i)a(?-i)b|c/
                   6650:     XabX
                   6651:  0: ab
                   6652:     XAbX
                   6653:  0: Ab
                   6654:     CcC 
                   6655:  0: c
                   6656:     ** Failers
                   6657: No match
                   6658:     XABX   
                   6659: No match
                   6660: 
                   6661: /[\x00-\xff\s]+/
                   6662:     \x0a\x0b\x0c\x0d
                   6663:  0: \x0a\x0b\x0c\x0d
                   6664: 
                   6665: /^\c/
                   6666:     ?
                   6667:  0: ?
                   6668: 
                   6669: /(abc)\1/i
                   6670:    abc
                   6671: No match
                   6672: 
                   6673: /(abc)\1/
                   6674:    abc
                   6675: No match
                   6676: 
                   6677: /[^a]*/i
                   6678:     12abc
                   6679:  0: 12
                   6680:     12ABC
                   6681:  0: 12
                   6682: 
                   6683: /[^a]*+/i
                   6684:     12abc
                   6685:  0: 12
                   6686:     12ABC
                   6687:  0: 12
                   6688: 
                   6689: /[^a]*?X/i
                   6690:     ** Failers
                   6691: No match
                   6692:     12abc
                   6693: No match
                   6694:     12ABC
                   6695: No match
                   6696:     
                   6697: /[^a]+?X/i   
                   6698:     ** Failers
                   6699: No match
                   6700:     12abc
                   6701: No match
                   6702:     12ABC
                   6703: No match
                   6704: 
                   6705: /[^a]?X/i
                   6706:     12aXbcX
                   6707:  0: X
                   6708:     12AXBCX
                   6709:  0: X
                   6710:     BCX 
                   6711:  0: CX
                   6712: 
                   6713: /[^a]??X/i
                   6714:     12aXbcX
                   6715:  0: X
                   6716:     12AXBCX
                   6717:  0: X
                   6718:     BCX
                   6719:  0: CX
                   6720:     
                   6721: /[^a]?+X/i
                   6722:     12aXbcX
                   6723:  0: cX
                   6724:     12AXBCX
                   6725:  0: CX
                   6726:     BCX 
                   6727:  0: CX
                   6728: 
                   6729: /[^a]{2,3}/i
                   6730:     abcdef
                   6731:  0: bcd
                   6732:     ABCDEF  
                   6733:  0: BCD
                   6734: 
                   6735: /[^a]{2,3}?/i
                   6736:     abcdef
                   6737:  0: bc
                   6738:     ABCDEF  
                   6739:  0: BC
                   6740: 
                   6741: /[^a]{2,3}+/i
                   6742:     abcdef
                   6743:  0: bcd
                   6744:     ABCDEF  
                   6745:  0: BCD
                   6746: 
                   6747: /((a|)+)+Z/
                   6748:     Z
                   6749:  0: Z
                   6750:  1: 
                   6751:  2: 
                   6752: 
                   6753: /(a)b|(a)c/
                   6754:     ac
                   6755:  0: ac
                   6756:  1: <unset>
                   6757:  2: a
                   6758: 
                   6759: /(?>(a))b|(a)c/
                   6760:     ac
                   6761:  0: ac
                   6762:  1: <unset>
                   6763:  2: a
                   6764: 
                   6765: /(?=(a))ab|(a)c/
                   6766:     ac
                   6767:  0: ac
                   6768:  1: <unset>
                   6769:  2: a
                   6770: 
                   6771: /((?>(a))b|(a)c)/
                   6772:     ac
                   6773:  0: ac
                   6774:  1: ac
                   6775:  2: <unset>
                   6776:  3: a
                   6777: 
                   6778: /((?>(a))b|(a)c)++/
                   6779:     ac
                   6780:  0: ac
                   6781:  1: ac
                   6782:  2: <unset>
                   6783:  3: a
                   6784: 
                   6785: /(?:(?>(a))b|(a)c)++/
                   6786:     ac
                   6787:  0: ac
                   6788:  1: <unset>
                   6789:  2: a
                   6790: 
                   6791: /(?=(?>(a))b|(a)c)(..)/
                   6792:     ac
                   6793:  0: ac
                   6794:  1: <unset>
                   6795:  2: a
                   6796:  3: ac
                   6797: 
                   6798: /(?>(?>(a))b|(a)c)/
                   6799:     ac
                   6800:  0: ac
                   6801:  1: <unset>
                   6802:  2: a
                   6803: 
                   6804: /(?:(?>([ab])))+a=/+
                   6805:     =ba=
                   6806:  0: ba=
                   6807:  0+ 
                   6808:  1: b
                   6809: 
                   6810: /(?>([ab]))+a=/+
                   6811:     =ba=
                   6812:  0: ba=
                   6813:  0+ 
                   6814:  1: b
                   6815: 
                   6816: /((?>(a+)b)+(aabab))/
                   6817:     aaaabaaabaabab
                   6818:  0: aaaabaaabaabab
                   6819:  1: aaaabaaabaabab
                   6820:  2: aaa
                   6821:  3: aabab
                   6822: 
                   6823: /(?>a+|ab)+?c/
                   6824:     aabc
                   6825: No match
                   6826: 
                   6827: /(?>a+|ab)+c/
                   6828:     aabc
                   6829: No match
                   6830: 
                   6831: /(?:a+|ab)+c/
                   6832:     aabc
                   6833:  0: aabc
                   6834: 
                   6835: /(?(?=(a))a)/
                   6836:     a
                   6837:  0: a
                   6838:  1: a
                   6839: 
                   6840: /(?(?=(a))a)(b)/
                   6841:     ab
                   6842:  0: ab
                   6843:  1: a
                   6844:  2: b
                   6845: 
                   6846: /^(?:a|ab)++c/
                   6847:     aaaabc
                   6848: No match
                   6849: 
                   6850: /^(?>a|ab)++c/
                   6851:     aaaabc
                   6852: No match
                   6853: 
                   6854: /^(?:a|ab)+c/
                   6855:     aaaabc
                   6856:  0: aaaabc
                   6857: 
                   6858: /(?=abc){3}abc/+
                   6859:     abcabcabc
                   6860:  0: abc
                   6861:  0+ abcabc
                   6862:     ** Failers
                   6863: No match
                   6864:     xyz  
                   6865: No match
                   6866:     
                   6867: /(?=abc)+abc/+
                   6868:     abcabcabc
                   6869:  0: abc
                   6870:  0+ abcabc
                   6871:     ** Failers
                   6872: No match
                   6873:     xyz  
                   6874: No match
                   6875:     
                   6876: /(?=abc)++abc/+
                   6877:     abcabcabc
                   6878:  0: abc
                   6879:  0+ abcabc
                   6880:     ** Failers
                   6881: No match
                   6882:     xyz  
                   6883: No match
                   6884:     
                   6885: /(?=abc){0}xyz/
                   6886:     xyz 
                   6887:  0: xyz
                   6888: 
                   6889: /(?=abc){1}xyz/
                   6890:     ** Failers
                   6891: No match
                   6892:     xyz 
                   6893: No match
                   6894:     
                   6895: /(?=(a))?./
                   6896:     ab
                   6897:  0: a
                   6898:  1: a
                   6899:     bc
                   6900:  0: b
                   6901:       
                   6902: /(?=(a))??./
                   6903:     ab
                   6904:  0: a
                   6905:     bc
                   6906:  0: b
                   6907: 
                   6908: /^(?=(a)){0}b(?1)/
                   6909:     backgammon
                   6910:  0: ba
                   6911: 
                   6912: /^(?=(?1))?[az]([abc])d/
                   6913:     abd 
                   6914:  0: abd
                   6915:  1: b
                   6916:     zcdxx 
                   6917:  0: zcd
                   6918:  1: c
                   6919: 
                   6920: /^(?!a){0}\w+/
                   6921:     aaaaa
                   6922:  0: aaaaa
                   6923: 
                   6924: /(?<=(abc))?xyz/
                   6925:     abcxyz
                   6926:  0: xyz
                   6927:  1: abc
                   6928:     pqrxyz 
                   6929:  0: xyz
                   6930: 
                   6931: /^[\g<a>]+/
                   6932:     ggg<<<aaa>>>
                   6933:  0: ggg<<<aaa>>>
                   6934:     ** Failers
                   6935: No match
                   6936:     \\ga  
                   6937: No match
                   6938:     
                   6939: /^[\ga]+/
                   6940:     gggagagaxyz 
                   6941:  0: gggagaga
                   6942:     
                   6943: /^[:a[:digit:]]+/
                   6944:     aaaa444:::Z 
                   6945:  0: aaaa444:::
                   6946: 
                   6947: /^[:a[:digit:]:b]+/
                   6948:     aaaa444:::bbbZ 
                   6949:  0: aaaa444:::bbb
                   6950: 
                   6951: /[:a]xxx[b:]/
                   6952:      :xxx:
                   6953:  0: :xxx:
                   6954:      
                   6955: /(?<=a{2})b/i
                   6956:     xaabc
                   6957:  0: b
                   6958:     ** Failers
                   6959: No match
                   6960:     xabc  
                   6961: No match
                   6962: 
                   6963: /(?<!a{2})b/i
                   6964:     xabc
                   6965:  0: b
                   6966:     ** Failers
                   6967: No match
                   6968:     xaabc  
                   6969: No match
                   6970: 
                   6971: /(?<=a\h)c/
                   6972:     xa c
                   6973:  0: c
                   6974:     
                   6975: /(?<=[^a]{2})b/
                   6976:     axxbc
                   6977:  0: b
                   6978:     aAAbc 
                   6979:  0: b
                   6980:     ** Failers
                   6981: No match
                   6982:     xaabc    
                   6983: No match
                   6984: 
                   6985: /(?<=[^a]{2})b/i
                   6986:     axxbc  
                   6987:  0: b
                   6988:     ** Failers
                   6989: No match
                   6990:     aAAbc 
                   6991: No match
                   6992:     xaabc    
                   6993: No match
                   6994: 
                   6995: /(?<=a\H)c/
                   6996:     abc
                   6997:  0: c
                   6998: 
                   6999: /(?<=a\V)c/
                   7000:     abc
                   7001:  0: c
                   7002:     
                   7003: /(?<=a\v)c/
                   7004:     a\nc
                   7005:  0: c
                   7006: 
                   7007: /(?(?=c)c|d)++Y/
                   7008:     XcccddYX
                   7009:  0: cccddY
                   7010: 
                   7011: /(?(?=c)c|d)*+Y/
                   7012:     XcccddYX
                   7013:  0: cccddY
                   7014: 
                   7015: /^(a{2,3}){2,}+a/
                   7016:     aaaaaaa
                   7017:  0: aaaaaaa
                   7018:  1: aaa
                   7019:     ** Failers
                   7020: No match
                   7021:     aaaaaa
                   7022: No match
                   7023:     aaaaaaaaa 
                   7024: No match
                   7025: 
                   7026: /^(a{2,3})++a/
                   7027:     ** Failers
                   7028: No match
                   7029:     aaaaaa
                   7030: No match
                   7031: 
                   7032: /^(a{2,3})*+a/
                   7033:     ** Failers
                   7034: No match
                   7035:     aaaaaa
                   7036: No match
                   7037: 
                   7038: /ab\Cde/
                   7039:     abXde
                   7040:  0: abXde
                   7041:     
                   7042: /(?<=ab\Cde)X/
                   7043:     abZdeX
                   7044:  0: X
                   7045: 
                   7046: /a[\CD]b/
                   7047:     aCb
                   7048:  0: aCb
                   7049:     aDb 
                   7050:  0: aDb
                   7051: 
                   7052: /a[\C-X]b/
                   7053:     aJb
                   7054:  0: aJb
                   7055: 
                   7056: /-- End of testinput1 --/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>