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

1.1       misho       1: /-- This set of tests is for features that are compatible with all versions of
1.1.1.2   misho       2:     Perl >= 5.10, in non-UTF-8 mode. It should run clean for both the 8-bit and
                      3:     16-bit PCRE libraries. --/
1.1       misho       4: 
                      5: /the quick brown fox/
                      6:     the quick brown fox
                      7:  0: the quick brown fox
                      8:     The quick brown FOX
                      9: No match
                     10:     What do you know about the quick brown fox?
                     11:  0: the quick brown fox
                     12:     What do you know about THE QUICK BROWN FOX?
                     13: No match
                     14: 
                     15: /The quick brown fox/i
                     16:     the quick brown fox
                     17:  0: the quick brown fox
                     18:     The quick brown FOX
                     19:  0: The quick brown FOX
                     20:     What do you know about the quick brown fox?
                     21:  0: the quick brown fox
                     22:     What do you know about THE QUICK BROWN FOX?
                     23:  0: THE QUICK BROWN FOX
                     24: 
                     25: /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
                     26:     abcd\t\n\r\f\a\e9;\$\\?caxyz
                     27:  0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
                     28: 
                     29: /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
                     30:     abxyzpqrrrabbxyyyypqAzz
                     31:  0: abxyzpqrrrabbxyyyypqAzz
                     32:     abxyzpqrrrabbxyyyypqAzz
                     33:  0: abxyzpqrrrabbxyyyypqAzz
                     34:     aabxyzpqrrrabbxyyyypqAzz
                     35:  0: aabxyzpqrrrabbxyyyypqAzz
                     36:     aaabxyzpqrrrabbxyyyypqAzz
                     37:  0: aaabxyzpqrrrabbxyyyypqAzz
                     38:     aaaabxyzpqrrrabbxyyyypqAzz
                     39:  0: aaaabxyzpqrrrabbxyyyypqAzz
                     40:     abcxyzpqrrrabbxyyyypqAzz
                     41:  0: abcxyzpqrrrabbxyyyypqAzz
                     42:     aabcxyzpqrrrabbxyyyypqAzz
                     43:  0: aabcxyzpqrrrabbxyyyypqAzz
                     44:     aaabcxyzpqrrrabbxyyyypAzz
                     45:  0: aaabcxyzpqrrrabbxyyyypAzz
                     46:     aaabcxyzpqrrrabbxyyyypqAzz
                     47:  0: aaabcxyzpqrrrabbxyyyypqAzz
                     48:     aaabcxyzpqrrrabbxyyyypqqAzz
                     49:  0: aaabcxyzpqrrrabbxyyyypqqAzz
                     50:     aaabcxyzpqrrrabbxyyyypqqqAzz
                     51:  0: aaabcxyzpqrrrabbxyyyypqqqAzz
                     52:     aaabcxyzpqrrrabbxyyyypqqqqAzz
                     53:  0: aaabcxyzpqrrrabbxyyyypqqqqAzz
                     54:     aaabcxyzpqrrrabbxyyyypqqqqqAzz
                     55:  0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
                     56:     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
                     57:  0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
                     58:     aaaabcxyzpqrrrabbxyyyypqAzz
                     59:  0: aaaabcxyzpqrrrabbxyyyypqAzz
                     60:     abxyzzpqrrrabbxyyyypqAzz
                     61:  0: abxyzzpqrrrabbxyyyypqAzz
                     62:     aabxyzzzpqrrrabbxyyyypqAzz
                     63:  0: aabxyzzzpqrrrabbxyyyypqAzz
                     64:     aaabxyzzzzpqrrrabbxyyyypqAzz
                     65:  0: aaabxyzzzzpqrrrabbxyyyypqAzz
                     66:     aaaabxyzzzzpqrrrabbxyyyypqAzz
                     67:  0: aaaabxyzzzzpqrrrabbxyyyypqAzz
                     68:     abcxyzzpqrrrabbxyyyypqAzz
                     69:  0: abcxyzzpqrrrabbxyyyypqAzz
                     70:     aabcxyzzzpqrrrabbxyyyypqAzz
                     71:  0: aabcxyzzzpqrrrabbxyyyypqAzz
                     72:     aaabcxyzzzzpqrrrabbxyyyypqAzz
                     73:  0: aaabcxyzzzzpqrrrabbxyyyypqAzz
                     74:     aaaabcxyzzzzpqrrrabbxyyyypqAzz
                     75:  0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
                     76:     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
                     77:  0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
                     78:     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
                     79:  0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
                     80:     aaabcxyzpqrrrabbxyyyypABzz
                     81:  0: aaabcxyzpqrrrabbxyyyypABzz
                     82:     aaabcxyzpqrrrabbxyyyypABBzz
                     83:  0: aaabcxyzpqrrrabbxyyyypABBzz
                     84:     >>>aaabxyzpqrrrabbxyyyypqAzz
                     85:  0: aaabxyzpqrrrabbxyyyypqAzz
                     86:     >aaaabxyzpqrrrabbxyyyypqAzz
                     87:  0: aaaabxyzpqrrrabbxyyyypqAzz
                     88:     >>>>abcxyzpqrrrabbxyyyypqAzz
                     89:  0: abcxyzpqrrrabbxyyyypqAzz
                     90:     *** Failers
                     91: No match
                     92:     abxyzpqrrabbxyyyypqAzz
                     93: No match
                     94:     abxyzpqrrrrabbxyyyypqAzz
                     95: No match
                     96:     abxyzpqrrrabxyyyypqAzz
                     97: No match
                     98:     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
                     99: No match
                    100:     aaaabcxyzzzzpqrrrabbbxyyypqAzz
                    101: No match
                    102:     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
                    103: No match
                    104: 
                    105: /^(abc){1,2}zz/
                    106:     abczz
                    107:  0: abczz
                    108:  1: abc
                    109:     abcabczz
                    110:  0: abcabczz
                    111:  1: abc
                    112:     *** Failers
                    113: No match
                    114:     zz
                    115: No match
                    116:     abcabcabczz
                    117: No match
                    118:     >>abczz
                    119: No match
                    120: 
                    121: /^(b+?|a){1,2}?c/
                    122:     bc
                    123:  0: bc
                    124:  1: b
                    125:     bbc
                    126:  0: bbc
                    127:  1: b
                    128:     bbbc
                    129:  0: bbbc
                    130:  1: bb
                    131:     bac
                    132:  0: bac
                    133:  1: a
                    134:     bbac
                    135:  0: bbac
                    136:  1: a
                    137:     aac
                    138:  0: aac
                    139:  1: a
                    140:     abbbbbbbbbbbc
                    141:  0: abbbbbbbbbbbc
                    142:  1: bbbbbbbbbbb
                    143:     bbbbbbbbbbbac
                    144:  0: bbbbbbbbbbbac
                    145:  1: a
                    146:     *** Failers
                    147: No match
                    148:     aaac
                    149: No match
                    150:     abbbbbbbbbbbac
                    151: No match
                    152: 
                    153: /^(b+|a){1,2}c/
                    154:     bc
                    155:  0: bc
                    156:  1: b
                    157:     bbc
                    158:  0: bbc
                    159:  1: bb
                    160:     bbbc
                    161:  0: bbbc
                    162:  1: bbb
                    163:     bac
                    164:  0: bac
                    165:  1: a
                    166:     bbac
                    167:  0: bbac
                    168:  1: a
                    169:     aac
                    170:  0: aac
                    171:  1: a
                    172:     abbbbbbbbbbbc
                    173:  0: abbbbbbbbbbbc
                    174:  1: bbbbbbbbbbb
                    175:     bbbbbbbbbbbac
                    176:  0: bbbbbbbbbbbac
                    177:  1: a
                    178:     *** Failers
                    179: No match
                    180:     aaac
                    181: No match
                    182:     abbbbbbbbbbbac
                    183: No match
                    184: 
                    185: /^(b+|a){1,2}?bc/
                    186:     bbc
                    187:  0: bbc
                    188:  1: b
                    189: 
                    190: /^(b*|ba){1,2}?bc/
                    191:     babc
                    192:  0: babc
                    193:  1: ba
                    194:     bbabc
                    195:  0: bbabc
                    196:  1: ba
                    197:     bababc
                    198:  0: bababc
                    199:  1: ba
                    200:     *** Failers
                    201: No match
                    202:     bababbc
                    203: No match
                    204:     babababc
                    205: No match
                    206: 
                    207: /^(ba|b*){1,2}?bc/
                    208:     babc
                    209:  0: babc
                    210:  1: ba
                    211:     bbabc
                    212:  0: bbabc
                    213:  1: ba
                    214:     bababc
                    215:  0: bababc
                    216:  1: ba
                    217:     *** Failers
                    218: No match
                    219:     bababbc
                    220: No match
                    221:     babababc
                    222: No match
                    223: 
                    224: /^\ca\cA\c[\c{\c:/
                    225:     \x01\x01\e;z
                    226:  0: \x01\x01\x1b;z
                    227: 
                    228: /^[ab\]cde]/
                    229:     athing
                    230:  0: a
                    231:     bthing
                    232:  0: b
                    233:     ]thing
                    234:  0: ]
                    235:     cthing
                    236:  0: c
                    237:     dthing
                    238:  0: d
                    239:     ething
                    240:  0: e
                    241:     *** Failers
                    242: No match
                    243:     fthing
                    244: No match
                    245:     [thing
                    246: No match
                    247:     \\thing
                    248: No match
                    249: 
                    250: /^[]cde]/
                    251:     ]thing
                    252:  0: ]
                    253:     cthing
                    254:  0: c
                    255:     dthing
                    256:  0: d
                    257:     ething
                    258:  0: e
                    259:     *** Failers
                    260: No match
                    261:     athing
                    262: No match
                    263:     fthing
                    264: No match
                    265: 
                    266: /^[^ab\]cde]/
                    267:     fthing
                    268:  0: f
                    269:     [thing
                    270:  0: [
                    271:     \\thing
                    272:  0: \
                    273:     *** Failers
                    274:  0: *
                    275:     athing
                    276: No match
                    277:     bthing
                    278: No match
                    279:     ]thing
                    280: No match
                    281:     cthing
                    282: No match
                    283:     dthing
                    284: No match
                    285:     ething
                    286: No match
                    287: 
                    288: /^[^]cde]/
                    289:     athing
                    290:  0: a
                    291:     fthing
                    292:  0: f
                    293:     *** Failers
                    294:  0: *
                    295:     ]thing
                    296: No match
                    297:     cthing
                    298: No match
                    299:     dthing
                    300: No match
                    301:     ething
                    302: No match
                    303: 
                    304: /^\/
                    305:     
                    306:  0: \x81
                    307: 
                    308: /^/
                    309:     
                    310:  0: \xff
                    311: 
                    312: /^[0-9]+$/
                    313:     0
                    314:  0: 0
                    315:     1
                    316:  0: 1
                    317:     2
                    318:  0: 2
                    319:     3
                    320:  0: 3
                    321:     4
                    322:  0: 4
                    323:     5
                    324:  0: 5
                    325:     6
                    326:  0: 6
                    327:     7
                    328:  0: 7
                    329:     8
                    330:  0: 8
                    331:     9
                    332:  0: 9
                    333:     10
                    334:  0: 10
                    335:     100
                    336:  0: 100
                    337:     *** Failers
                    338: No match
                    339:     abc
                    340: No match
                    341: 
                    342: /^.*nter/
                    343:     enter
                    344:  0: enter
                    345:     inter
                    346:  0: inter
                    347:     uponter
                    348:  0: uponter
                    349: 
                    350: /^xxx[0-9]+$/
                    351:     xxx0
                    352:  0: xxx0
                    353:     xxx1234
                    354:  0: xxx1234
                    355:     *** Failers
                    356: No match
                    357:     xxx
                    358: No match
                    359: 
                    360: /^.+[0-9][0-9][0-9]$/
                    361:     x123
                    362:  0: x123
                    363:     xx123
                    364:  0: xx123
                    365:     123456
                    366:  0: 123456
                    367:     *** Failers
                    368: No match
                    369:     123
                    370: No match
                    371:     x1234
                    372:  0: x1234
                    373: 
                    374: /^.+?[0-9][0-9][0-9]$/
                    375:     x123
                    376:  0: x123
                    377:     xx123
                    378:  0: xx123
                    379:     123456
                    380:  0: 123456
                    381:     *** Failers
                    382: No match
                    383:     123
                    384: No match
                    385:     x1234
                    386:  0: x1234
                    387: 
                    388: /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
                    389:     abc!pqr=apquxz.ixr.zzz.ac.uk
                    390:  0: abc!pqr=apquxz.ixr.zzz.ac.uk
                    391:  1: abc
                    392:  2: pqr
                    393:     *** Failers
                    394: No match
                    395:     !pqr=apquxz.ixr.zzz.ac.uk
                    396: No match
                    397:     abc!=apquxz.ixr.zzz.ac.uk
                    398: No match
                    399:     abc!pqr=apquxz:ixr.zzz.ac.uk
                    400: No match
                    401:     abc!pqr=apquxz.ixr.zzz.ac.ukk
                    402: No match
                    403: 
                    404: /:/
                    405:     Well, we need a colon: somewhere
                    406:  0: :
                    407:     *** Fail if we don't
                    408: No match
                    409: 
                    410: /([\da-f:]+)$/i
                    411:     0abc
                    412:  0: 0abc
                    413:  1: 0abc
                    414:     abc
                    415:  0: abc
                    416:  1: abc
                    417:     fed
                    418:  0: fed
                    419:  1: fed
                    420:     E
                    421:  0: E
                    422:  1: E
                    423:     ::
                    424:  0: ::
                    425:  1: ::
                    426:     5f03:12C0::932e
                    427:  0: 5f03:12C0::932e
                    428:  1: 5f03:12C0::932e
                    429:     fed def
                    430:  0: def
                    431:  1: def
                    432:     Any old stuff
                    433:  0: ff
                    434:  1: ff
                    435:     *** Failers
                    436: No match
                    437:     0zzz
                    438: No match
                    439:     gzzz
                    440: No match
                    441:     fed\x20
                    442: No match
                    443:     Any old rubbish
                    444: No match
                    445: 
                    446: /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
                    447:     .1.2.3
                    448:  0: .1.2.3
                    449:  1: 1
                    450:  2: 2
                    451:  3: 3
                    452:     A.12.123.0
                    453:  0: A.12.123.0
                    454:  1: 12
                    455:  2: 123
                    456:  3: 0
                    457:     *** Failers
                    458: No match
                    459:     .1.2.3333
                    460: No match
                    461:     1.2.3
                    462: No match
                    463:     1234.2.3
                    464: No match
                    465: 
                    466: /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
                    467:     1 IN SOA non-sp1 non-sp2(
                    468:  0: 1 IN SOA non-sp1 non-sp2(
                    469:  1: 1
                    470:  2: non-sp1
                    471:  3: non-sp2
                    472:     1    IN    SOA    non-sp1    non-sp2   (
                    473:  0: 1    IN    SOA    non-sp1    non-sp2   (
                    474:  1: 1
                    475:  2: non-sp1
                    476:  3: non-sp2
                    477:     *** Failers
                    478: No match
                    479:     1IN SOA non-sp1 non-sp2(
                    480: No match
                    481: 
                    482: /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
                    483:     a.
                    484:  0: a.
                    485:     Z.
                    486:  0: Z.
                    487:     2.
                    488:  0: 2.
                    489:     ab-c.pq-r.
                    490:  0: ab-c.pq-r.
                    491:  1: .pq-r
                    492:     sxk.zzz.ac.uk.
                    493:  0: sxk.zzz.ac.uk.
                    494:  1: .uk
                    495:     x-.y-.
                    496:  0: x-.y-.
                    497:  1: .y-
                    498:     *** Failers
                    499: No match
                    500:     -abc.peq.
                    501: No match
                    502: 
                    503: /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
                    504:     *.a
                    505:  0: *.a
                    506:     *.b0-a
                    507:  0: *.b0-a
                    508:  1: 0-a
                    509:     *.c3-b.c
                    510:  0: *.c3-b.c
                    511:  1: 3-b
                    512:  2: .c
                    513:     *.c-a.b-c
                    514:  0: *.c-a.b-c
                    515:  1: -a
                    516:  2: .b-c
                    517:  3: -c
                    518:     *** Failers
                    519: No match
                    520:     *.0
                    521: No match
                    522:     *.a-
                    523: No match
                    524:     *.a-b.c-
                    525: No match
                    526:     *.c-a.0-c
                    527: No match
                    528: 
                    529: /^(?=ab(de))(abd)(e)/
                    530:     abde
                    531:  0: abde
                    532:  1: de
                    533:  2: abd
                    534:  3: e
                    535: 
                    536: /^(?!(ab)de|x)(abd)(f)/
                    537:     abdf
                    538:  0: abdf
                    539:  1: <unset>
                    540:  2: abd
                    541:  3: f
                    542: 
                    543: /^(?=(ab(cd)))(ab)/
                    544:     abcd
                    545:  0: ab
                    546:  1: abcd
                    547:  2: cd
                    548:  3: ab
                    549: 
                    550: /^[\da-f](\.[\da-f])*$/i
                    551:     a.b.c.d
                    552:  0: a.b.c.d
                    553:  1: .d
                    554:     A.B.C.D
                    555:  0: A.B.C.D
                    556:  1: .D
                    557:     a.b.c.1.2.3.C
                    558:  0: a.b.c.1.2.3.C
                    559:  1: .C
                    560: 
                    561: /^\".*\"\s*(;.*)?$/
                    562:     \"1234\"
                    563:  0: "1234"
                    564:     \"abcd\" ;
                    565:  0: "abcd" ;
                    566:  1: ;
                    567:     \"\" ; rhubarb
                    568:  0: "" ; rhubarb
                    569:  1: ; rhubarb
                    570:     *** Failers
                    571: No match
                    572:     \"1234\" : things
                    573: No match
                    574: 
                    575: /^$/
                    576:     \
                    577:  0: 
                    578:     *** Failers
                    579: No match
                    580: 
                    581: /   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
                    582:     ab c
                    583:  0: ab c
                    584:     *** Failers
                    585: No match
                    586:     abc
                    587: No match
                    588:     ab cde
                    589: No match
                    590: 
                    591: /(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
                    592:     ab c
                    593:  0: ab c
                    594:     *** Failers
                    595: No match
                    596:     abc
                    597: No match
                    598:     ab cde
                    599: No match
                    600: 
                    601: /^   a\ b[c ]d       $/x
                    602:     a bcd
                    603:  0: a bcd
                    604:     a b d
                    605:  0: a b d
                    606:     *** Failers
                    607: No match
                    608:     abcd
                    609: No match
                    610:     ab d
                    611: No match
                    612: 
                    613: /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
                    614:     abcdefhijklm
                    615:  0: abcdefhijklm
                    616:  1: abc
                    617:  2: bc
                    618:  3: c
                    619:  4: def
                    620:  5: ef
                    621:  6: f
                    622:  7: hij
                    623:  8: ij
                    624:  9: j
                    625: 10: klm
                    626: 11: lm
                    627: 12: m
                    628: 
                    629: /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
                    630:     abcdefhijklm
                    631:  0: abcdefhijklm
                    632:  1: bc
                    633:  2: c
                    634:  3: ef
                    635:  4: f
                    636:  5: ij
                    637:  6: j
                    638:  7: lm
                    639:  8: m
                    640: 
                    641: /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
                    642:     a+ Z0+\x08\n\x1d\x12
                    643:  0: a+ Z0+\x08\x0a\x1d\x12
                    644: 
                    645: /^[.^$|()*+?{,}]+/
                    646:     .^\$(*+)|{?,?}
                    647:  0: .^$(*+)|{?,?}
                    648: 
                    649: /^a*\w/
                    650:     z
                    651:  0: z
                    652:     az
                    653:  0: az
                    654:     aaaz
                    655:  0: aaaz
                    656:     a
                    657:  0: a
                    658:     aa
                    659:  0: aa
                    660:     aaaa
                    661:  0: aaaa
                    662:     a+
                    663:  0: a
                    664:     aa+
                    665:  0: aa
                    666: 
                    667: /^a*?\w/
                    668:     z
                    669:  0: z
                    670:     az
                    671:  0: a
                    672:     aaaz
                    673:  0: a
                    674:     a
                    675:  0: a
                    676:     aa
                    677:  0: a
                    678:     aaaa
                    679:  0: a
                    680:     a+
                    681:  0: a
                    682:     aa+
                    683:  0: a
                    684: 
                    685: /^a+\w/
                    686:     az
                    687:  0: az
                    688:     aaaz
                    689:  0: aaaz
                    690:     aa
                    691:  0: aa
                    692:     aaaa
                    693:  0: aaaa
                    694:     aa+
                    695:  0: aa
                    696: 
                    697: /^a+?\w/
                    698:     az
                    699:  0: az
                    700:     aaaz
                    701:  0: aa
                    702:     aa
                    703:  0: aa
                    704:     aaaa
                    705:  0: aa
                    706:     aa+
                    707:  0: aa
                    708: 
                    709: /^\d{8}\w{2,}/
                    710:     1234567890
                    711:  0: 1234567890
                    712:     12345678ab
                    713:  0: 12345678ab
                    714:     12345678__
                    715:  0: 12345678__
                    716:     *** Failers
                    717: No match
                    718:     1234567
                    719: No match
                    720: 
                    721: /^[aeiou\d]{4,5}$/
                    722:     uoie
                    723:  0: uoie
                    724:     1234
                    725:  0: 1234
                    726:     12345
                    727:  0: 12345
                    728:     aaaaa
                    729:  0: aaaaa
                    730:     *** Failers
                    731: No match
                    732:     123456
                    733: No match
                    734: 
                    735: /^[aeiou\d]{4,5}?/
                    736:     uoie
                    737:  0: uoie
                    738:     1234
                    739:  0: 1234
                    740:     12345
                    741:  0: 1234
                    742:     aaaaa
                    743:  0: aaaa
                    744:     123456
                    745:  0: 1234
                    746: 
                    747: /\A(abc|def)=(\1){2,3}\Z/
                    748:     abc=abcabc
                    749:  0: abc=abcabc
                    750:  1: abc
                    751:  2: abc
                    752:     def=defdefdef
                    753:  0: def=defdefdef
                    754:  1: def
                    755:  2: def
                    756:     *** Failers
                    757: No match
                    758:     abc=defdef
                    759: No match
                    760: 
                    761: /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
                    762:     abcdefghijkcda2
                    763:  0: abcdefghijkcda2
                    764:  1: a
                    765:  2: b
                    766:  3: c
                    767:  4: d
                    768:  5: e
                    769:  6: f
                    770:  7: g
                    771:  8: h
                    772:  9: i
                    773: 10: j
                    774: 11: k
                    775: 12: cd
                    776:     abcdefghijkkkkcda2
                    777:  0: abcdefghijkkkkcda2
                    778:  1: a
                    779:  2: b
                    780:  3: c
                    781:  4: d
                    782:  5: e
                    783:  6: f
                    784:  7: g
                    785:  8: h
                    786:  9: i
                    787: 10: j
                    788: 11: k
                    789: 12: cd
                    790: 
                    791: /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
                    792:     cataract cataract23
                    793:  0: cataract cataract23
                    794:  1: cataract
                    795:  2: aract
                    796:  3: ract
                    797:  4: 
                    798:  5: 3
                    799:     catatonic catatonic23
                    800:  0: catatonic catatonic23
                    801:  1: catatonic
                    802:  2: atonic
                    803:  3: tonic
                    804:  4: 
                    805:  5: 3
                    806:     caterpillar caterpillar23
                    807:  0: caterpillar caterpillar23
                    808:  1: caterpillar
                    809:  2: erpillar
                    810:  3: <unset>
                    811:  4: 
                    812:  5: 3
                    813: 
                    814: 
                    815: /^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]/
                    816:     From abcd  Mon Sep 01 12:33:02 1997
                    817:  0: From abcd  Mon Sep 01 12:33
                    818:  1: abcd
                    819: 
                    820: /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
                    821:     From abcd  Mon Sep 01 12:33:02 1997
                    822:  0: From abcd  Mon Sep 01 12:33
                    823:  1: Sep 
                    824:     From abcd  Mon Sep  1 12:33:02 1997
                    825:  0: From abcd  Mon Sep  1 12:33
                    826:  1: Sep  
                    827:     *** Failers
                    828: No match
                    829:     From abcd  Sep 01 12:33:02 1997
                    830: No match
                    831: 
                    832: /^12.34/s
                    833:     12\n34
                    834:  0: 12\x0a34
                    835:     12\r34
                    836:  0: 12\x0d34
                    837: 
                    838: /\w+(?=\t)/
                    839:     the quick brown\t fox
                    840:  0: brown
                    841: 
                    842: /foo(?!bar)(.*)/
                    843:     foobar is foolish see?
                    844:  0: foolish see?
                    845:  1: lish see?
                    846: 
                    847: /(?:(?!foo)...|^.{0,2})bar(.*)/
                    848:     foobar crowbar etc
                    849:  0: rowbar etc
                    850:  1:  etc
                    851:     barrel
                    852:  0: barrel
                    853:  1: rel
                    854:     2barrel
                    855:  0: 2barrel
                    856:  1: rel
                    857:     A barrel
                    858:  0: A barrel
                    859:  1: rel
                    860: 
                    861: /^(\D*)(?=\d)(?!123)/
                    862:     abc456
                    863:  0: abc
                    864:  1: abc
                    865:     *** Failers
                    866: No match
                    867:     abc123
                    868: No match
                    869: 
                    870: /^1234(?# test newlines
                    871:   inside)/
                    872:     1234
                    873:  0: 1234
                    874: 
                    875: /^1234 #comment in extended re
                    876:   /x
                    877:     1234
                    878:  0: 1234
                    879: 
                    880: /#rhubarb
                    881:   abcd/x
                    882:     abcd
                    883:  0: abcd
                    884: 
                    885: /^abcd#rhubarb/x
                    886:     abcd
                    887:  0: abcd
                    888: 
                    889: /^(a)\1{2,3}(.)/
                    890:     aaab
                    891:  0: aaab
                    892:  1: a
                    893:  2: b
                    894:     aaaab
                    895:  0: aaaab
                    896:  1: a
                    897:  2: b
                    898:     aaaaab
                    899:  0: aaaaa
                    900:  1: a
                    901:  2: a
                    902:     aaaaaab
                    903:  0: aaaaa
                    904:  1: a
                    905:  2: a
                    906: 
                    907: /(?!^)abc/
                    908:     the abc
                    909:  0: abc
                    910:     *** Failers
                    911: No match
                    912:     abc
                    913: No match
                    914: 
                    915: /(?=^)abc/
                    916:     abc
                    917:  0: abc
                    918:     *** Failers
                    919: No match
                    920:     the abc
                    921: No match
                    922: 
                    923: /^[ab]{1,3}(ab*|b)/
                    924:     aabbbbb
                    925:  0: aabb
                    926:  1: b
                    927: 
                    928: /^[ab]{1,3}?(ab*|b)/
                    929:     aabbbbb
                    930:  0: aabbbbb
                    931:  1: abbbbb
                    932: 
                    933: /^[ab]{1,3}?(ab*?|b)/
                    934:     aabbbbb
                    935:  0: aa
                    936:  1: a
                    937: 
                    938: /^[ab]{1,3}(ab*?|b)/
                    939:     aabbbbb
                    940:  0: aabb
                    941:  1: b
                    942: 
                    943: /  (?: [\040\t] |  \(
                    944: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                    945: \)  )*                          # optional leading comment
                    946: (?:    (?:
                    947: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                    948: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                    949: |
                    950: " (?:                      # opening quote...
                    951: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
                    952: |                     #    or
                    953: \\ [^\x80-\xff]           #   Escaped something (something != CR)
                    954: )* "  # closing quote
                    955: )                    # initial word
                    956: (?:  (?: [\040\t] |  \(
                    957: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                    958: \)  )*  \.  (?: [\040\t] |  \(
                    959: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                    960: \)  )*   (?:
                    961: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                    962: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                    963: |
                    964: " (?:                      # opening quote...
                    965: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
                    966: |                     #    or
                    967: \\ [^\x80-\xff]           #   Escaped something (something != CR)
                    968: )* "  # closing quote
                    969: )  )* # further okay, if led by a period
                    970: (?: [\040\t] |  \(
                    971: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                    972: \)  )*  @  (?: [\040\t] |  \(
                    973: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                    974: \)  )*    (?:
                    975: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                    976: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                    977: |   \[                         # [
                    978: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                    979: \]                        #           ]
                    980: )                           # initial subdomain
                    981: (?:                                  #
                    982: (?: [\040\t] |  \(
                    983: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                    984: \)  )*  \.                        # if led by a period...
                    985: (?: [\040\t] |  \(
                    986: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                    987: \)  )*   (?:
                    988: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                    989: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                    990: |   \[                         # [
                    991: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                    992: \]                        #           ]
                    993: )                     #   ...further okay
                    994: )*
                    995: # address
                    996: |                     #  or
                    997: (?:
                    998: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                    999: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1000: |
                   1001: " (?:                      # opening quote...
                   1002: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
                   1003: |                     #    or
                   1004: \\ [^\x80-\xff]           #   Escaped something (something != CR)
                   1005: )* "  # closing quote
                   1006: )             # one word, optionally followed by....
                   1007: (?:
                   1008: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
                   1009: \(
                   1010: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1011: \)       |  # comments, or...
                   1012: 
                   1013: " (?:                      # opening quote...
                   1014: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
                   1015: |                     #    or
                   1016: \\ [^\x80-\xff]           #   Escaped something (something != CR)
                   1017: )* "  # closing quote
                   1018: # quoted strings
                   1019: )*
                   1020: <  (?: [\040\t] |  \(
                   1021: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1022: \)  )*                     # leading <
                   1023: (?:  @  (?: [\040\t] |  \(
                   1024: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1025: \)  )*    (?:
                   1026: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1027: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1028: |   \[                         # [
                   1029: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                   1030: \]                        #           ]
                   1031: )                           # initial subdomain
                   1032: (?:                                  #
                   1033: (?: [\040\t] |  \(
                   1034: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1035: \)  )*  \.                        # if led by a period...
                   1036: (?: [\040\t] |  \(
                   1037: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1038: \)  )*   (?:
                   1039: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1040: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1041: |   \[                         # [
                   1042: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                   1043: \]                        #           ]
                   1044: )                     #   ...further okay
                   1045: )*
                   1046: 
                   1047: (?:  (?: [\040\t] |  \(
                   1048: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1049: \)  )*  ,  (?: [\040\t] |  \(
                   1050: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1051: \)  )*  @  (?: [\040\t] |  \(
                   1052: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1053: \)  )*    (?:
                   1054: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1055: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1056: |   \[                         # [
                   1057: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                   1058: \]                        #           ]
                   1059: )                           # initial subdomain
                   1060: (?:                                  #
                   1061: (?: [\040\t] |  \(
                   1062: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1063: \)  )*  \.                        # if led by a period...
                   1064: (?: [\040\t] |  \(
                   1065: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1066: \)  )*   (?:
                   1067: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1068: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1069: |   \[                         # [
                   1070: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                   1071: \]                        #           ]
                   1072: )                     #   ...further okay
                   1073: )*
                   1074: )* # further okay, if led by comma
                   1075: :                                # closing colon
                   1076: (?: [\040\t] |  \(
                   1077: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1078: \)  )*  )? #       optional route
                   1079: (?:
                   1080: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1081: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1082: |
                   1083: " (?:                      # opening quote...
                   1084: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
                   1085: |                     #    or
                   1086: \\ [^\x80-\xff]           #   Escaped something (something != CR)
                   1087: )* "  # closing quote
                   1088: )                    # initial word
                   1089: (?:  (?: [\040\t] |  \(
                   1090: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1091: \)  )*  \.  (?: [\040\t] |  \(
                   1092: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1093: \)  )*   (?:
                   1094: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1095: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1096: |
                   1097: " (?:                      # opening quote...
                   1098: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
                   1099: |                     #    or
                   1100: \\ [^\x80-\xff]           #   Escaped something (something != CR)
                   1101: )* "  # closing quote
                   1102: )  )* # further okay, if led by a period
                   1103: (?: [\040\t] |  \(
                   1104: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1105: \)  )*  @  (?: [\040\t] |  \(
                   1106: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1107: \)  )*    (?:
                   1108: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1109: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1110: |   \[                         # [
                   1111: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                   1112: \]                        #           ]
                   1113: )                           # initial subdomain
                   1114: (?:                                  #
                   1115: (?: [\040\t] |  \(
                   1116: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1117: \)  )*  \.                        # if led by a period...
                   1118: (?: [\040\t] |  \(
                   1119: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1120: \)  )*   (?:
                   1121: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1122: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1123: |   \[                         # [
                   1124: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
                   1125: \]                        #           ]
                   1126: )                     #   ...further okay
                   1127: )*
                   1128: #       address spec
                   1129: (?: [\040\t] |  \(
                   1130: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1131: \)  )*  > #                  trailing >
                   1132: # name and address
                   1133: )  (?: [\040\t] |  \(
                   1134: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
                   1135: \)  )*                       # optional trailing comment
                   1136: /x
                   1137:     Alan Other <user\@dom.ain>
                   1138:  0: Alan Other <user@dom.ain>
                   1139:     <user\@dom.ain>
                   1140:  0: user@dom.ain
                   1141:     user\@dom.ain
                   1142:  0: user@dom.ain
                   1143:     \"A. Other\" <user.1234\@dom.ain> (a comment)
                   1144:  0: "A. Other" <user.1234@dom.ain> (a comment)
                   1145:     A. Other <user.1234\@dom.ain> (a comment)
                   1146:  0:  Other <user.1234@dom.ain> (a comment)
                   1147:     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
                   1148:  0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
                   1149:     A missing angle <user\@some.where
                   1150:  0: user@some.where
                   1151:     *** Failers
                   1152: No match
                   1153:     The quick brown fox
                   1154: No match
                   1155: 
                   1156: /[\040\t]*                    # Nab whitespace.
                   1157: (?:
                   1158: \(                              #  (
                   1159: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1160: (?:                                 #       (
                   1161: (?:  \\ [^\x80-\xff]  |
                   1162: \(                            #  (
                   1163: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1164: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1165: \)                           #                       )
                   1166: )    #         special
                   1167: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1168: )*                                  #            )*
                   1169: \)                             #                )
                   1170: [\040\t]* )*    # If comment found, allow more spaces.
                   1171: # optional leading comment
                   1172: (?:
                   1173: (?:
                   1174: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1175: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1176: # Atom
                   1177: |                       #  or
                   1178: "                                     # "
                   1179: [^\\\x80-\xff\n\015"] *                            #   normal
                   1180: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
                   1181: "                                     #        "
                   1182: # Quoted string
                   1183: )
                   1184: [\040\t]*                    # Nab whitespace.
                   1185: (?:
                   1186: \(                              #  (
                   1187: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1188: (?:                                 #       (
                   1189: (?:  \\ [^\x80-\xff]  |
                   1190: \(                            #  (
                   1191: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1192: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1193: \)                           #                       )
                   1194: )    #         special
                   1195: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1196: )*                                  #            )*
                   1197: \)                             #                )
                   1198: [\040\t]* )*    # If comment found, allow more spaces.
                   1199: (?:
                   1200: \.
                   1201: [\040\t]*                    # Nab whitespace.
                   1202: (?:
                   1203: \(                              #  (
                   1204: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1205: (?:                                 #       (
                   1206: (?:  \\ [^\x80-\xff]  |
                   1207: \(                            #  (
                   1208: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1209: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1210: \)                           #                       )
                   1211: )    #         special
                   1212: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1213: )*                                  #            )*
                   1214: \)                             #                )
                   1215: [\040\t]* )*    # If comment found, allow more spaces.
                   1216: (?:
                   1217: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1218: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1219: # Atom
                   1220: |                       #  or
                   1221: "                                     # "
                   1222: [^\\\x80-\xff\n\015"] *                            #   normal
                   1223: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
                   1224: "                                     #        "
                   1225: # Quoted string
                   1226: )
                   1227: [\040\t]*                    # Nab whitespace.
                   1228: (?:
                   1229: \(                              #  (
                   1230: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1231: (?:                                 #       (
                   1232: (?:  \\ [^\x80-\xff]  |
                   1233: \(                            #  (
                   1234: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1235: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1236: \)                           #                       )
                   1237: )    #         special
                   1238: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1239: )*                                  #            )*
                   1240: \)                             #                )
                   1241: [\040\t]* )*    # If comment found, allow more spaces.
                   1242: # additional words
                   1243: )*
                   1244: @
                   1245: [\040\t]*                    # Nab whitespace.
                   1246: (?:
                   1247: \(                              #  (
                   1248: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1249: (?:                                 #       (
                   1250: (?:  \\ [^\x80-\xff]  |
                   1251: \(                            #  (
                   1252: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1253: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1254: \)                           #                       )
                   1255: )    #         special
                   1256: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1257: )*                                  #            )*
                   1258: \)                             #                )
                   1259: [\040\t]* )*    # If comment found, allow more spaces.
                   1260: (?:
                   1261: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1262: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1263: |
                   1264: \[                            # [
                   1265: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1266: \]                           #           ]
                   1267: )
                   1268: [\040\t]*                    # Nab whitespace.
                   1269: (?:
                   1270: \(                              #  (
                   1271: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1272: (?:                                 #       (
                   1273: (?:  \\ [^\x80-\xff]  |
                   1274: \(                            #  (
                   1275: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1276: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1277: \)                           #                       )
                   1278: )    #         special
                   1279: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1280: )*                                  #            )*
                   1281: \)                             #                )
                   1282: [\040\t]* )*    # If comment found, allow more spaces.
                   1283: # optional trailing comments
                   1284: (?:
                   1285: \.
                   1286: [\040\t]*                    # Nab whitespace.
                   1287: (?:
                   1288: \(                              #  (
                   1289: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1290: (?:                                 #       (
                   1291: (?:  \\ [^\x80-\xff]  |
                   1292: \(                            #  (
                   1293: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1294: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1295: \)                           #                       )
                   1296: )    #         special
                   1297: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1298: )*                                  #            )*
                   1299: \)                             #                )
                   1300: [\040\t]* )*    # If comment found, allow more spaces.
                   1301: (?:
                   1302: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1303: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1304: |
                   1305: \[                            # [
                   1306: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1307: \]                           #           ]
                   1308: )
                   1309: [\040\t]*                    # Nab whitespace.
                   1310: (?:
                   1311: \(                              #  (
                   1312: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1313: (?:                                 #       (
                   1314: (?:  \\ [^\x80-\xff]  |
                   1315: \(                            #  (
                   1316: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1317: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1318: \)                           #                       )
                   1319: )    #         special
                   1320: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1321: )*                                  #            )*
                   1322: \)                             #                )
                   1323: [\040\t]* )*    # If comment found, allow more spaces.
                   1324: # optional trailing comments
                   1325: )*
                   1326: # address
                   1327: |                             #  or
                   1328: (?:
                   1329: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1330: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1331: # Atom
                   1332: |                       #  or
                   1333: "                                     # "
                   1334: [^\\\x80-\xff\n\015"] *                            #   normal
                   1335: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
                   1336: "                                     #        "
                   1337: # Quoted string
                   1338: )
                   1339: # leading word
                   1340: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
                   1341: (?:
                   1342: (?:
                   1343: \(                              #  (
                   1344: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1345: (?:                                 #       (
                   1346: (?:  \\ [^\x80-\xff]  |
                   1347: \(                            #  (
                   1348: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1349: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1350: \)                           #                       )
                   1351: )    #         special
                   1352: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1353: )*                                  #            )*
                   1354: \)                             #                )
                   1355: |
                   1356: "                                     # "
                   1357: [^\\\x80-\xff\n\015"] *                            #   normal
                   1358: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
                   1359: "                                     #        "
                   1360: ) # "special" comment or quoted string
                   1361: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
                   1362: )*
                   1363: <
                   1364: [\040\t]*                    # Nab whitespace.
                   1365: (?:
                   1366: \(                              #  (
                   1367: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1368: (?:                                 #       (
                   1369: (?:  \\ [^\x80-\xff]  |
                   1370: \(                            #  (
                   1371: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1372: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1373: \)                           #                       )
                   1374: )    #         special
                   1375: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1376: )*                                  #            )*
                   1377: \)                             #                )
                   1378: [\040\t]* )*    # If comment found, allow more spaces.
                   1379: # <
                   1380: (?:
                   1381: @
                   1382: [\040\t]*                    # Nab whitespace.
                   1383: (?:
                   1384: \(                              #  (
                   1385: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1386: (?:                                 #       (
                   1387: (?:  \\ [^\x80-\xff]  |
                   1388: \(                            #  (
                   1389: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1390: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1391: \)                           #                       )
                   1392: )    #         special
                   1393: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1394: )*                                  #            )*
                   1395: \)                             #                )
                   1396: [\040\t]* )*    # If comment found, allow more spaces.
                   1397: (?:
                   1398: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1399: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1400: |
                   1401: \[                            # [
                   1402: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1403: \]                           #           ]
                   1404: )
                   1405: [\040\t]*                    # Nab whitespace.
                   1406: (?:
                   1407: \(                              #  (
                   1408: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1409: (?:                                 #       (
                   1410: (?:  \\ [^\x80-\xff]  |
                   1411: \(                            #  (
                   1412: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1413: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1414: \)                           #                       )
                   1415: )    #         special
                   1416: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1417: )*                                  #            )*
                   1418: \)                             #                )
                   1419: [\040\t]* )*    # If comment found, allow more spaces.
                   1420: # optional trailing comments
                   1421: (?:
                   1422: \.
                   1423: [\040\t]*                    # Nab whitespace.
                   1424: (?:
                   1425: \(                              #  (
                   1426: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1427: (?:                                 #       (
                   1428: (?:  \\ [^\x80-\xff]  |
                   1429: \(                            #  (
                   1430: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1431: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1432: \)                           #                       )
                   1433: )    #         special
                   1434: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1435: )*                                  #            )*
                   1436: \)                             #                )
                   1437: [\040\t]* )*    # If comment found, allow more spaces.
                   1438: (?:
                   1439: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1440: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1441: |
                   1442: \[                            # [
                   1443: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1444: \]                           #           ]
                   1445: )
                   1446: [\040\t]*                    # Nab whitespace.
                   1447: (?:
                   1448: \(                              #  (
                   1449: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1450: (?:                                 #       (
                   1451: (?:  \\ [^\x80-\xff]  |
                   1452: \(                            #  (
                   1453: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1454: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1455: \)                           #                       )
                   1456: )    #         special
                   1457: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1458: )*                                  #            )*
                   1459: \)                             #                )
                   1460: [\040\t]* )*    # If comment found, allow more spaces.
                   1461: # optional trailing comments
                   1462: )*
                   1463: (?: ,
                   1464: [\040\t]*                    # Nab whitespace.
                   1465: (?:
                   1466: \(                              #  (
                   1467: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1468: (?:                                 #       (
                   1469: (?:  \\ [^\x80-\xff]  |
                   1470: \(                            #  (
                   1471: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1472: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1473: \)                           #                       )
                   1474: )    #         special
                   1475: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1476: )*                                  #            )*
                   1477: \)                             #                )
                   1478: [\040\t]* )*    # If comment found, allow more spaces.
                   1479: @
                   1480: [\040\t]*                    # Nab whitespace.
                   1481: (?:
                   1482: \(                              #  (
                   1483: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1484: (?:                                 #       (
                   1485: (?:  \\ [^\x80-\xff]  |
                   1486: \(                            #  (
                   1487: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1488: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1489: \)                           #                       )
                   1490: )    #         special
                   1491: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1492: )*                                  #            )*
                   1493: \)                             #                )
                   1494: [\040\t]* )*    # If comment found, allow more spaces.
                   1495: (?:
                   1496: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1497: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1498: |
                   1499: \[                            # [
                   1500: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1501: \]                           #           ]
                   1502: )
                   1503: [\040\t]*                    # Nab whitespace.
                   1504: (?:
                   1505: \(                              #  (
                   1506: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1507: (?:                                 #       (
                   1508: (?:  \\ [^\x80-\xff]  |
                   1509: \(                            #  (
                   1510: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1511: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1512: \)                           #                       )
                   1513: )    #         special
                   1514: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1515: )*                                  #            )*
                   1516: \)                             #                )
                   1517: [\040\t]* )*    # If comment found, allow more spaces.
                   1518: # optional trailing comments
                   1519: (?:
                   1520: \.
                   1521: [\040\t]*                    # Nab whitespace.
                   1522: (?:
                   1523: \(                              #  (
                   1524: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1525: (?:                                 #       (
                   1526: (?:  \\ [^\x80-\xff]  |
                   1527: \(                            #  (
                   1528: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1529: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1530: \)                           #                       )
                   1531: )    #         special
                   1532: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1533: )*                                  #            )*
                   1534: \)                             #                )
                   1535: [\040\t]* )*    # If comment found, allow more spaces.
                   1536: (?:
                   1537: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1538: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1539: |
                   1540: \[                            # [
                   1541: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1542: \]                           #           ]
                   1543: )
                   1544: [\040\t]*                    # Nab whitespace.
                   1545: (?:
                   1546: \(                              #  (
                   1547: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1548: (?:                                 #       (
                   1549: (?:  \\ [^\x80-\xff]  |
                   1550: \(                            #  (
                   1551: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1552: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1553: \)                           #                       )
                   1554: )    #         special
                   1555: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1556: )*                                  #            )*
                   1557: \)                             #                )
                   1558: [\040\t]* )*    # If comment found, allow more spaces.
                   1559: # optional trailing comments
                   1560: )*
                   1561: )*  # additional domains
                   1562: :
                   1563: [\040\t]*                    # Nab whitespace.
                   1564: (?:
                   1565: \(                              #  (
                   1566: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1567: (?:                                 #       (
                   1568: (?:  \\ [^\x80-\xff]  |
                   1569: \(                            #  (
                   1570: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1571: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1572: \)                           #                       )
                   1573: )    #         special
                   1574: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1575: )*                                  #            )*
                   1576: \)                             #                )
                   1577: [\040\t]* )*    # If comment found, allow more spaces.
                   1578: # optional trailing comments
                   1579: )?     #       optional route
                   1580: (?:
                   1581: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1582: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1583: # Atom
                   1584: |                       #  or
                   1585: "                                     # "
                   1586: [^\\\x80-\xff\n\015"] *                            #   normal
                   1587: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
                   1588: "                                     #        "
                   1589: # Quoted string
                   1590: )
                   1591: [\040\t]*                    # Nab whitespace.
                   1592: (?:
                   1593: \(                              #  (
                   1594: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1595: (?:                                 #       (
                   1596: (?:  \\ [^\x80-\xff]  |
                   1597: \(                            #  (
                   1598: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1599: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1600: \)                           #                       )
                   1601: )    #         special
                   1602: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1603: )*                                  #            )*
                   1604: \)                             #                )
                   1605: [\040\t]* )*    # If comment found, allow more spaces.
                   1606: (?:
                   1607: \.
                   1608: [\040\t]*                    # Nab whitespace.
                   1609: (?:
                   1610: \(                              #  (
                   1611: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1612: (?:                                 #       (
                   1613: (?:  \\ [^\x80-\xff]  |
                   1614: \(                            #  (
                   1615: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1616: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1617: \)                           #                       )
                   1618: )    #         special
                   1619: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1620: )*                                  #            )*
                   1621: \)                             #                )
                   1622: [\040\t]* )*    # If comment found, allow more spaces.
                   1623: (?:
                   1624: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1625: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1626: # Atom
                   1627: |                       #  or
                   1628: "                                     # "
                   1629: [^\\\x80-\xff\n\015"] *                            #   normal
                   1630: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
                   1631: "                                     #        "
                   1632: # Quoted string
                   1633: )
                   1634: [\040\t]*                    # Nab whitespace.
                   1635: (?:
                   1636: \(                              #  (
                   1637: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1638: (?:                                 #       (
                   1639: (?:  \\ [^\x80-\xff]  |
                   1640: \(                            #  (
                   1641: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1642: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1643: \)                           #                       )
                   1644: )    #         special
                   1645: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1646: )*                                  #            )*
                   1647: \)                             #                )
                   1648: [\040\t]* )*    # If comment found, allow more spaces.
                   1649: # additional words
                   1650: )*
                   1651: @
                   1652: [\040\t]*                    # Nab whitespace.
                   1653: (?:
                   1654: \(                              #  (
                   1655: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1656: (?:                                 #       (
                   1657: (?:  \\ [^\x80-\xff]  |
                   1658: \(                            #  (
                   1659: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1660: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1661: \)                           #                       )
                   1662: )    #         special
                   1663: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1664: )*                                  #            )*
                   1665: \)                             #                )
                   1666: [\040\t]* )*    # If comment found, allow more spaces.
                   1667: (?:
                   1668: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1669: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1670: |
                   1671: \[                            # [
                   1672: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1673: \]                           #           ]
                   1674: )
                   1675: [\040\t]*                    # Nab whitespace.
                   1676: (?:
                   1677: \(                              #  (
                   1678: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1679: (?:                                 #       (
                   1680: (?:  \\ [^\x80-\xff]  |
                   1681: \(                            #  (
                   1682: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1683: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1684: \)                           #                       )
                   1685: )    #         special
                   1686: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1687: )*                                  #            )*
                   1688: \)                             #                )
                   1689: [\040\t]* )*    # If comment found, allow more spaces.
                   1690: # optional trailing comments
                   1691: (?:
                   1692: \.
                   1693: [\040\t]*                    # Nab whitespace.
                   1694: (?:
                   1695: \(                              #  (
                   1696: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1697: (?:                                 #       (
                   1698: (?:  \\ [^\x80-\xff]  |
                   1699: \(                            #  (
                   1700: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1701: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1702: \)                           #                       )
                   1703: )    #         special
                   1704: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1705: )*                                  #            )*
                   1706: \)                             #                )
                   1707: [\040\t]* )*    # If comment found, allow more spaces.
                   1708: (?:
                   1709: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
                   1710: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
                   1711: |
                   1712: \[                            # [
                   1713: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
                   1714: \]                           #           ]
                   1715: )
                   1716: [\040\t]*                    # Nab whitespace.
                   1717: (?:
                   1718: \(                              #  (
                   1719: [^\\\x80-\xff\n\015()] *                             #     normal*
                   1720: (?:                                 #       (
                   1721: (?:  \\ [^\x80-\xff]  |
                   1722: \(                            #  (
                   1723: [^\\\x80-\xff\n\015()] *                            #     normal*
                   1724: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
                   1725: \)                           #                       )
                   1726: )    #         special
                   1727: [^\\\x80-\xff\n\015()] *                         #         normal*
                   1728: )*                                  #            )*
                   1729: \)                             #                )
                   1730: [\040\t]* )*    # If comment found, allow more spaces.
                   1731: # optional trailing comments
                   1732: )*
                   1733: #       address spec
                   1734: >                    #                 >
                   1735: # name and address
                   1736: )
                   1737: /x
                   1738:     Alan Other <user\@dom.ain>
                   1739:  0: Alan Other <user@dom.ain>
                   1740:     <user\@dom.ain>
                   1741:  0: user@dom.ain
                   1742:     user\@dom.ain
                   1743:  0: user@dom.ain
                   1744:     \"A. Other\" <user.1234\@dom.ain> (a comment)
                   1745:  0: "A. Other" <user.1234@dom.ain>
                   1746:     A. Other <user.1234\@dom.ain> (a comment)
                   1747:  0:  Other <user.1234@dom.ain>
                   1748:     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
                   1749:  0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
                   1750:     A missing angle <user\@some.where
                   1751:  0: user@some.where
                   1752:     *** Failers
                   1753: No match
                   1754:     The quick brown fox
                   1755: No match
                   1756: 
                   1757: /abc\0def\00pqr\000xyz\0000AB/
                   1758:     abc\0def\00pqr\000xyz\0000AB
                   1759:  0: abc\x00def\x00pqr\x00xyz\x000AB
                   1760:     abc456 abc\0def\00pqr\000xyz\0000ABCDE
                   1761:  0: abc\x00def\x00pqr\x00xyz\x000AB
                   1762: 
                   1763: /abc\x0def\x00pqr\x000xyz\x0000AB/
                   1764:     abc\x0def\x00pqr\x000xyz\x0000AB
                   1765:  0: abc\x0def\x00pqr\x000xyz\x0000AB
                   1766:     abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
                   1767:  0: abc\x0def\x00pqr\x000xyz\x0000AB
                   1768: 
                   1769: /^[\000-\037]/
                   1770:     \0A
                   1771:  0: \x00
                   1772:     \01B
                   1773:  0: \x01
                   1774:     \037C
                   1775:  0: \x1f
                   1776: 
                   1777: /\0*/
                   1778:     \0\0\0\0
                   1779:  0: \x00\x00\x00\x00
                   1780: 
                   1781: /A\x0{2,3}Z/
                   1782:     The A\x0\x0Z
                   1783:  0: A\x00\x00Z
                   1784:     An A\0\x0\0Z
                   1785:  0: A\x00\x00\x00Z
                   1786:     *** Failers
                   1787: No match
                   1788:     A\0Z
                   1789: No match
                   1790:     A\0\x0\0\x0Z
                   1791: No match
                   1792: 
                   1793: /^(cow|)\1(bell)/
                   1794:     cowcowbell
                   1795:  0: cowcowbell
                   1796:  1: cow
                   1797:  2: bell
                   1798:     bell
                   1799:  0: bell
                   1800:  1: 
                   1801:  2: bell
                   1802:     *** Failers
                   1803: No match
                   1804:     cowbell
                   1805: No match
                   1806: 
                   1807: /^\s/
                   1808:     \040abc
                   1809:  0:  
                   1810:     \x0cabc
                   1811:  0: \x0c
                   1812:     \nabc
                   1813:  0: \x0a
                   1814:     \rabc
                   1815:  0: \x0d
                   1816:     \tabc
                   1817:  0: \x09
                   1818:     *** Failers
                   1819: No match
                   1820:     abc
                   1821: No match
                   1822: 
                   1823: /^a    b
                   1824:       c/x
                   1825:     abc
                   1826:  0: abc
                   1827: 
                   1828: /^(a|)\1*b/
                   1829:     ab
                   1830:  0: ab
                   1831:  1: a
                   1832:     aaaab
                   1833:  0: aaaab
                   1834:  1: a
                   1835:     b
                   1836:  0: b
                   1837:  1: 
                   1838:     *** Failers
                   1839: No match
                   1840:     acb
                   1841: No match
                   1842: 
                   1843: /^(a|)\1+b/
                   1844:     aab
                   1845:  0: aab
                   1846:  1: a
                   1847:     aaaab
                   1848:  0: aaaab
                   1849:  1: a
                   1850:     b
                   1851:  0: b
                   1852:  1: 
                   1853:     *** Failers
                   1854: No match
                   1855:     ab
                   1856: No match
                   1857: 
                   1858: /^(a|)\1?b/
                   1859:     ab
                   1860:  0: ab
                   1861:  1: a
                   1862:     aab
                   1863:  0: aab
                   1864:  1: a
                   1865:     b
                   1866:  0: b
                   1867:  1: 
                   1868:     *** Failers
                   1869: No match
                   1870:     acb
                   1871: No match
                   1872: 
                   1873: /^(a|)\1{2}b/
                   1874:     aaab
                   1875:  0: aaab
                   1876:  1: a
                   1877:     b
                   1878:  0: b
                   1879:  1: 
                   1880:     *** Failers
                   1881: No match
                   1882:     ab
                   1883: No match
                   1884:     aab
                   1885: No match
                   1886:     aaaab
                   1887: No match
                   1888: 
                   1889: /^(a|)\1{2,3}b/
                   1890:     aaab
                   1891:  0: aaab
                   1892:  1: a
                   1893:     aaaab
                   1894:  0: aaaab
                   1895:  1: a
                   1896:     b
                   1897:  0: b
                   1898:  1: 
                   1899:     *** Failers
                   1900: No match
                   1901:     ab
                   1902: No match
                   1903:     aab
                   1904: No match
                   1905:     aaaaab
                   1906: No match
                   1907: 
                   1908: /ab{1,3}bc/
                   1909:     abbbbc
                   1910:  0: abbbbc
                   1911:     abbbc
                   1912:  0: abbbc
                   1913:     abbc
                   1914:  0: abbc
                   1915:     *** Failers
                   1916: No match
                   1917:     abc
                   1918: No match
                   1919:     abbbbbc
                   1920: No match
                   1921: 
                   1922: /([^.]*)\.([^:]*):[T ]+(.*)/
                   1923:     track1.title:TBlah blah blah
                   1924:  0: track1.title:TBlah blah blah
                   1925:  1: track1
                   1926:  2: title
                   1927:  3: Blah blah blah
                   1928: 
                   1929: /([^.]*)\.([^:]*):[T ]+(.*)/i
                   1930:     track1.title:TBlah blah blah
                   1931:  0: track1.title:TBlah blah blah
                   1932:  1: track1
                   1933:  2: title
                   1934:  3: Blah blah blah
                   1935: 
                   1936: /([^.]*)\.([^:]*):[t ]+(.*)/i
                   1937:     track1.title:TBlah blah blah
                   1938:  0: track1.title:TBlah blah blah
                   1939:  1: track1
                   1940:  2: title
                   1941:  3: Blah blah blah
                   1942: 
                   1943: /^[W-c]+$/
                   1944:     WXY_^abc
                   1945:  0: WXY_^abc
                   1946:     *** Failers
                   1947: No match
                   1948:     wxy
                   1949: No match
                   1950: 
                   1951: /^[W-c]+$/i
                   1952:     WXY_^abc
                   1953:  0: WXY_^abc
                   1954:     wxy_^ABC
                   1955:  0: wxy_^ABC
                   1956: 
                   1957: /^[\x3f-\x5F]+$/i
                   1958:     WXY_^abc
                   1959:  0: WXY_^abc
                   1960:     wxy_^ABC
                   1961:  0: wxy_^ABC
                   1962: 
                   1963: /^abc$/m
                   1964:     abc
                   1965:  0: abc
                   1966:     qqq\nabc
                   1967:  0: abc
                   1968:     abc\nzzz
                   1969:  0: abc
                   1970:     qqq\nabc\nzzz
                   1971:  0: abc
                   1972: 
                   1973: /^abc$/
                   1974:     abc
                   1975:  0: abc
                   1976:     *** Failers
                   1977: No match
                   1978:     qqq\nabc
                   1979: No match
                   1980:     abc\nzzz
                   1981: No match
                   1982:     qqq\nabc\nzzz
                   1983: No match
                   1984: 
                   1985: /\Aabc\Z/m
                   1986:     abc
                   1987:  0: abc
                   1988:     abc\n 
                   1989:  0: abc
                   1990:     *** Failers
                   1991: No match
                   1992:     qqq\nabc
                   1993: No match
                   1994:     abc\nzzz
                   1995: No match
                   1996:     qqq\nabc\nzzz
                   1997: No match
                   1998:     
                   1999: /\A(.)*\Z/s
                   2000:     abc\ndef
                   2001:  0: abc\x0adef
                   2002:  1: f
                   2003: 
                   2004: /\A(.)*\Z/m
                   2005:     *** Failers
                   2006:  0: *** Failers
                   2007:  1: s
                   2008:     abc\ndef
                   2009: No match
                   2010: 
                   2011: /(?:b)|(?::+)/
                   2012:     b::c
                   2013:  0: b
                   2014:     c::b
                   2015:  0: ::
                   2016: 
                   2017: /[-az]+/
                   2018:     az-
                   2019:  0: az-
                   2020:     *** Failers
                   2021:  0: a
                   2022:     b
                   2023: No match
                   2024: 
                   2025: /[az-]+/
                   2026:     za-
                   2027:  0: za-
                   2028:     *** Failers
                   2029:  0: a
                   2030:     b
                   2031: No match
                   2032: 
                   2033: /[a\-z]+/
                   2034:     a-z
                   2035:  0: a-z
                   2036:     *** Failers
                   2037:  0: a
                   2038:     b
                   2039: No match
                   2040: 
                   2041: /[a-z]+/
                   2042:     abcdxyz
                   2043:  0: abcdxyz
                   2044: 
                   2045: /[\d-]+/
                   2046:     12-34
                   2047:  0: 12-34
                   2048:     *** Failers
                   2049: No match
                   2050:     aaa
                   2051: No match
                   2052: 
                   2053: /[\d-z]+/
                   2054:     12-34z
                   2055:  0: 12-34z
                   2056:     *** Failers
                   2057: No match
                   2058:     aaa
                   2059: No match
                   2060: 
                   2061: /\x5c/
                   2062:     \\
                   2063:  0: \
                   2064: 
                   2065: /\x20Z/
                   2066:     the Zoo
                   2067:  0:  Z
                   2068:     *** Failers
                   2069: No match
                   2070:     Zulu
                   2071: No match
                   2072: 
                   2073: /(abc)\1/i
                   2074:     abcabc
                   2075:  0: abcabc
                   2076:  1: abc
                   2077:     ABCabc
                   2078:  0: ABCabc
                   2079:  1: ABC
                   2080:     abcABC
                   2081:  0: abcABC
                   2082:  1: abc
                   2083: 
                   2084: /ab{3cd/
                   2085:     ab{3cd
                   2086:  0: ab{3cd
                   2087: 
                   2088: /ab{3,cd/
                   2089:     ab{3,cd
                   2090:  0: ab{3,cd
                   2091: 
                   2092: /ab{3,4a}cd/
                   2093:     ab{3,4a}cd
                   2094:  0: ab{3,4a}cd
                   2095: 
                   2096: /{4,5a}bc/
                   2097:     {4,5a}bc
                   2098:  0: {4,5a}bc
                   2099: 
                   2100: /abc$/
                   2101:     abc
                   2102:  0: abc
                   2103:     abc\n
                   2104:  0: abc
                   2105:     *** Failers
                   2106: No match
                   2107:     abc\ndef
                   2108: No match
                   2109: 
                   2110: /(abc)\123/
                   2111:     abc\x53
                   2112:  0: abcS
                   2113:  1: abc
                   2114: 
                   2115: /(abc)\223/
                   2116:     abc\x93
                   2117:  0: abc\x93
                   2118:  1: abc
                   2119: 
                   2120: /(abc)\323/
                   2121:     abc\xd3
                   2122:  0: abc\xd3
                   2123:  1: abc
                   2124: 
                   2125: /(abc)\100/
                   2126:     abc\x40
                   2127:  0: abc@
                   2128:  1: abc
                   2129:     abc\100
                   2130:  0: abc@
                   2131:  1: abc
                   2132: 
                   2133: /(abc)\1000/
                   2134:     abc\x400
                   2135:  0: abc@0
                   2136:  1: abc
                   2137:     abc\x40\x30
                   2138:  0: abc@0
                   2139:  1: abc
                   2140:     abc\1000
                   2141:  0: abc@0
                   2142:  1: abc
                   2143:     abc\100\x30
                   2144:  0: abc@0
                   2145:  1: abc
                   2146:     abc\100\060
                   2147:  0: abc@0
                   2148:  1: abc
                   2149:     abc\100\60
                   2150:  0: abc@0
                   2151:  1: abc
                   2152: 
                   2153: /abc\81/
                   2154:     abc\081
                   2155:  0: abc\x0081
                   2156:     abc\0\x38\x31
                   2157:  0: abc\x0081
                   2158: 
                   2159: /abc\91/
                   2160:     abc\091
                   2161:  0: abc\x0091
                   2162:     abc\0\x39\x31
                   2163:  0: abc\x0091
                   2164: 
                   2165: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
                   2166:     abcdefghijkllS
                   2167:  0: abcdefghijkllS
                   2168:  1: a
                   2169:  2: b
                   2170:  3: c
                   2171:  4: d
                   2172:  5: e
                   2173:  6: f
                   2174:  7: g
                   2175:  8: h
                   2176:  9: i
                   2177: 10: j
                   2178: 11: k
                   2179: 12: l
                   2180: 
                   2181: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
                   2182:     abcdefghijk\12S
                   2183:  0: abcdefghijk\x0aS
                   2184:  1: a
                   2185:  2: b
                   2186:  3: c
                   2187:  4: d
                   2188:  5: e
                   2189:  6: f
                   2190:  7: g
                   2191:  8: h
                   2192:  9: i
                   2193: 10: j
                   2194: 11: k
                   2195: 
                   2196: /ab\idef/
                   2197:     abidef
                   2198:  0: abidef
                   2199: 
                   2200: /a{0}bc/
                   2201:     bc
                   2202:  0: bc
                   2203: 
                   2204: /(a|(bc)){0,0}?xyz/
                   2205:     xyz
                   2206:  0: xyz
                   2207: 
                   2208: /abc[\10]de/
                   2209:     abc\010de
                   2210:  0: abc\x08de
                   2211: 
                   2212: /abc[\1]de/
                   2213:     abc\1de
                   2214:  0: abc\x01de
                   2215: 
                   2216: /(abc)[\1]de/
                   2217:     abc\1de
                   2218:  0: abc\x01de
                   2219:  1: abc
                   2220: 
                   2221: /(?s)a.b/
                   2222:     a\nb
                   2223:  0: a\x0ab
                   2224: 
                   2225: /^([^a])([^\b])([^c]*)([^d]{3,4})/
                   2226:     baNOTccccd
                   2227:  0: baNOTcccc
                   2228:  1: b
                   2229:  2: a
                   2230:  3: NOT
                   2231:  4: cccc
                   2232:     baNOTcccd
                   2233:  0: baNOTccc
                   2234:  1: b
                   2235:  2: a
                   2236:  3: NOT
                   2237:  4: ccc
                   2238:     baNOTccd
                   2239:  0: baNOTcc
                   2240:  1: b
                   2241:  2: a
                   2242:  3: NO
                   2243:  4: Tcc
                   2244:     bacccd
                   2245:  0: baccc
                   2246:  1: b
                   2247:  2: a
                   2248:  3: 
                   2249:  4: ccc
                   2250:     *** Failers
                   2251:  0: *** Failers
                   2252:  1: *
                   2253:  2: *
                   2254:  3: * Fail
                   2255:  4: ers
                   2256:     anything
                   2257: No match
                   2258:     b\bc   
                   2259: No match
                   2260:     baccd
                   2261: No match
                   2262: 
                   2263: /[^a]/
                   2264:     Abc
                   2265:  0: A
                   2266:   
                   2267: /[^a]/i
                   2268:     Abc 
                   2269:  0: b
                   2270: 
                   2271: /[^a]+/
                   2272:     AAAaAbc
                   2273:  0: AAA
                   2274:   
                   2275: /[^a]+/i
                   2276:     AAAaAbc 
                   2277:  0: bc
                   2278: 
                   2279: /[^a]+/
                   2280:     bbb\nccc
                   2281:  0: bbb\x0accc
                   2282:    
                   2283: /[^k]$/
                   2284:     abc
                   2285:  0: c
                   2286:     *** Failers
                   2287:  0: s
                   2288:     abk   
                   2289: No match
                   2290:    
                   2291: /[^k]{2,3}$/
                   2292:     abc
                   2293:  0: abc
                   2294:     kbc
                   2295:  0: bc
                   2296:     kabc 
                   2297:  0: abc
                   2298:     *** Failers
                   2299:  0: ers
                   2300:     abk
                   2301: No match
                   2302:     akb
                   2303: No match
                   2304:     akk 
                   2305: No match
                   2306: 
                   2307: /^\d{8,}\@.+[^k]$/
                   2308:     12345678\@a.b.c.d
                   2309:  0: 12345678@a.b.c.d
                   2310:     123456789\@x.y.z
                   2311:  0: 123456789@x.y.z
                   2312:     *** Failers
                   2313: No match
                   2314:     12345678\@x.y.uk
                   2315: No match
                   2316:     1234567\@a.b.c.d       
                   2317: No match
                   2318: 
                   2319: /(a)\1{8,}/
                   2320:     aaaaaaaaa
                   2321:  0: aaaaaaaaa
                   2322:  1: a
                   2323:     aaaaaaaaaa
                   2324:  0: aaaaaaaaaa
                   2325:  1: a
                   2326:     *** Failers
                   2327: No match
                   2328:     aaaaaaa   
                   2329: No match
                   2330: 
                   2331: /[^a]/
                   2332:     aaaabcd
                   2333:  0: b
                   2334:     aaAabcd 
                   2335:  0: A
                   2336: 
                   2337: /[^a]/i
                   2338:     aaaabcd
                   2339:  0: b
                   2340:     aaAabcd 
                   2341:  0: b
                   2342: 
                   2343: /[^az]/
                   2344:     aaaabcd
                   2345:  0: b
                   2346:     aaAabcd 
                   2347:  0: A
                   2348: 
                   2349: /[^az]/i
                   2350:     aaaabcd
                   2351:  0: b
                   2352:     aaAabcd 
                   2353:  0: b
                   2354: 
                   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:  \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
                   2357:  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
                   2358: 
                   2359: /P[^*]TAIRE[^*]{1,6}?LL/
                   2360:     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
                   2361:  0: PSTAIREISLL
                   2362: 
                   2363: /P[^*]TAIRE[^*]{1,}?LL/
                   2364:     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
                   2365:  0: PSTAIREISLL
                   2366: 
                   2367: /(\.\d\d[1-9]?)\d+/
                   2368:     1.230003938
                   2369:  0: .230003938
                   2370:  1: .23
                   2371:     1.875000282   
                   2372:  0: .875000282
                   2373:  1: .875
                   2374:     1.235  
                   2375:  0: .235
                   2376:  1: .23
                   2377:                   
                   2378: /(\.\d\d((?=0)|\d(?=\d)))/
                   2379:     1.230003938      
                   2380:  0: .23
                   2381:  1: .23
                   2382:  2: 
                   2383:     1.875000282
                   2384:  0: .875
                   2385:  1: .875
                   2386:  2: 5
                   2387:     *** Failers 
                   2388: No match
                   2389:     1.235 
                   2390: No match
                   2391:     
                   2392: /a(?)b/
                   2393:     ab 
                   2394:  0: ab
                   2395:  
                   2396: /\b(foo)\s+(\w+)/i
                   2397:     Food is on the foo table
                   2398:  0: foo table
                   2399:  1: foo
                   2400:  2: table
                   2401:     
                   2402: /foo(.*)bar/
                   2403:     The food is under the bar in the barn.
                   2404:  0: food is under the bar in the bar
                   2405:  1: d is under the bar in the 
                   2406:     
                   2407: /foo(.*?)bar/  
                   2408:     The food is under the bar in the barn.
                   2409:  0: food is under the bar
                   2410:  1: d is under the 
                   2411: 
                   2412: /(.*)(\d*)/
                   2413:     I have 2 numbers: 53147
                   2414:  0: I have 2 numbers: 53147
                   2415:  1: I have 2 numbers: 53147
                   2416:  2: 
                   2417:     
                   2418: /(.*)(\d+)/
                   2419:     I have 2 numbers: 53147
                   2420:  0: I have 2 numbers: 53147
                   2421:  1: I have 2 numbers: 5314
                   2422:  2: 7
                   2423:  
                   2424: /(.*?)(\d*)/
                   2425:     I have 2 numbers: 53147
                   2426:  0: 
                   2427:  1: 
                   2428:  2: 
                   2429: 
                   2430: /(.*?)(\d+)/
                   2431:     I have 2 numbers: 53147
                   2432:  0: I have 2
                   2433:  1: I have 
                   2434:  2: 2
                   2435: 
                   2436: /(.*)(\d+)$/
                   2437:     I have 2 numbers: 53147
                   2438:  0: I have 2 numbers: 53147
                   2439:  1: I have 2 numbers: 5314
                   2440:  2: 7
                   2441: 
                   2442: /(.*?)(\d+)$/
                   2443:     I have 2 numbers: 53147
                   2444:  0: I have 2 numbers: 53147
                   2445:  1: I have 2 numbers: 
                   2446:  2: 53147
                   2447: 
                   2448: /(.*)\b(\d+)$/
                   2449:     I have 2 numbers: 53147
                   2450:  0: I have 2 numbers: 53147
                   2451:  1: I have 2 numbers: 
                   2452:  2: 53147
                   2453: 
                   2454: /(.*\D)(\d+)$/
                   2455:     I have 2 numbers: 53147
                   2456:  0: I have 2 numbers: 53147
                   2457:  1: I have 2 numbers: 
                   2458:  2: 53147
                   2459: 
                   2460: /^\D*(?!123)/
                   2461:     ABC123
                   2462:  0: AB
                   2463:      
                   2464: /^(\D*)(?=\d)(?!123)/
                   2465:     ABC445
                   2466:  0: ABC
                   2467:  1: ABC
                   2468:     *** Failers
                   2469: No match
                   2470:     ABC123
                   2471: No match
                   2472:     
                   2473: /^[W-]46]/
                   2474:     W46]789 
                   2475:  0: W46]
                   2476:     -46]789
                   2477:  0: -46]
                   2478:     *** Failers
                   2479: No match
                   2480:     Wall
                   2481: No match
                   2482:     Zebra
                   2483: No match
                   2484:     42
                   2485: No match
                   2486:     [abcd] 
                   2487: No match
                   2488:     ]abcd[
                   2489: No match
                   2490:        
                   2491: /^[W-\]46]/
                   2492:     W46]789 
                   2493:  0: W
                   2494:     Wall
                   2495:  0: W
                   2496:     Zebra
                   2497:  0: Z
                   2498:     Xylophone  
                   2499:  0: X
                   2500:     42
                   2501:  0: 4
                   2502:     [abcd] 
                   2503:  0: [
                   2504:     ]abcd[
                   2505:  0: ]
                   2506:     \\backslash 
                   2507:  0: \
                   2508:     *** Failers
                   2509: No match
                   2510:     -46]789
                   2511: No match
                   2512:     well
                   2513: No match
                   2514:     
                   2515: /\d\d\/\d\d\/\d\d\d\d/
                   2516:     01/01/2000
                   2517:  0: 01/01/2000
                   2518: 
                   2519: /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
                   2520:   word cat dog elephant mussel cow horse canary baboon snake shark otherword
                   2521:  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
                   2522:   word cat dog elephant mussel cow horse canary baboon snake shark
                   2523: No match
                   2524: 
                   2525: /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
                   2526:   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
                   2527: No match
                   2528: 
                   2529: /^(a){0,0}/
                   2530:     bcd
                   2531:  0: 
                   2532:     abc
                   2533:  0: 
                   2534:     aab     
                   2535:  0: 
                   2536: 
                   2537: /^(a){0,1}/
                   2538:     bcd
                   2539:  0: 
                   2540:     abc
                   2541:  0: a
                   2542:  1: a
                   2543:     aab  
                   2544:  0: a
                   2545:  1: a
                   2546: 
                   2547: /^(a){0,2}/
                   2548:     bcd
                   2549:  0: 
                   2550:     abc
                   2551:  0: a
                   2552:  1: a
                   2553:     aab  
                   2554:  0: aa
                   2555:  1: a
                   2556: 
                   2557: /^(a){0,3}/
                   2558:     bcd
                   2559:  0: 
                   2560:     abc
                   2561:  0: a
                   2562:  1: a
                   2563:     aab
                   2564:  0: aa
                   2565:  1: a
                   2566:     aaa   
                   2567:  0: aaa
                   2568:  1: a
                   2569: 
                   2570: /^(a){0,}/
                   2571:     bcd
                   2572:  0: 
                   2573:     abc
                   2574:  0: a
                   2575:  1: a
                   2576:     aab
                   2577:  0: aa
                   2578:  1: a
                   2579:     aaa
                   2580:  0: aaa
                   2581:  1: a
                   2582:     aaaaaaaa    
                   2583:  0: aaaaaaaa
                   2584:  1: a
                   2585: 
                   2586: /^(a){1,1}/
                   2587:     bcd
                   2588: No match
                   2589:     abc
                   2590:  0: a
                   2591:  1: a
                   2592:     aab  
                   2593:  0: a
                   2594:  1: a
                   2595: 
                   2596: /^(a){1,2}/
                   2597:     bcd
                   2598: No match
                   2599:     abc
                   2600:  0: a
                   2601:  1: a
                   2602:     aab  
                   2603:  0: aa
                   2604:  1: a
                   2605: 
                   2606: /^(a){1,3}/
                   2607:     bcd
                   2608: No match
                   2609:     abc
                   2610:  0: a
                   2611:  1: a
                   2612:     aab
                   2613:  0: aa
                   2614:  1: a
                   2615:     aaa   
                   2616:  0: aaa
                   2617:  1: a
                   2618: 
                   2619: /^(a){1,}/
                   2620:     bcd
                   2621: No match
                   2622:     abc
                   2623:  0: a
                   2624:  1: a
                   2625:     aab
                   2626:  0: aa
                   2627:  1: a
                   2628:     aaa
                   2629:  0: aaa
                   2630:  1: a
                   2631:     aaaaaaaa    
                   2632:  0: aaaaaaaa
                   2633:  1: a
                   2634: 
                   2635: /.*\.gif/
                   2636:     borfle\nbib.gif\nno
                   2637:  0: bib.gif
                   2638: 
                   2639: /.{0,}\.gif/
                   2640:     borfle\nbib.gif\nno
                   2641:  0: bib.gif
                   2642: 
                   2643: /.*\.gif/m
                   2644:     borfle\nbib.gif\nno
                   2645:  0: bib.gif
                   2646: 
                   2647: /.*\.gif/s
                   2648:     borfle\nbib.gif\nno
                   2649:  0: borfle\x0abib.gif
                   2650: 
                   2651: /.*\.gif/ms
                   2652:     borfle\nbib.gif\nno
                   2653:  0: borfle\x0abib.gif
                   2654:     
                   2655: /.*$/
                   2656:     borfle\nbib.gif\nno
                   2657:  0: no
                   2658: 
                   2659: /.*$/m
                   2660:     borfle\nbib.gif\nno
                   2661:  0: borfle
                   2662: 
                   2663: /.*$/s
                   2664:     borfle\nbib.gif\nno
                   2665:  0: borfle\x0abib.gif\x0ano
                   2666: 
                   2667: /.*$/ms
                   2668:     borfle\nbib.gif\nno
                   2669:  0: borfle\x0abib.gif\x0ano
                   2670:     
                   2671: /.*$/
                   2672:     borfle\nbib.gif\nno\n
                   2673:  0: no
                   2674: 
                   2675: /.*$/m
                   2676:     borfle\nbib.gif\nno\n
                   2677:  0: borfle
                   2678: 
                   2679: /.*$/s
                   2680:     borfle\nbib.gif\nno\n
                   2681:  0: borfle\x0abib.gif\x0ano\x0a
                   2682: 
                   2683: /.*$/ms
                   2684:     borfle\nbib.gif\nno\n
                   2685:  0: borfle\x0abib.gif\x0ano\x0a
                   2686:     
                   2687: /(.*X|^B)/
                   2688:     abcde\n1234Xyz
                   2689:  0: 1234X
                   2690:  1: 1234X
                   2691:     BarFoo 
                   2692:  0: B
                   2693:  1: B
                   2694:     *** Failers
                   2695: No match
                   2696:     abcde\nBar  
                   2697: No match
                   2698: 
                   2699: /(.*X|^B)/m
                   2700:     abcde\n1234Xyz
                   2701:  0: 1234X
                   2702:  1: 1234X
                   2703:     BarFoo 
                   2704:  0: B
                   2705:  1: B
                   2706:     abcde\nBar  
                   2707:  0: B
                   2708:  1: B
                   2709: 
                   2710: /(.*X|^B)/s
                   2711:     abcde\n1234Xyz
                   2712:  0: abcde\x0a1234X
                   2713:  1: abcde\x0a1234X
                   2714:     BarFoo 
                   2715:  0: B
                   2716:  1: B
                   2717:     *** Failers
                   2718: No match
                   2719:     abcde\nBar  
                   2720: No match
                   2721: 
                   2722: /(.*X|^B)/ms
                   2723:     abcde\n1234Xyz
                   2724:  0: abcde\x0a1234X
                   2725:  1: abcde\x0a1234X
                   2726:     BarFoo 
                   2727:  0: B
                   2728:  1: B
                   2729:     abcde\nBar  
                   2730:  0: B
                   2731:  1: B
                   2732: 
                   2733: /(?s)(.*X|^B)/
                   2734:     abcde\n1234Xyz
                   2735:  0: abcde\x0a1234X
                   2736:  1: abcde\x0a1234X
                   2737:     BarFoo 
                   2738:  0: B
                   2739:  1: B
                   2740:     *** Failers 
                   2741: No match
                   2742:     abcde\nBar  
                   2743: No match
                   2744: 
                   2745: /(?s:.*X|^B)/
                   2746:     abcde\n1234Xyz
                   2747:  0: abcde\x0a1234X
                   2748:     BarFoo 
                   2749:  0: B
                   2750:     *** Failers 
                   2751: No match
                   2752:     abcde\nBar  
                   2753: No match
                   2754: 
                   2755: /^.*B/
                   2756:     **** Failers
                   2757: No match
                   2758:     abc\nB
                   2759: No match
                   2760:      
                   2761: /(?s)^.*B/
                   2762:     abc\nB
                   2763:  0: abc\x0aB
                   2764: 
                   2765: /(?m)^.*B/
                   2766:     abc\nB
                   2767:  0: B
                   2768:      
                   2769: /(?ms)^.*B/
                   2770:     abc\nB
                   2771:  0: abc\x0aB
                   2772: 
                   2773: /(?ms)^B/
                   2774:     abc\nB
                   2775:  0: B
                   2776: 
                   2777: /(?s)B$/
                   2778:     B\n
                   2779:  0: B
                   2780: 
                   2781: /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
                   2782:     123456654321
                   2783:  0: 123456654321
                   2784:   
                   2785: /^\d\d\d\d\d\d\d\d\d\d\d\d/
                   2786:     123456654321 
                   2787:  0: 123456654321
                   2788: 
                   2789: /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
                   2790:     123456654321
                   2791:  0: 123456654321
                   2792:   
                   2793: /^[abc]{12}/
                   2794:     abcabcabcabc
                   2795:  0: abcabcabcabc
                   2796:     
                   2797: /^[a-c]{12}/
                   2798:     abcabcabcabc
                   2799:  0: abcabcabcabc
                   2800:     
                   2801: /^(a|b|c){12}/
                   2802:     abcabcabcabc 
                   2803:  0: abcabcabcabc
                   2804:  1: c
                   2805: 
                   2806: /^[abcdefghijklmnopqrstuvwxy0123456789]/
                   2807:     n
                   2808:  0: n
                   2809:     *** Failers 
                   2810: No match
                   2811:     z 
                   2812: No match
                   2813: 
                   2814: /abcde{0,0}/
                   2815:     abcd
                   2816:  0: abcd
                   2817:     *** Failers
                   2818: No match
                   2819:     abce  
                   2820: No match
                   2821: 
                   2822: /ab[cd]{0,0}e/
                   2823:     abe
                   2824:  0: abe
                   2825:     *** Failers
                   2826: No match
                   2827:     abcde 
                   2828: No match
                   2829:     
                   2830: /ab(c){0,0}d/
                   2831:     abd
                   2832:  0: abd
                   2833:     *** Failers
                   2834: No match
                   2835:     abcd   
                   2836: No match
                   2837: 
                   2838: /a(b*)/
                   2839:     a
                   2840:  0: a
                   2841:  1: 
                   2842:     ab
                   2843:  0: ab
                   2844:  1: b
                   2845:     abbbb
                   2846:  0: abbbb
                   2847:  1: bbbb
                   2848:     *** Failers
                   2849:  0: a
                   2850:  1: 
                   2851:     bbbbb    
                   2852: No match
                   2853:     
                   2854: /ab\d{0}e/
                   2855:     abe
                   2856:  0: abe
                   2857:     *** Failers
                   2858: No match
                   2859:     ab1e   
                   2860: No match
                   2861:     
                   2862: /"([^\\"]+|\\.)*"/
                   2863:     the \"quick\" brown fox
                   2864:  0: "quick"
                   2865:  1: quick
                   2866:     \"the \\\"quick\\\" brown fox\" 
                   2867:  0: "the \"quick\" brown fox"
                   2868:  1:  brown fox
                   2869: 
                   2870: /.*?/g+
                   2871:     abc
                   2872:  0: 
                   2873:  0+ abc
                   2874:  0: a
                   2875:  0+ bc
                   2876:  0: 
                   2877:  0+ bc
                   2878:  0: b
                   2879:  0+ c
                   2880:  0: 
                   2881:  0+ c
                   2882:  0: c
                   2883:  0+ 
                   2884:  0: 
                   2885:  0+ 
                   2886:   
                   2887: /\b/g+
                   2888:     abc 
                   2889:  0: 
                   2890:  0+ abc
                   2891:  0: 
                   2892:  0+ 
                   2893: 
                   2894: /\b/+g
                   2895:     abc 
                   2896:  0: 
                   2897:  0+ abc
                   2898:  0: 
                   2899:  0+ 
                   2900: 
                   2901: //g
                   2902:     abc
                   2903:  0: 
                   2904:  0: 
                   2905:  0: 
                   2906:  0: 
                   2907: 
                   2908: /<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
                   2909:   <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:  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>
                   2911:  1:  BGCOLOR='#DBE9E9'
                   2912:  2:  align=left valign=top
                   2913:  3: 43.
                   2914:  4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)
                   2915:  5: 
                   2916:  6: 
                   2917:  7: <unset>
                   2918:  8:  align=left valign=top
                   2919:  9: Lega lstaff.com
                   2920: 10:  align=left valign=top
                   2921: 11: CA - Statewide
                   2922: 
                   2923: /a[^a]b/
                   2924:     acb
                   2925:  0: acb
                   2926:     a\nb
                   2927:  0: a\x0ab
                   2928:     
                   2929: /a.b/
                   2930:     acb
                   2931:  0: acb
                   2932:     *** Failers 
                   2933: No match
                   2934:     a\nb   
                   2935: No match
                   2936:     
                   2937: /a[^a]b/s
                   2938:     acb
                   2939:  0: acb
                   2940:     a\nb  
                   2941:  0: a\x0ab
                   2942:     
                   2943: /a.b/s
                   2944:     acb
                   2945:  0: acb
                   2946:     a\nb  
                   2947:  0: a\x0ab
                   2948: 
                   2949: /^(b+?|a){1,2}?c/
                   2950:     bac
                   2951:  0: bac
                   2952:  1: a
                   2953:     bbac
                   2954:  0: bbac
                   2955:  1: a
                   2956:     bbbac
                   2957:  0: bbbac
                   2958:  1: a
                   2959:     bbbbac
                   2960:  0: bbbbac
                   2961:  1: a
                   2962:     bbbbbac 
                   2963:  0: bbbbbac
                   2964:  1: a
                   2965: 
                   2966: /^(b+|a){1,2}?c/
                   2967:     bac
                   2968:  0: bac
                   2969:  1: a
                   2970:     bbac
                   2971:  0: bbac
                   2972:  1: a
                   2973:     bbbac
                   2974:  0: bbbac
                   2975:  1: a
                   2976:     bbbbac
                   2977:  0: bbbbac
                   2978:  1: a
                   2979:     bbbbbac 
                   2980:  0: bbbbbac
                   2981:  1: a
                   2982:     
                   2983: /(?!\A)x/m
                   2984:     x\nb\n
                   2985: No match
                   2986:     a\bx\n  
                   2987:  0: x
                   2988:     
                   2989: /\x0{ab}/
                   2990:     \0{ab} 
                   2991:  0: \x00{ab}
                   2992: 
                   2993: /(A|B)*?CD/
                   2994:     CD 
                   2995:  0: CD
                   2996:     
                   2997: /(A|B)*CD/
                   2998:     CD 
                   2999:  0: CD
                   3000: 
                   3001: /(AB)*?\1/
                   3002:     ABABAB
                   3003:  0: ABAB
                   3004:  1: AB
                   3005: 
                   3006: /(AB)*\1/
                   3007:     ABABAB
                   3008:  0: ABABAB
                   3009:  1: AB
                   3010:     
                   3011: /(?<!bar)foo/
                   3012:     foo
                   3013:  0: foo
                   3014:     catfood
                   3015:  0: foo
                   3016:     arfootle
                   3017:  0: foo
                   3018:     rfoosh
                   3019:  0: foo
                   3020:     *** Failers
                   3021: No match
                   3022:     barfoo
                   3023: No match
                   3024:     towbarfoo
                   3025: No match
                   3026: 
                   3027: /\w{3}(?<!bar)foo/
                   3028:     catfood
                   3029:  0: catfoo
                   3030:     *** Failers
                   3031: No match
                   3032:     foo
                   3033: No match
                   3034:     barfoo
                   3035: No match
                   3036:     towbarfoo
                   3037: No match
                   3038: 
                   3039: /(?<=(foo)a)bar/
                   3040:     fooabar
                   3041:  0: bar
                   3042:  1: foo
                   3043:     *** Failers
                   3044: No match
                   3045:     bar
                   3046: No match
                   3047:     foobbar
                   3048: No match
                   3049:       
                   3050: /\Aabc\z/m
                   3051:     abc
                   3052:  0: abc
                   3053:     *** Failers
                   3054: No match
                   3055:     abc\n   
                   3056: No match
                   3057:     qqq\nabc
                   3058: No match
                   3059:     abc\nzzz
                   3060: No match
                   3061:     qqq\nabc\nzzz
                   3062: No match
                   3063: 
                   3064: "(?>.*/)foo"
                   3065:     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
                   3066: No match
                   3067: 
                   3068: "(?>.*/)foo"
                   3069:     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
                   3070:  0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
                   3071: 
                   3072: /(?>(\.\d\d[1-9]?))\d+/
                   3073:     1.230003938
                   3074:  0: .230003938
                   3075:  1: .23
                   3076:     1.875000282
                   3077:  0: .875000282
                   3078:  1: .875
                   3079:     *** Failers 
                   3080: No match
                   3081:     1.235 
                   3082: No match
                   3083: 
                   3084: /^((?>\w+)|(?>\s+))*$/
                   3085:     now is the time for all good men to come to the aid of the party
                   3086:  0: now is the time for all good men to come to the aid of the party
                   3087:  1: party
                   3088:     *** Failers
                   3089: No match
                   3090:     this is not a line with only words and spaces!
                   3091: No match
                   3092:     
                   3093: /(\d+)(\w)/
                   3094:     12345a
                   3095:  0: 12345a
                   3096:  1: 12345
                   3097:  2: a
                   3098:     12345+ 
                   3099:  0: 12345
                   3100:  1: 1234
                   3101:  2: 5
                   3102: 
                   3103: /((?>\d+))(\w)/
                   3104:     12345a
                   3105:  0: 12345a
                   3106:  1: 12345
                   3107:  2: a
                   3108:     *** Failers
                   3109: No match
                   3110:     12345+ 
                   3111: No match
                   3112: 
                   3113: /(?>a+)b/
                   3114:     aaab
                   3115:  0: aaab
                   3116: 
                   3117: /((?>a+)b)/
                   3118:     aaab
                   3119:  0: aaab
                   3120:  1: aaab
                   3121: 
                   3122: /(?>(a+))b/
                   3123:     aaab
                   3124:  0: aaab
                   3125:  1: aaa
                   3126: 
                   3127: /(?>b)+/
                   3128:     aaabbbccc
                   3129:  0: bbb
                   3130: 
                   3131: /(?>a+|b+|c+)*c/
                   3132:     aaabbbbccccd
                   3133:  0: aaabbbbc
                   3134: 
                   3135: /((?>[^()]+)|\([^()]*\))+/
                   3136:     ((abc(ade)ufh()()x
                   3137:  0: abc(ade)ufh()()x
                   3138:  1: x
                   3139:     
                   3140: /\(((?>[^()]+)|\([^()]+\))+\)/ 
                   3141:     (abc)
                   3142:  0: (abc)
                   3143:  1: abc
                   3144:     (abc(def)xyz)
                   3145:  0: (abc(def)xyz)
                   3146:  1: xyz
                   3147:     *** Failers
                   3148: No match
                   3149:     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
                   3150: No match
                   3151: 
                   3152: /a(?-i)b/i
                   3153:     ab
                   3154:  0: ab
                   3155:     Ab
                   3156:  0: Ab
                   3157:     *** Failers 
                   3158: No match
                   3159:     aB
                   3160: No match
                   3161:     AB
                   3162: No match
                   3163:         
                   3164: /(a (?x)b c)d e/
                   3165:     a bcd e
                   3166:  0: a bcd e
                   3167:  1: a bc
                   3168:     *** Failers
                   3169: No match
                   3170:     a b cd e
                   3171: No match
                   3172:     abcd e   
                   3173: No match
                   3174:     a bcde 
                   3175: No match
                   3176:  
                   3177: /(a b(?x)c d (?-x)e f)/
                   3178:     a bcde f
                   3179:  0: a bcde f
                   3180:  1: a bcde f
                   3181:     *** Failers
                   3182: No match
                   3183:     abcdef  
                   3184: No match
                   3185: 
                   3186: /(a(?i)b)c/
                   3187:     abc
                   3188:  0: abc
                   3189:  1: ab
                   3190:     aBc
                   3191:  0: aBc
                   3192:  1: aB
                   3193:     *** Failers
                   3194: No match
                   3195:     abC
                   3196: No match
                   3197:     aBC  
                   3198: No match
                   3199:     Abc
                   3200: No match
                   3201:     ABc
                   3202: No match
                   3203:     ABC
                   3204: No match
                   3205:     AbC
                   3206: No match
                   3207:     
                   3208: /a(?i:b)c/
                   3209:     abc
                   3210:  0: abc
                   3211:     aBc
                   3212:  0: aBc
                   3213:     *** Failers 
                   3214: No match
                   3215:     ABC
                   3216: No match
                   3217:     abC
                   3218: No match
                   3219:     aBC
                   3220: No match
                   3221:     
                   3222: /a(?i:b)*c/
                   3223:     aBc
                   3224:  0: aBc
                   3225:     aBBc
                   3226:  0: aBBc
                   3227:     *** Failers 
                   3228: No match
                   3229:     aBC
                   3230: No match
                   3231:     aBBC
                   3232: No match
                   3233:     
                   3234: /a(?=b(?i)c)\w\wd/
                   3235:     abcd
                   3236:  0: abcd
                   3237:     abCd
                   3238:  0: abCd
                   3239:     *** Failers
                   3240: No match
                   3241:     aBCd
                   3242: No match
                   3243:     abcD     
                   3244: No match
                   3245:     
                   3246: /(?s-i:more.*than).*million/i
                   3247:     more than million
                   3248:  0: more than million
                   3249:     more than MILLION
                   3250:  0: more than MILLION
                   3251:     more \n than Million 
                   3252:  0: more \x0a than Million
                   3253:     *** Failers
                   3254: No match
                   3255:     MORE THAN MILLION    
                   3256: No match
                   3257:     more \n than \n million 
                   3258: No match
                   3259: 
                   3260: /(?:(?s-i)more.*than).*million/i
                   3261:     more than million
                   3262:  0: more than million
                   3263:     more than MILLION
                   3264:  0: more than MILLION
                   3265:     more \n than Million 
                   3266:  0: more \x0a than Million
                   3267:     *** Failers
                   3268: No match
                   3269:     MORE THAN MILLION    
                   3270: No match
                   3271:     more \n than \n million 
                   3272: No match
                   3273:     
                   3274: /(?>a(?i)b+)+c/ 
                   3275:     abc
                   3276:  0: abc
                   3277:     aBbc
                   3278:  0: aBbc
                   3279:     aBBc 
                   3280:  0: aBBc
                   3281:     *** Failers
                   3282: No match
                   3283:     Abc
                   3284: No match
                   3285:     abAb    
                   3286: No match
                   3287:     abbC 
                   3288: No match
                   3289:     
                   3290: /(?=a(?i)b)\w\wc/
                   3291:     abc
                   3292:  0: abc
                   3293:     aBc
                   3294:  0: aBc
                   3295:     *** Failers
                   3296: No match
                   3297:     Ab 
                   3298: No match
                   3299:     abC
                   3300: No match
                   3301:     aBC     
                   3302: No match
                   3303:     
                   3304: /(?<=a(?i)b)(\w\w)c/
                   3305:     abxxc
                   3306:  0: xxc
                   3307:  1: xx
                   3308:     aBxxc
                   3309:  0: xxc
                   3310:  1: xx
                   3311:     *** Failers
                   3312: No match
                   3313:     Abxxc
                   3314: No match
                   3315:     ABxxc
                   3316: No match
                   3317:     abxxC      
                   3318: No match
                   3319: 
                   3320: /(?:(a)|b)(?(1)A|B)/
                   3321:     aA
                   3322:  0: aA
                   3323:  1: a
                   3324:     bB
                   3325:  0: bB
                   3326:     *** Failers
                   3327: No match
                   3328:     aB
                   3329: No match
                   3330:     bA    
                   3331: No match
                   3332: 
                   3333: /^(a)?(?(1)a|b)+$/
                   3334:     aa
                   3335:  0: aa
                   3336:  1: a
                   3337:     b
                   3338:  0: b
                   3339:     bb  
                   3340:  0: bb
                   3341:     *** Failers
                   3342: No match
                   3343:     ab   
                   3344: No match
                   3345: 
                   3346: /^(?(?=abc)\w{3}:|\d\d)$/
                   3347:     abc:
                   3348:  0: abc:
                   3349:     12
                   3350:  0: 12
                   3351:     *** Failers
                   3352: No match
                   3353:     123
                   3354: No match
                   3355:     xyz    
                   3356: No match
                   3357: 
                   3358: /^(?(?!abc)\d\d|\w{3}:)$/
                   3359:     abc:
                   3360:  0: abc:
                   3361:     12
                   3362:  0: 12
                   3363:     *** Failers
                   3364: No match
                   3365:     123
                   3366: No match
                   3367:     xyz    
                   3368: No match
                   3369:     
                   3370: /(?(?<=foo)bar|cat)/
                   3371:     foobar
                   3372:  0: bar
                   3373:     cat
                   3374:  0: cat
                   3375:     fcat
                   3376:  0: cat
                   3377:     focat   
                   3378:  0: cat
                   3379:     *** Failers
                   3380: No match
                   3381:     foocat  
                   3382: No match
                   3383: 
                   3384: /(?(?<!foo)cat|bar)/
                   3385:     foobar
                   3386:  0: bar
                   3387:     cat
                   3388:  0: cat
                   3389:     fcat
                   3390:  0: cat
                   3391:     focat   
                   3392:  0: cat
                   3393:     *** Failers
                   3394: No match
                   3395:     foocat  
                   3396: No match
                   3397: 
                   3398: /( \( )? [^()]+ (?(1) \) |) /x
                   3399:     abcd
                   3400:  0: abcd
                   3401:     (abcd)
                   3402:  0: (abcd)
                   3403:  1: (
                   3404:     the quick (abcd) fox
                   3405:  0: the quick 
                   3406:     (abcd   
                   3407:  0: abcd
                   3408: 
                   3409: /( \( )? [^()]+ (?(1) \) ) /x
                   3410:     abcd
                   3411:  0: abcd
                   3412:     (abcd)
                   3413:  0: (abcd)
                   3414:  1: (
                   3415:     the quick (abcd) fox
                   3416:  0: the quick 
                   3417:     (abcd   
                   3418:  0: abcd
                   3419: 
                   3420: /^(?(2)a|(1)(2))+$/
                   3421:     12
                   3422:  0: 12
                   3423:  1: 1
                   3424:  2: 2
                   3425:     12a
                   3426:  0: 12a
                   3427:  1: 1
                   3428:  2: 2
                   3429:     12aa
                   3430:  0: 12aa
                   3431:  1: 1
                   3432:  2: 2
                   3433:     *** Failers
                   3434: No match
                   3435:     1234    
                   3436: No match
                   3437: 
                   3438: /((?i)blah)\s+\1/
                   3439:     blah blah
                   3440:  0: blah blah
                   3441:  1: blah
                   3442:     BLAH BLAH
                   3443:  0: BLAH BLAH
                   3444:  1: BLAH
                   3445:     Blah Blah
                   3446:  0: Blah Blah
                   3447:  1: Blah
                   3448:     blaH blaH
                   3449:  0: blaH blaH
                   3450:  1: blaH
                   3451:     *** Failers
                   3452: No match
                   3453:     blah BLAH
                   3454: No match
                   3455:     Blah blah      
                   3456: No match
                   3457:     blaH blah 
                   3458: No match
                   3459: 
                   3460: /((?i)blah)\s+(?i:\1)/
                   3461:     blah blah
                   3462:  0: blah blah
                   3463:  1: blah
                   3464:     BLAH BLAH
                   3465:  0: BLAH BLAH
                   3466:  1: BLAH
                   3467:     Blah Blah
                   3468:  0: Blah Blah
                   3469:  1: Blah
                   3470:     blaH blaH
                   3471:  0: blaH blaH
                   3472:  1: blaH
                   3473:     blah BLAH
                   3474:  0: blah BLAH
                   3475:  1: blah
                   3476:     Blah blah      
                   3477:  0: Blah blah
                   3478:  1: Blah
                   3479:     blaH blah 
                   3480:  0: blaH blah
                   3481:  1: blaH
                   3482: 
                   3483: /(?>a*)*/
                   3484:     a
                   3485:  0: a
                   3486:     aa
                   3487:  0: aa
                   3488:     aaaa
                   3489:  0: aaaa
                   3490:     
                   3491: /(abc|)+/
                   3492:     abc
                   3493:  0: abc
                   3494:  1: 
                   3495:     abcabc
                   3496:  0: abcabc
                   3497:  1: 
                   3498:     abcabcabc
                   3499:  0: abcabcabc
                   3500:  1: 
                   3501:     xyz      
                   3502:  0: 
                   3503:  1: 
                   3504: 
                   3505: /([a]*)*/
                   3506:     a
                   3507:  0: a
                   3508:  1: 
                   3509:     aaaaa 
                   3510:  0: aaaaa
                   3511:  1: 
                   3512:  
                   3513: /([ab]*)*/
                   3514:     a
                   3515:  0: a
                   3516:  1: 
                   3517:     b
                   3518:  0: b
                   3519:  1: 
                   3520:     ababab
                   3521:  0: ababab
                   3522:  1: 
                   3523:     aaaabcde
                   3524:  0: aaaab
                   3525:  1: 
                   3526:     bbbb    
                   3527:  0: bbbb
                   3528:  1: 
                   3529:  
                   3530: /([^a]*)*/
                   3531:     b
                   3532:  0: b
                   3533:  1: 
                   3534:     bbbb
                   3535:  0: bbbb
                   3536:  1: 
                   3537:     aaa   
                   3538:  0: 
                   3539:  1: 
                   3540:  
                   3541: /([^ab]*)*/
                   3542:     cccc
                   3543:  0: cccc
                   3544:  1: 
                   3545:     abab  
                   3546:  0: 
                   3547:  1: 
                   3548:  
                   3549: /([a]*?)*/
                   3550:     a
                   3551:  0: 
                   3552:  1: 
                   3553:     aaaa 
                   3554:  0: 
                   3555:  1: 
                   3556:  
                   3557: /([ab]*?)*/
                   3558:     a
                   3559:  0: 
                   3560:  1: 
                   3561:     b
                   3562:  0: 
                   3563:  1: 
                   3564:     abab
                   3565:  0: 
                   3566:  1: 
                   3567:     baba   
                   3568:  0: 
                   3569:  1: 
                   3570:  
                   3571: /([^a]*?)*/
                   3572:     b
                   3573:  0: 
                   3574:  1: 
                   3575:     bbbb
                   3576:  0: 
                   3577:  1: 
                   3578:     aaa   
                   3579:  0: 
                   3580:  1: 
                   3581:  
                   3582: /([^ab]*?)*/
                   3583:     c
                   3584:  0: 
                   3585:  1: 
                   3586:     cccc
                   3587:  0: 
                   3588:  1: 
                   3589:     baba   
                   3590:  0: 
                   3591:  1: 
                   3592:  
                   3593: /(?>a*)*/
                   3594:     a
                   3595:  0: a
                   3596:     aaabcde 
                   3597:  0: aaa
                   3598:  
                   3599: /((?>a*))*/
                   3600:     aaaaa
                   3601:  0: aaaaa
                   3602:  1: 
                   3603:     aabbaa 
                   3604:  0: aa
                   3605:  1: 
                   3606:  
                   3607: /((?>a*?))*/
                   3608:     aaaaa
                   3609:  0: 
                   3610:  1: 
                   3611:     aabbaa 
                   3612:  0: 
                   3613:  1: 
                   3614: 
                   3615: /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
                   3616:     12-sep-98
                   3617:  0: 12-sep-98
                   3618:     12-09-98
                   3619:  0: 12-09-98
                   3620:     *** Failers
                   3621: No match
                   3622:     sep-12-98
                   3623: No match
                   3624:         
                   3625: /(?<=(foo))bar\1/
                   3626:     foobarfoo
                   3627:  0: barfoo
                   3628:  1: foo
                   3629:     foobarfootling 
                   3630:  0: barfoo
                   3631:  1: foo
                   3632:     *** Failers
                   3633: No match
                   3634:     foobar
                   3635: No match
                   3636:     barfoo   
                   3637: No match
                   3638: 
                   3639: /(?i:saturday|sunday)/
                   3640:     saturday
                   3641:  0: saturday
                   3642:     sunday
                   3643:  0: sunday
                   3644:     Saturday
                   3645:  0: Saturday
                   3646:     Sunday
                   3647:  0: Sunday
                   3648:     SATURDAY
                   3649:  0: SATURDAY
                   3650:     SUNDAY
                   3651:  0: SUNDAY
                   3652:     SunDay
                   3653:  0: SunDay
                   3654:     
                   3655: /(a(?i)bc|BB)x/
                   3656:     abcx
                   3657:  0: abcx
                   3658:  1: abc
                   3659:     aBCx
                   3660:  0: aBCx
                   3661:  1: aBC
                   3662:     bbx
                   3663:  0: bbx
                   3664:  1: bb
                   3665:     BBx
                   3666:  0: BBx
                   3667:  1: BB
                   3668:     *** Failers
                   3669: No match
                   3670:     abcX
                   3671: No match
                   3672:     aBCX
                   3673: No match
                   3674:     bbX
                   3675: No match
                   3676:     BBX               
                   3677: No match
                   3678: 
                   3679: /^([ab](?i)[cd]|[ef])/
                   3680:     ac
                   3681:  0: ac
                   3682:  1: ac
                   3683:     aC
                   3684:  0: aC
                   3685:  1: aC
                   3686:     bD
                   3687:  0: bD
                   3688:  1: bD
                   3689:     elephant
                   3690:  0: e
                   3691:  1: e
                   3692:     Europe 
                   3693:  0: E
                   3694:  1: E
                   3695:     frog
                   3696:  0: f
                   3697:  1: f
                   3698:     France
                   3699:  0: F
                   3700:  1: F
                   3701:     *** Failers
                   3702: No match
                   3703:     Africa     
                   3704: No match
                   3705: 
                   3706: /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
                   3707:     ab
                   3708:  0: ab
                   3709:  1: ab
                   3710:     aBd
                   3711:  0: aBd
                   3712:  1: aBd
                   3713:     xy
                   3714:  0: xy
                   3715:  1: xy
                   3716:     xY
                   3717:  0: xY
                   3718:  1: xY
                   3719:     zebra
                   3720:  0: z
                   3721:  1: z
                   3722:     Zambesi
                   3723:  0: Z
                   3724:  1: Z
                   3725:     *** Failers
                   3726: No match
                   3727:     aCD  
                   3728: No match
                   3729:     XY  
                   3730: No match
                   3731: 
                   3732: /(?<=foo\n)^bar/m
                   3733:     foo\nbar
                   3734:  0: bar
                   3735:     *** Failers
                   3736: No match
                   3737:     bar
                   3738: No match
                   3739:     baz\nbar   
                   3740: No match
                   3741: 
                   3742: /(?<=(?<!foo)bar)baz/
                   3743:     barbaz
                   3744:  0: baz
                   3745:     barbarbaz 
                   3746:  0: baz
                   3747:     koobarbaz 
                   3748:  0: baz
                   3749:     *** Failers
                   3750: No match
                   3751:     baz
                   3752: No match
                   3753:     foobarbaz 
                   3754: No match
                   3755: 
                   3756: /The cases of aaaa and aaaaaa are missed out below because Perl does things/
                   3757: /differently. We know that odd, and maybe incorrect, things happen with/
                   3758: No match
                   3759: /recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./
                   3760: No match
                   3761: 
                   3762: /^(a\1?){4}$/
                   3763:     a
                   3764: No match
                   3765:     aa
                   3766: No match
                   3767:     aaa
                   3768: No match
                   3769:     aaaaa
                   3770:  0: aaaaa
                   3771:  1: a
                   3772:     aaaaaaa
                   3773:  0: aaaaaaa
                   3774:  1: a
                   3775:     aaaaaaaa
                   3776: No match
                   3777:     aaaaaaaaa
                   3778: No match
                   3779:     aaaaaaaaaa
                   3780:  0: aaaaaaaaaa
                   3781:  1: aaaa
                   3782:     aaaaaaaaaaa
                   3783: No match
                   3784:     aaaaaaaaaaaa
                   3785: No match
                   3786:     aaaaaaaaaaaaa
                   3787: No match
                   3788:     aaaaaaaaaaaaaa
                   3789: No match
                   3790:     aaaaaaaaaaaaaaa
                   3791: No match
                   3792:     aaaaaaaaaaaaaaaa               
                   3793: No match
                   3794: 
                   3795: /^(a\1?)(a\1?)(a\2?)(a\3?)$/
                   3796:     a
                   3797: No match
                   3798:     aa
                   3799: No match
                   3800:     aaa
                   3801: No match
                   3802:     aaaa
                   3803:  0: aaaa
                   3804:  1: a
                   3805:  2: a
                   3806:  3: a
                   3807:  4: a
                   3808:     aaaaa
                   3809:  0: aaaaa
                   3810:  1: a
                   3811:  2: aa
                   3812:  3: a
                   3813:  4: a
                   3814:     aaaaaa
                   3815:  0: aaaaaa
                   3816:  1: a
                   3817:  2: aa
                   3818:  3: a
                   3819:  4: aa
                   3820:     aaaaaaa
                   3821:  0: aaaaaaa
                   3822:  1: a
                   3823:  2: aa
                   3824:  3: aaa
                   3825:  4: a
                   3826:     aaaaaaaa
                   3827: No match
                   3828:     aaaaaaaaa
                   3829: No match
                   3830:     aaaaaaaaaa
                   3831:  0: aaaaaaaaaa
                   3832:  1: a
                   3833:  2: aa
                   3834:  3: aaa
                   3835:  4: aaaa
                   3836:     aaaaaaaaaaa
                   3837: No match
                   3838:     aaaaaaaaaaaa
                   3839: No match
                   3840:     aaaaaaaaaaaaa
                   3841: No match
                   3842:     aaaaaaaaaaaaaa
                   3843: No match
                   3844:     aaaaaaaaaaaaaaa
                   3845: No match
                   3846:     aaaaaaaaaaaaaaaa               
                   3847: No match
                   3848: 
                   3849: /The following tests are taken from the Perl 5.005 test suite; some of them/
                   3850: /are compatible with 5.004, but I'd rather not have to sort them out./
                   3851: No match
                   3852: 
                   3853: /abc/
                   3854:     abc
                   3855:  0: abc
                   3856:     xabcy
                   3857:  0: abc
                   3858:     ababc
                   3859:  0: abc
                   3860:     *** Failers
                   3861: No match
                   3862:     xbc
                   3863: No match
                   3864:     axc
                   3865: No match
                   3866:     abx
                   3867: No match
                   3868: 
                   3869: /ab*c/
                   3870:     abc
                   3871:  0: abc
                   3872: 
                   3873: /ab*bc/
                   3874:     abc
                   3875:  0: abc
                   3876:     abbc
                   3877:  0: abbc
                   3878:     abbbbc
                   3879:  0: abbbbc
                   3880: 
                   3881: /.{1}/
                   3882:     abbbbc
                   3883:  0: a
                   3884: 
                   3885: /.{3,4}/
                   3886:     abbbbc
                   3887:  0: abbb
                   3888: 
                   3889: /ab{0,}bc/
                   3890:     abbbbc
                   3891:  0: abbbbc
                   3892: 
                   3893: /ab+bc/
                   3894:     abbc
                   3895:  0: abbc
                   3896:     *** Failers
                   3897: No match
                   3898:     abc
                   3899: No match
                   3900:     abq
                   3901: No match
                   3902: 
                   3903: /ab{1,}bc/
                   3904: 
                   3905: /ab+bc/
                   3906:     abbbbc
                   3907:  0: abbbbc
                   3908: 
                   3909: /ab{1,}bc/
                   3910:     abbbbc
                   3911:  0: abbbbc
                   3912: 
                   3913: /ab{1,3}bc/
                   3914:     abbbbc
                   3915:  0: abbbbc
                   3916: 
                   3917: /ab{3,4}bc/
                   3918:     abbbbc
                   3919:  0: abbbbc
                   3920: 
                   3921: /ab{4,5}bc/
                   3922:     *** Failers
                   3923: No match
                   3924:     abq
                   3925: No match
                   3926:     abbbbc
                   3927: No match
                   3928: 
                   3929: /ab?bc/
                   3930:     abbc
                   3931:  0: abbc
                   3932:     abc
                   3933:  0: abc
                   3934: 
                   3935: /ab{0,1}bc/
                   3936:     abc
                   3937:  0: abc
                   3938: 
                   3939: /ab?bc/
                   3940: 
                   3941: /ab?c/
                   3942:     abc
                   3943:  0: abc
                   3944: 
                   3945: /ab{0,1}c/
                   3946:     abc
                   3947:  0: abc
                   3948: 
                   3949: /^abc$/
                   3950:     abc
                   3951:  0: abc
                   3952:     *** Failers
                   3953: No match
                   3954:     abbbbc
                   3955: No match
                   3956:     abcc
                   3957: No match
                   3958: 
                   3959: /^abc/
                   3960:     abcc
                   3961:  0: abc
                   3962: 
                   3963: /^abc$/
                   3964: 
                   3965: /abc$/
                   3966:     aabc
                   3967:  0: abc
                   3968:     *** Failers
                   3969: No match
                   3970:     aabc
                   3971:  0: abc
                   3972:     aabcd
                   3973: No match
                   3974: 
                   3975: /^/
                   3976:     abc
                   3977:  0: 
                   3978: 
                   3979: /$/
                   3980:     abc
                   3981:  0: 
                   3982: 
                   3983: /a.c/
                   3984:     abc
                   3985:  0: abc
                   3986:     axc
                   3987:  0: axc
                   3988: 
                   3989: /a.*c/
                   3990:     axyzc
                   3991:  0: axyzc
                   3992: 
                   3993: /a[bc]d/
                   3994:     abd
                   3995:  0: abd
                   3996:     *** Failers
                   3997: No match
                   3998:     axyzd
                   3999: No match
                   4000:     abc
                   4001: No match
                   4002: 
                   4003: /a[b-d]e/
                   4004:     ace
                   4005:  0: ace
                   4006: 
                   4007: /a[b-d]/
                   4008:     aac
                   4009:  0: ac
                   4010: 
                   4011: /a[-b]/
                   4012:     a-
                   4013:  0: a-
                   4014: 
                   4015: /a[b-]/
                   4016:     a-
                   4017:  0: a-
                   4018: 
                   4019: /a]/
                   4020:     a]
                   4021:  0: a]
                   4022: 
                   4023: /a[]]b/
                   4024:     a]b
                   4025:  0: a]b
                   4026: 
                   4027: /a[^bc]d/
                   4028:     aed
                   4029:  0: aed
                   4030:     *** Failers
                   4031: No match
                   4032:     abd
                   4033: No match
                   4034:     abd
                   4035: No match
                   4036: 
                   4037: /a[^-b]c/
                   4038:     adc
                   4039:  0: adc
                   4040: 
                   4041: /a[^]b]c/
                   4042:     adc
                   4043:  0: adc
                   4044:     *** Failers
                   4045: No match
                   4046:     a-c
                   4047:  0: a-c
                   4048:     a]c
                   4049: No match
                   4050: 
                   4051: /\ba\b/
                   4052:     a-
                   4053:  0: a
                   4054:     -a
                   4055:  0: a
                   4056:     -a-
                   4057:  0: a
                   4058: 
                   4059: /\by\b/
                   4060:     *** Failers
                   4061: No match
                   4062:     xy
                   4063: No match
                   4064:     yz
                   4065: No match
                   4066:     xyz
                   4067: No match
                   4068: 
                   4069: /\Ba\B/
                   4070:     *** Failers
                   4071:  0: a
                   4072:     a-
                   4073: No match
                   4074:     -a
                   4075: No match
                   4076:     -a-
                   4077: No match
                   4078: 
                   4079: /\By\b/
                   4080:     xy
                   4081:  0: y
                   4082: 
                   4083: /\by\B/
                   4084:     yz
                   4085:  0: y
                   4086: 
                   4087: /\By\B/
                   4088:     xyz
                   4089:  0: y
                   4090: 
                   4091: /\w/
                   4092:     a
                   4093:  0: a
                   4094: 
                   4095: /\W/
                   4096:     -
                   4097:  0: -
                   4098:     *** Failers
                   4099:  0: *
                   4100:     -
                   4101:  0: -
                   4102:     a
                   4103: No match
                   4104: 
                   4105: /a\sb/
                   4106:     a b
                   4107:  0: a b
                   4108: 
                   4109: /a\Sb/
                   4110:     a-b
                   4111:  0: a-b
                   4112:     *** Failers
                   4113: No match
                   4114:     a-b
                   4115:  0: a-b
                   4116:     a b
                   4117: No match
                   4118: 
                   4119: /\d/
                   4120:     1
                   4121:  0: 1
                   4122: 
                   4123: /\D/
                   4124:     -
                   4125:  0: -
                   4126:     *** Failers
                   4127:  0: *
                   4128:     -
                   4129:  0: -
                   4130:     1
                   4131: No match
                   4132: 
                   4133: /[\w]/
                   4134:     a
                   4135:  0: a
                   4136: 
                   4137: /[\W]/
                   4138:     -
                   4139:  0: -
                   4140:     *** Failers
                   4141:  0: *
                   4142:     -
                   4143:  0: -
                   4144:     a
                   4145: No match
                   4146: 
                   4147: /a[\s]b/
                   4148:     a b
                   4149:  0: a b
                   4150: 
                   4151: /a[\S]b/
                   4152:     a-b
                   4153:  0: a-b
                   4154:     *** Failers
                   4155: No match
                   4156:     a-b
                   4157:  0: a-b
                   4158:     a b
                   4159: No match
                   4160: 
                   4161: /[\d]/
                   4162:     1
                   4163:  0: 1
                   4164: 
                   4165: /[\D]/
                   4166:     -
                   4167:  0: -
                   4168:     *** Failers
                   4169:  0: *
                   4170:     -
                   4171:  0: -
                   4172:     1
                   4173: No match
                   4174: 
                   4175: /ab|cd/
                   4176:     abc
                   4177:  0: ab
                   4178:     abcd
                   4179:  0: ab
                   4180: 
                   4181: /()ef/
                   4182:     def
                   4183:  0: ef
                   4184:  1: 
                   4185: 
                   4186: /$b/
                   4187: 
                   4188: /a\(b/
                   4189:     a(b
                   4190:  0: a(b
                   4191: 
                   4192: /a\(*b/
                   4193:     ab
                   4194:  0: ab
                   4195:     a((b
                   4196:  0: a((b
                   4197: 
                   4198: /a\\b/
                   4199:     a\b
                   4200: No match
                   4201: 
                   4202: /((a))/
                   4203:     abc
                   4204:  0: a
                   4205:  1: a
                   4206:  2: a
                   4207: 
                   4208: /(a)b(c)/
                   4209:     abc
                   4210:  0: abc
                   4211:  1: a
                   4212:  2: c
                   4213: 
                   4214: /a+b+c/
                   4215:     aabbabc
                   4216:  0: abc
                   4217: 
                   4218: /a{1,}b{1,}c/
                   4219:     aabbabc
                   4220:  0: abc
                   4221: 
                   4222: /a.+?c/
                   4223:     abcabc
                   4224:  0: abc
                   4225: 
                   4226: /(a+|b)*/
                   4227:     ab
                   4228:  0: ab
                   4229:  1: b
                   4230: 
                   4231: /(a+|b){0,}/
                   4232:     ab
                   4233:  0: ab
                   4234:  1: b
                   4235: 
                   4236: /(a+|b)+/
                   4237:     ab
                   4238:  0: ab
                   4239:  1: b
                   4240: 
                   4241: /(a+|b){1,}/
                   4242:     ab
                   4243:  0: ab
                   4244:  1: b
                   4245: 
                   4246: /(a+|b)?/
                   4247:     ab
                   4248:  0: a
                   4249:  1: a
                   4250: 
                   4251: /(a+|b){0,1}/
                   4252:     ab
                   4253:  0: a
                   4254:  1: a
                   4255: 
                   4256: /[^ab]*/
                   4257:     cde
                   4258:  0: cde
                   4259: 
                   4260: /abc/
                   4261:     *** Failers
                   4262: No match
                   4263:     b
                   4264: No match
                   4265:     
                   4266: 
                   4267: /a*/
                   4268:     
                   4269: 
                   4270: /([abc])*d/
                   4271:     abbbcd
                   4272:  0: abbbcd
                   4273:  1: c
                   4274: 
                   4275: /([abc])*bcd/
                   4276:     abcd
                   4277:  0: abcd
                   4278:  1: a
                   4279: 
                   4280: /a|b|c|d|e/
                   4281:     e
                   4282:  0: e
                   4283: 
                   4284: /(a|b|c|d|e)f/
                   4285:     ef
                   4286:  0: ef
                   4287:  1: e
                   4288: 
                   4289: /abcd*efg/
                   4290:     abcdefg
                   4291:  0: abcdefg
                   4292: 
                   4293: /ab*/
                   4294:     xabyabbbz
                   4295:  0: ab
                   4296:     xayabbbz
                   4297:  0: a
                   4298: 
                   4299: /(ab|cd)e/
                   4300:     abcde
                   4301:  0: cde
                   4302:  1: cd
                   4303: 
                   4304: /[abhgefdc]ij/
                   4305:     hij
                   4306:  0: hij
                   4307: 
                   4308: /^(ab|cd)e/
                   4309: 
                   4310: /(abc|)ef/
                   4311:     abcdef
                   4312:  0: ef
                   4313:  1: 
                   4314: 
                   4315: /(a|b)c*d/
                   4316:     abcd
                   4317:  0: bcd
                   4318:  1: b
                   4319: 
                   4320: /(ab|ab*)bc/
                   4321:     abc
                   4322:  0: abc
                   4323:  1: a
                   4324: 
                   4325: /a([bc]*)c*/
                   4326:     abc
                   4327:  0: abc
                   4328:  1: bc
                   4329: 
                   4330: /a([bc]*)(c*d)/
                   4331:     abcd
                   4332:  0: abcd
                   4333:  1: bc
                   4334:  2: d
                   4335: 
                   4336: /a([bc]+)(c*d)/
                   4337:     abcd
                   4338:  0: abcd
                   4339:  1: bc
                   4340:  2: d
                   4341: 
                   4342: /a([bc]*)(c+d)/
                   4343:     abcd
                   4344:  0: abcd
                   4345:  1: b
                   4346:  2: cd
                   4347: 
                   4348: /a[bcd]*dcdcde/
                   4349:     adcdcde
                   4350:  0: adcdcde
                   4351: 
                   4352: /a[bcd]+dcdcde/
                   4353:     *** Failers
                   4354: No match
                   4355:     abcde
                   4356: No match
                   4357:     adcdcde
                   4358: No match
                   4359: 
                   4360: /(ab|a)b*c/
                   4361:     abc
                   4362:  0: abc
                   4363:  1: ab
                   4364: 
                   4365: /((a)(b)c)(d)/
                   4366:     abcd
                   4367:  0: abcd
                   4368:  1: abc
                   4369:  2: a
                   4370:  3: b
                   4371:  4: d
                   4372: 
                   4373: /[a-zA-Z_][a-zA-Z0-9_]*/
                   4374:     alpha
                   4375:  0: alpha
                   4376: 
                   4377: /^a(bc+|b[eh])g|.h$/
                   4378:     abh
                   4379:  0: bh
                   4380: 
                   4381: /(bc+d$|ef*g.|h?i(j|k))/
                   4382:     effgz
                   4383:  0: effgz
                   4384:  1: effgz
                   4385:     ij
                   4386:  0: ij
                   4387:  1: ij
                   4388:  2: j
                   4389:     reffgz
                   4390:  0: effgz
                   4391:  1: effgz
                   4392:     *** Failers
                   4393: No match
                   4394:     effg
                   4395: No match
                   4396:     bcdd
                   4397: No match
                   4398: 
                   4399: /((((((((((a))))))))))/
                   4400:     a
                   4401:  0: a
                   4402:  1: a
                   4403:  2: a
                   4404:  3: a
                   4405:  4: a
                   4406:  5: a
                   4407:  6: a
                   4408:  7: a
                   4409:  8: a
                   4410:  9: a
                   4411: 10: a
                   4412: 
                   4413: /((((((((((a))))))))))\10/
                   4414:     aa
                   4415:  0: aa
                   4416:  1: a
                   4417:  2: a
                   4418:  3: a
                   4419:  4: a
                   4420:  5: a
                   4421:  6: a
                   4422:  7: a
                   4423:  8: a
                   4424:  9: a
                   4425: 10: a
                   4426: 
                   4427: /(((((((((a)))))))))/
                   4428:     a
                   4429:  0: a
                   4430:  1: a
                   4431:  2: a
                   4432:  3: a
                   4433:  4: a
                   4434:  5: a
                   4435:  6: a
                   4436:  7: a
                   4437:  8: a
                   4438:  9: a
                   4439: 
                   4440: /multiple words of text/
                   4441:     *** Failers
                   4442: No match
                   4443:     aa
                   4444: No match
                   4445:     uh-uh
                   4446: No match
                   4447: 
                   4448: /multiple words/
                   4449:     multiple words, yeah
                   4450:  0: multiple words
                   4451: 
                   4452: /(.*)c(.*)/
                   4453:     abcde
                   4454:  0: abcde
                   4455:  1: ab
                   4456:  2: de
                   4457: 
                   4458: /\((.*), (.*)\)/
                   4459:     (a, b)
                   4460:  0: (a, b)
                   4461:  1: a
                   4462:  2: b
                   4463: 
                   4464: /[k]/
                   4465: 
                   4466: /abcd/
                   4467:     abcd
                   4468:  0: abcd
                   4469: 
                   4470: /a(bc)d/
                   4471:     abcd
                   4472:  0: abcd
                   4473:  1: bc
                   4474: 
                   4475: /a[-]?c/
                   4476:     ac
                   4477:  0: ac
                   4478: 
                   4479: /(abc)\1/
                   4480:     abcabc
                   4481:  0: abcabc
                   4482:  1: abc
                   4483: 
                   4484: /([a-c]*)\1/
                   4485:     abcabc
                   4486:  0: abcabc
                   4487:  1: abc
                   4488: 
                   4489: /(a)|\1/
                   4490:     a
                   4491:  0: a
                   4492:  1: a
                   4493:     *** Failers
                   4494:  0: a
                   4495:  1: a
                   4496:     ab
                   4497:  0: a
                   4498:  1: a
                   4499:     x
                   4500: No match
                   4501: 
                   4502: /(([a-c])b*?\2)*/
                   4503:     ababbbcbc
                   4504:  0: ababb
                   4505:  1: bb
                   4506:  2: b
                   4507: 
                   4508: /(([a-c])b*?\2){3}/
                   4509:     ababbbcbc
                   4510:  0: ababbbcbc
                   4511:  1: cbc
                   4512:  2: c
                   4513: 
                   4514: /((\3|b)\2(a)x)+/
                   4515:     aaaxabaxbaaxbbax
                   4516:  0: bbax
                   4517:  1: bbax
                   4518:  2: b
                   4519:  3: a
                   4520: 
                   4521: /((\3|b)\2(a)){2,}/
                   4522:     bbaababbabaaaaabbaaaabba
                   4523:  0: bbaaaabba
                   4524:  1: bba
                   4525:  2: b
                   4526:  3: a
                   4527: 
                   4528: /abc/i
                   4529:     ABC
                   4530:  0: ABC
                   4531:     XABCY
                   4532:  0: ABC
                   4533:     ABABC
                   4534:  0: ABC
                   4535:     *** Failers
                   4536: No match
                   4537:     aaxabxbaxbbx
                   4538: No match
                   4539:     XBC
                   4540: No match
                   4541:     AXC
                   4542: No match
                   4543:     ABX
                   4544: No match
                   4545: 
                   4546: /ab*c/i
                   4547:     ABC
                   4548:  0: ABC
                   4549: 
                   4550: /ab*bc/i
                   4551:     ABC
                   4552:  0: ABC
                   4553:     ABBC
                   4554:  0: ABBC
                   4555: 
                   4556: /ab*?bc/i
                   4557:     ABBBBC
                   4558:  0: ABBBBC
                   4559: 
                   4560: /ab{0,}?bc/i
                   4561:     ABBBBC
                   4562:  0: ABBBBC
                   4563: 
                   4564: /ab+?bc/i
                   4565:     ABBC
                   4566:  0: ABBC
                   4567: 
                   4568: /ab+bc/i
                   4569:     *** Failers
                   4570: No match
                   4571:     ABC
                   4572: No match
                   4573:     ABQ
                   4574: No match
                   4575: 
                   4576: /ab{1,}bc/i
                   4577: 
                   4578: /ab+bc/i
                   4579:     ABBBBC
                   4580:  0: ABBBBC
                   4581: 
                   4582: /ab{1,}?bc/i
                   4583:     ABBBBC
                   4584:  0: ABBBBC
                   4585: 
                   4586: /ab{1,3}?bc/i
                   4587:     ABBBBC
                   4588:  0: ABBBBC
                   4589: 
                   4590: /ab{3,4}?bc/i
                   4591:     ABBBBC
                   4592:  0: ABBBBC
                   4593: 
                   4594: /ab{4,5}?bc/i
                   4595:     *** Failers
                   4596: No match
                   4597:     ABQ
                   4598: No match
                   4599:     ABBBBC
                   4600: No match
                   4601: 
                   4602: /ab??bc/i
                   4603:     ABBC
                   4604:  0: ABBC
                   4605:     ABC
                   4606:  0: ABC
                   4607: 
                   4608: /ab{0,1}?bc/i
                   4609:     ABC
                   4610:  0: ABC
                   4611: 
                   4612: /ab??bc/i
                   4613: 
                   4614: /ab??c/i
                   4615:     ABC
                   4616:  0: ABC
                   4617: 
                   4618: /ab{0,1}?c/i
                   4619:     ABC
                   4620:  0: ABC
                   4621: 
                   4622: /^abc$/i
                   4623:     ABC
                   4624:  0: ABC
                   4625:     *** Failers
                   4626: No match
                   4627:     ABBBBC
                   4628: No match
                   4629:     ABCC
                   4630: No match
                   4631: 
                   4632: /^abc/i
                   4633:     ABCC
                   4634:  0: ABC
                   4635: 
                   4636: /^abc$/i
                   4637: 
                   4638: /abc$/i
                   4639:     AABC
                   4640:  0: ABC
                   4641: 
                   4642: /^/i
                   4643:     ABC
                   4644:  0: 
                   4645: 
                   4646: /$/i
                   4647:     ABC
                   4648:  0: 
                   4649: 
                   4650: /a.c/i
                   4651:     ABC
                   4652:  0: ABC
                   4653:     AXC
                   4654:  0: AXC
                   4655: 
                   4656: /a.*?c/i
                   4657:     AXYZC
                   4658:  0: AXYZC
                   4659: 
                   4660: /a.*c/i
                   4661:     *** Failers
                   4662: No match
                   4663:     AABC
                   4664:  0: AABC
                   4665:     AXYZD
                   4666: No match
                   4667: 
                   4668: /a[bc]d/i
                   4669:     ABD
                   4670:  0: ABD
                   4671: 
                   4672: /a[b-d]e/i
                   4673:     ACE
                   4674:  0: ACE
                   4675:     *** Failers
                   4676: No match
                   4677:     ABC
                   4678: No match
                   4679:     ABD
                   4680: No match
                   4681: 
                   4682: /a[b-d]/i
                   4683:     AAC
                   4684:  0: AC
                   4685: 
                   4686: /a[-b]/i
                   4687:     A-
                   4688:  0: A-
                   4689: 
                   4690: /a[b-]/i
                   4691:     A-
                   4692:  0: A-
                   4693: 
                   4694: /a]/i
                   4695:     A]
                   4696:  0: A]
                   4697: 
                   4698: /a[]]b/i
                   4699:     A]B
                   4700:  0: A]B
                   4701: 
                   4702: /a[^bc]d/i
                   4703:     AED
                   4704:  0: AED
                   4705: 
                   4706: /a[^-b]c/i
                   4707:     ADC
                   4708:  0: ADC
                   4709:     *** Failers
                   4710: No match
                   4711:     ABD
                   4712: No match
                   4713:     A-C
                   4714: No match
                   4715: 
                   4716: /a[^]b]c/i
                   4717:     ADC
                   4718:  0: ADC
                   4719: 
                   4720: /ab|cd/i
                   4721:     ABC
                   4722:  0: AB
                   4723:     ABCD
                   4724:  0: AB
                   4725: 
                   4726: /()ef/i
                   4727:     DEF
                   4728:  0: EF
                   4729:  1: 
                   4730: 
                   4731: /$b/i
                   4732:     *** Failers
                   4733: No match
                   4734:     A]C
                   4735: No match
                   4736:     B
                   4737: No match
                   4738: 
                   4739: /a\(b/i
                   4740:     A(B
                   4741:  0: A(B
                   4742: 
                   4743: /a\(*b/i
                   4744:     AB
                   4745:  0: AB
                   4746:     A((B
                   4747:  0: A((B
                   4748: 
                   4749: /a\\b/i
                   4750:     A\B
                   4751: No match
                   4752: 
                   4753: /((a))/i
                   4754:     ABC
                   4755:  0: A
                   4756:  1: A
                   4757:  2: A
                   4758: 
                   4759: /(a)b(c)/i
                   4760:     ABC
                   4761:  0: ABC
                   4762:  1: A
                   4763:  2: C
                   4764: 
                   4765: /a+b+c/i
                   4766:     AABBABC
                   4767:  0: ABC
                   4768: 
                   4769: /a{1,}b{1,}c/i
                   4770:     AABBABC
                   4771:  0: ABC
                   4772: 
                   4773: /a.+?c/i
                   4774:     ABCABC
                   4775:  0: ABC
                   4776: 
                   4777: /a.*?c/i
                   4778:     ABCABC
                   4779:  0: ABC
                   4780: 
                   4781: /a.{0,5}?c/i
                   4782:     ABCABC
                   4783:  0: ABC
                   4784: 
                   4785: /(a+|b)*/i
                   4786:     AB
                   4787:  0: AB
                   4788:  1: B
                   4789: 
                   4790: /(a+|b){0,}/i
                   4791:     AB
                   4792:  0: AB
                   4793:  1: B
                   4794: 
                   4795: /(a+|b)+/i
                   4796:     AB
                   4797:  0: AB
                   4798:  1: B
                   4799: 
                   4800: /(a+|b){1,}/i
                   4801:     AB
                   4802:  0: AB
                   4803:  1: B
                   4804: 
                   4805: /(a+|b)?/i
                   4806:     AB
                   4807:  0: A
                   4808:  1: A
                   4809: 
                   4810: /(a+|b){0,1}/i
                   4811:     AB
                   4812:  0: A
                   4813:  1: A
                   4814: 
                   4815: /(a+|b){0,1}?/i
                   4816:     AB
                   4817:  0: 
                   4818: 
                   4819: /[^ab]*/i
                   4820:     CDE
                   4821:  0: CDE
                   4822: 
                   4823: /abc/i
                   4824: 
                   4825: /a*/i
                   4826:     
                   4827: 
                   4828: /([abc])*d/i
                   4829:     ABBBCD
                   4830:  0: ABBBCD
                   4831:  1: C
                   4832: 
                   4833: /([abc])*bcd/i
                   4834:     ABCD
                   4835:  0: ABCD
                   4836:  1: A
                   4837: 
                   4838: /a|b|c|d|e/i
                   4839:     E
                   4840:  0: E
                   4841: 
                   4842: /(a|b|c|d|e)f/i
                   4843:     EF
                   4844:  0: EF
                   4845:  1: E
                   4846: 
                   4847: /abcd*efg/i
                   4848:     ABCDEFG
                   4849:  0: ABCDEFG
                   4850: 
                   4851: /ab*/i
                   4852:     XABYABBBZ
                   4853:  0: AB
                   4854:     XAYABBBZ
                   4855:  0: A
                   4856: 
                   4857: /(ab|cd)e/i
                   4858:     ABCDE
                   4859:  0: CDE
                   4860:  1: CD
                   4861: 
                   4862: /[abhgefdc]ij/i
                   4863:     HIJ
                   4864:  0: HIJ
                   4865: 
                   4866: /^(ab|cd)e/i
                   4867:     ABCDE
                   4868: No match
                   4869: 
                   4870: /(abc|)ef/i
                   4871:     ABCDEF
                   4872:  0: EF
                   4873:  1: 
                   4874: 
                   4875: /(a|b)c*d/i
                   4876:     ABCD
                   4877:  0: BCD
                   4878:  1: B
                   4879: 
                   4880: /(ab|ab*)bc/i
                   4881:     ABC
                   4882:  0: ABC
                   4883:  1: A
                   4884: 
                   4885: /a([bc]*)c*/i
                   4886:     ABC
                   4887:  0: ABC
                   4888:  1: BC
                   4889: 
                   4890: /a([bc]*)(c*d)/i
                   4891:     ABCD
                   4892:  0: ABCD
                   4893:  1: BC
                   4894:  2: D
                   4895: 
                   4896: /a([bc]+)(c*d)/i
                   4897:     ABCD
                   4898:  0: ABCD
                   4899:  1: BC
                   4900:  2: D
                   4901: 
                   4902: /a([bc]*)(c+d)/i
                   4903:     ABCD
                   4904:  0: ABCD
                   4905:  1: B
                   4906:  2: CD
                   4907: 
                   4908: /a[bcd]*dcdcde/i
                   4909:     ADCDCDE
                   4910:  0: ADCDCDE
                   4911: 
                   4912: /a[bcd]+dcdcde/i
                   4913: 
                   4914: /(ab|a)b*c/i
                   4915:     ABC
                   4916:  0: ABC
                   4917:  1: AB
                   4918: 
                   4919: /((a)(b)c)(d)/i
                   4920:     ABCD
                   4921:  0: ABCD
                   4922:  1: ABC
                   4923:  2: A
                   4924:  3: B
                   4925:  4: D
                   4926: 
                   4927: /[a-zA-Z_][a-zA-Z0-9_]*/i
                   4928:     ALPHA
                   4929:  0: ALPHA
                   4930: 
                   4931: /^a(bc+|b[eh])g|.h$/i
                   4932:     ABH
                   4933:  0: BH
                   4934: 
                   4935: /(bc+d$|ef*g.|h?i(j|k))/i
                   4936:     EFFGZ
                   4937:  0: EFFGZ
                   4938:  1: EFFGZ
                   4939:     IJ
                   4940:  0: IJ
                   4941:  1: IJ
                   4942:  2: J
                   4943:     REFFGZ
                   4944:  0: EFFGZ
                   4945:  1: EFFGZ
                   4946:     *** Failers
                   4947: No match
                   4948:     ADCDCDE
                   4949: No match
                   4950:     EFFG
                   4951: No match
                   4952:     BCDD
                   4953: No match
                   4954: 
                   4955: /((((((((((a))))))))))/i
                   4956:     A
                   4957:  0: A
                   4958:  1: A
                   4959:  2: A
                   4960:  3: A
                   4961:  4: A
                   4962:  5: A
                   4963:  6: A
                   4964:  7: A
                   4965:  8: A
                   4966:  9: A
                   4967: 10: A
                   4968: 
                   4969: /((((((((((a))))))))))\10/i
                   4970:     AA
                   4971:  0: AA
                   4972:  1: A
                   4973:  2: A
                   4974:  3: A
                   4975:  4: A
                   4976:  5: A
                   4977:  6: A
                   4978:  7: A
                   4979:  8: A
                   4980:  9: A
                   4981: 10: A
                   4982: 
                   4983: /(((((((((a)))))))))/i
                   4984:     A
                   4985:  0: A
                   4986:  1: A
                   4987:  2: A
                   4988:  3: A
                   4989:  4: A
                   4990:  5: A
                   4991:  6: A
                   4992:  7: A
                   4993:  8: A
                   4994:  9: A
                   4995: 
                   4996: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
                   4997:     A
                   4998:  0: A
                   4999:  1: A
                   5000: 
                   5001: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
                   5002:     C
                   5003:  0: C
                   5004:  1: C
                   5005: 
                   5006: /multiple words of text/i
                   5007:     *** Failers
                   5008: No match
                   5009:     AA
                   5010: No match
                   5011:     UH-UH
                   5012: No match
                   5013: 
                   5014: /multiple words/i
                   5015:     MULTIPLE WORDS, YEAH
                   5016:  0: MULTIPLE WORDS
                   5017: 
                   5018: /(.*)c(.*)/i
                   5019:     ABCDE
                   5020:  0: ABCDE
                   5021:  1: AB
                   5022:  2: DE
                   5023: 
                   5024: /\((.*), (.*)\)/i
                   5025:     (A, B)
                   5026:  0: (A, B)
                   5027:  1: A
                   5028:  2: B
                   5029: 
                   5030: /[k]/i
                   5031: 
                   5032: /abcd/i
                   5033:     ABCD
                   5034:  0: ABCD
                   5035: 
                   5036: /a(bc)d/i
                   5037:     ABCD
                   5038:  0: ABCD
                   5039:  1: BC
                   5040: 
                   5041: /a[-]?c/i
                   5042:     AC
                   5043:  0: AC
                   5044: 
                   5045: /(abc)\1/i
                   5046:     ABCABC
                   5047:  0: ABCABC
                   5048:  1: ABC
                   5049: 
                   5050: /([a-c]*)\1/i
                   5051:     ABCABC
                   5052:  0: ABCABC
                   5053:  1: ABC
                   5054: 
                   5055: /a(?!b)./
                   5056:     abad
                   5057:  0: ad
                   5058: 
                   5059: /a(?=d)./
                   5060:     abad
                   5061:  0: ad
                   5062: 
                   5063: /a(?=c|d)./
                   5064:     abad
                   5065:  0: ad
                   5066: 
                   5067: /a(?:b|c|d)(.)/
                   5068:     ace
                   5069:  0: ace
                   5070:  1: e
                   5071: 
                   5072: /a(?:b|c|d)*(.)/
                   5073:     ace
                   5074:  0: ace
                   5075:  1: e
                   5076: 
                   5077: /a(?:b|c|d)+?(.)/
                   5078:     ace
                   5079:  0: ace
                   5080:  1: e
                   5081:     acdbcdbe
                   5082:  0: acd
                   5083:  1: d
                   5084: 
                   5085: /a(?:b|c|d)+(.)/
                   5086:     acdbcdbe
                   5087:  0: acdbcdbe
                   5088:  1: e
                   5089: 
                   5090: /a(?:b|c|d){2}(.)/
                   5091:     acdbcdbe
                   5092:  0: acdb
                   5093:  1: b
                   5094: 
                   5095: /a(?:b|c|d){4,5}(.)/
                   5096:     acdbcdbe
                   5097:  0: acdbcdb
                   5098:  1: b
                   5099: 
                   5100: /a(?:b|c|d){4,5}?(.)/
                   5101:     acdbcdbe
                   5102:  0: acdbcd
                   5103:  1: d
                   5104: 
                   5105: /((foo)|(bar))*/
                   5106:     foobar
                   5107:  0: foobar
                   5108:  1: bar
                   5109:  2: foo
                   5110:  3: bar
                   5111: 
                   5112: /a(?:b|c|d){6,7}(.)/
                   5113:     acdbcdbe
                   5114:  0: acdbcdbe
                   5115:  1: e
                   5116: 
                   5117: /a(?:b|c|d){6,7}?(.)/
                   5118:     acdbcdbe
                   5119:  0: acdbcdbe
                   5120:  1: e
                   5121: 
                   5122: /a(?:b|c|d){5,6}(.)/
                   5123:     acdbcdbe
                   5124:  0: acdbcdbe
                   5125:  1: e
                   5126: 
                   5127: /a(?:b|c|d){5,6}?(.)/
                   5128:     acdbcdbe
                   5129:  0: acdbcdb
                   5130:  1: b
                   5131: 
                   5132: /a(?:b|c|d){5,7}(.)/
                   5133:     acdbcdbe
                   5134:  0: acdbcdbe
                   5135:  1: e
                   5136: 
                   5137: /a(?:b|c|d){5,7}?(.)/
                   5138:     acdbcdbe
                   5139:  0: acdbcdb
                   5140:  1: b
                   5141: 
                   5142: /a(?:b|(c|e){1,2}?|d)+?(.)/
                   5143:     ace
                   5144:  0: ace
                   5145:  1: c
                   5146:  2: e
                   5147: 
                   5148: /^(.+)?B/
                   5149:     AB
                   5150:  0: AB
                   5151:  1: A
                   5152: 
                   5153: /^([^a-z])|(\^)$/
                   5154:     .
                   5155:  0: .
                   5156:  1: .
                   5157: 
                   5158: /^[<>]&/
                   5159:     <&OUT
                   5160:  0: <&
                   5161: 
                   5162: /^(a\1?){4}$/
                   5163:     aaaaaaaaaa
                   5164:  0: aaaaaaaaaa
                   5165:  1: aaaa
                   5166:     *** Failers
                   5167: No match
                   5168:     AB
                   5169: No match
                   5170:     aaaaaaaaa
                   5171: No match
                   5172:     aaaaaaaaaaa
                   5173: No match
                   5174: 
                   5175: /^(a(?(1)\1)){4}$/
                   5176:     aaaaaaaaaa
                   5177:  0: aaaaaaaaaa
                   5178:  1: aaaa
                   5179:     *** Failers
                   5180: No match
                   5181:     aaaaaaaaa
                   5182: No match
                   5183:     aaaaaaaaaaa
                   5184: No match
                   5185: 
                   5186: /(?:(f)(o)(o)|(b)(a)(r))*/
                   5187:     foobar
                   5188:  0: foobar
                   5189:  1: f
                   5190:  2: o
                   5191:  3: o
                   5192:  4: b
                   5193:  5: a
                   5194:  6: r
                   5195: 
                   5196: /(?<=a)b/
                   5197:     ab
                   5198:  0: b
                   5199:     *** Failers
                   5200: No match
                   5201:     cb
                   5202: No match
                   5203:     b
                   5204: No match
                   5205: 
                   5206: /(?<!c)b/
                   5207:     ab
                   5208:  0: b
                   5209:     b
                   5210:  0: b
                   5211:     b
                   5212:  0: b
                   5213: 
                   5214: /(?:..)*a/
                   5215:     aba
                   5216:  0: aba
                   5217: 
                   5218: /(?:..)*?a/
                   5219:     aba
                   5220:  0: a
                   5221: 
                   5222: /^(?:b|a(?=(.)))*\1/
                   5223:     abc
                   5224:  0: ab
                   5225:  1: b
                   5226: 
                   5227: /^(){3,5}/
                   5228:     abc
                   5229:  0: 
                   5230:  1: 
                   5231: 
                   5232: /^(a+)*ax/
                   5233:     aax
                   5234:  0: aax
                   5235:  1: a
                   5236: 
                   5237: /^((a|b)+)*ax/
                   5238:     aax
                   5239:  0: aax
                   5240:  1: a
                   5241:  2: a
                   5242: 
                   5243: /^((a|bc)+)*ax/
                   5244:     aax
                   5245:  0: aax
                   5246:  1: a
                   5247:  2: a
                   5248: 
                   5249: /(a|x)*ab/
                   5250:     cab
                   5251:  0: ab
                   5252: 
                   5253: /(a)*ab/
                   5254:     cab
                   5255:  0: ab
                   5256: 
                   5257: /(?:(?i)a)b/
                   5258:     ab
                   5259:  0: ab
                   5260: 
                   5261: /((?i)a)b/
                   5262:     ab
                   5263:  0: ab
                   5264:  1: a
                   5265: 
                   5266: /(?:(?i)a)b/
                   5267:     Ab
                   5268:  0: Ab
                   5269: 
                   5270: /((?i)a)b/
                   5271:     Ab
                   5272:  0: Ab
                   5273:  1: A
                   5274: 
                   5275: /(?:(?i)a)b/
                   5276:     *** Failers
                   5277: No match
                   5278:     cb
                   5279: No match
                   5280:     aB
                   5281: No match
                   5282: 
                   5283: /((?i)a)b/
                   5284: 
                   5285: /(?i:a)b/
                   5286:     ab
                   5287:  0: ab
                   5288: 
                   5289: /((?i:a))b/
                   5290:     ab
                   5291:  0: ab
                   5292:  1: a
                   5293: 
                   5294: /(?i:a)b/
                   5295:     Ab
                   5296:  0: Ab
                   5297: 
                   5298: /((?i:a))b/
                   5299:     Ab
                   5300:  0: Ab
                   5301:  1: A
                   5302: 
                   5303: /(?i:a)b/
                   5304:     *** Failers
                   5305: No match
                   5306:     aB
                   5307: No match
                   5308:     aB
                   5309: No match
                   5310: 
                   5311: /((?i:a))b/
                   5312: 
                   5313: /(?:(?-i)a)b/i
                   5314:     ab
                   5315:  0: ab
                   5316: 
                   5317: /((?-i)a)b/i
                   5318:     ab
                   5319:  0: ab
                   5320:  1: a
                   5321: 
                   5322: /(?:(?-i)a)b/i
                   5323:     aB
                   5324:  0: aB
                   5325: 
                   5326: /((?-i)a)b/i
                   5327:     aB
                   5328:  0: aB
                   5329:  1: a
                   5330: 
                   5331: /(?:(?-i)a)b/i
                   5332:     *** Failers
                   5333: No match
                   5334:     aB
                   5335:  0: aB
                   5336:     Ab
                   5337: No match
                   5338: 
                   5339: /((?-i)a)b/i
                   5340: 
                   5341: /(?:(?-i)a)b/i
                   5342:     aB
                   5343:  0: aB
                   5344: 
                   5345: /((?-i)a)b/i
                   5346:     aB
                   5347:  0: aB
                   5348:  1: a
                   5349: 
                   5350: /(?:(?-i)a)b/i
                   5351:     *** Failers
                   5352: No match
                   5353:     Ab
                   5354: No match
                   5355:     AB
                   5356: No match
                   5357: 
                   5358: /((?-i)a)b/i
                   5359: 
                   5360: /(?-i:a)b/i
                   5361:     ab
                   5362:  0: ab
                   5363: 
                   5364: /((?-i:a))b/i
                   5365:     ab
                   5366:  0: ab
                   5367:  1: a
                   5368: 
                   5369: /(?-i:a)b/i
                   5370:     aB
                   5371:  0: aB
                   5372: 
                   5373: /((?-i:a))b/i
                   5374:     aB
                   5375:  0: aB
                   5376:  1: a
                   5377: 
                   5378: /(?-i:a)b/i
                   5379:     *** Failers
                   5380: No match
                   5381:     AB
                   5382: No match
                   5383:     Ab
                   5384: No match
                   5385: 
                   5386: /((?-i:a))b/i
                   5387: 
                   5388: /(?-i:a)b/i
                   5389:     aB
                   5390:  0: aB
                   5391: 
                   5392: /((?-i:a))b/i
                   5393:     aB
                   5394:  0: aB
                   5395:  1: a
                   5396: 
                   5397: /(?-i:a)b/i
                   5398:     *** Failers
                   5399: No match
                   5400:     Ab
                   5401: No match
                   5402:     AB
                   5403: No match
                   5404: 
                   5405: /((?-i:a))b/i
                   5406: 
                   5407: /((?-i:a.))b/i
                   5408:     *** Failers
                   5409: No match
                   5410:     AB
                   5411: No match
                   5412:     a\nB
                   5413: No match
                   5414: 
                   5415: /((?s-i:a.))b/i
                   5416:     a\nB
                   5417:  0: a\x0aB
                   5418:  1: a\x0a
                   5419: 
                   5420: /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
                   5421:     cabbbb
                   5422:  0: cabbbb
                   5423: 
                   5424: /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
                   5425:     caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
                   5426:  0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
                   5427: 
                   5428: /(ab)\d\1/i
                   5429:     Ab4ab
                   5430:  0: Ab4ab
                   5431:  1: Ab
                   5432:     ab4Ab
                   5433:  0: ab4Ab
                   5434:  1: ab
                   5435: 
                   5436: /foo\w*\d{4}baz/
                   5437:     foobar1234baz
                   5438:  0: foobar1234baz
                   5439: 
                   5440: /x(~~)*(?:(?:F)?)?/
                   5441:     x~~
                   5442:  0: x~~
                   5443:  1: ~~
                   5444: 
                   5445: /^a(?#xxx){3}c/
                   5446:     aaac
                   5447:  0: aaac
                   5448: 
                   5449: /^a (?#xxx) (?#yyy) {3}c/x
                   5450:     aaac
                   5451:  0: aaac
                   5452: 
                   5453: /(?<![cd])b/
                   5454:     *** Failers
                   5455: No match
                   5456:     B\nB
                   5457: No match
                   5458:     dbcb
                   5459: No match
                   5460: 
                   5461: /(?<![cd])[ab]/
                   5462:     dbaacb
                   5463:  0: a
                   5464: 
                   5465: /(?<!(c|d))b/
                   5466: 
                   5467: /(?<!(c|d))[ab]/
                   5468:     dbaacb
                   5469:  0: a
                   5470: 
                   5471: /(?<!cd)[ab]/
                   5472:     cdaccb
                   5473:  0: b
                   5474: 
                   5475: /^(?:a?b?)*$/
                   5476:     \
                   5477:  0: 
                   5478:     a
                   5479:  0: a
                   5480:     ab
                   5481:  0: ab
                   5482:     aaa   
                   5483:  0: aaa
                   5484:     *** Failers
                   5485: No match
                   5486:     dbcb
                   5487: No match
                   5488:     a--
                   5489: No match
                   5490:     aa-- 
                   5491: No match
                   5492: 
                   5493: /((?s)^a(.))((?m)^b$)/
                   5494:     a\nb\nc\n
                   5495:  0: a\x0ab
                   5496:  1: a\x0a
                   5497:  2: \x0a
                   5498:  3: b
                   5499: 
                   5500: /((?m)^b$)/
                   5501:     a\nb\nc\n
                   5502:  0: b
                   5503:  1: b
                   5504: 
                   5505: /(?m)^b/
                   5506:     a\nb\n
                   5507:  0: b
                   5508: 
                   5509: /(?m)^(b)/
                   5510:     a\nb\n
                   5511:  0: b
                   5512:  1: b
                   5513: 
                   5514: /((?m)^b)/
                   5515:     a\nb\n
                   5516:  0: b
                   5517:  1: b
                   5518: 
                   5519: /\n((?m)^b)/
                   5520:     a\nb\n
                   5521:  0: \x0ab
                   5522:  1: b
                   5523: 
                   5524: /((?s).)c(?!.)/
                   5525:     a\nb\nc\n
                   5526:  0: \x0ac
                   5527:  1: \x0a
                   5528:     a\nb\nc\n
                   5529:  0: \x0ac
                   5530:  1: \x0a
                   5531: 
                   5532: /((?s)b.)c(?!.)/
                   5533:     a\nb\nc\n
                   5534:  0: b\x0ac
                   5535:  1: b\x0a
                   5536:     a\nb\nc\n
                   5537:  0: b\x0ac
                   5538:  1: b\x0a
                   5539: 
                   5540: /^b/
                   5541: 
                   5542: /()^b/
                   5543:     *** Failers
                   5544: No match
                   5545:     a\nb\nc\n
                   5546: No match
                   5547:     a\nb\nc\n
                   5548: No match
                   5549: 
                   5550: /((?m)^b)/
                   5551:     a\nb\nc\n
                   5552:  0: b
                   5553:  1: b
                   5554: 
                   5555: /(x)?(?(1)a|b)/
                   5556:     *** Failers
                   5557: No match
                   5558:     a
                   5559: No match
                   5560:     a
                   5561: No match
                   5562: 
                   5563: /(x)?(?(1)b|a)/
                   5564:     a
                   5565:  0: a
                   5566: 
                   5567: /()?(?(1)b|a)/
                   5568:     a
                   5569:  0: a
                   5570: 
                   5571: /()(?(1)b|a)/
                   5572: 
                   5573: /()?(?(1)a|b)/
                   5574:     a
                   5575:  0: a
                   5576:  1: 
                   5577: 
                   5578: /^(\()?blah(?(1)(\)))$/
                   5579:     (blah)
                   5580:  0: (blah)
                   5581:  1: (
                   5582:  2: )
                   5583:     blah
                   5584:  0: blah
                   5585:     *** Failers
                   5586: No match
                   5587:     a
                   5588: No match
                   5589:     blah)
                   5590: No match
                   5591:     (blah
                   5592: No match
                   5593: 
                   5594: /^(\(+)?blah(?(1)(\)))$/
                   5595:     (blah)
                   5596:  0: (blah)
                   5597:  1: (
                   5598:  2: )
                   5599:     blah
                   5600:  0: blah
                   5601:     *** Failers
                   5602: No match
                   5603:     blah)
                   5604: No match
                   5605:     (blah
                   5606: No match
                   5607: 
                   5608: /(?(?!a)a|b)/
                   5609: 
                   5610: /(?(?!a)b|a)/
                   5611:     a
                   5612:  0: a
                   5613: 
                   5614: /(?(?=a)b|a)/
                   5615:     *** Failers
                   5616: No match
                   5617:     a
                   5618: No match
                   5619:     a
                   5620: No match
                   5621: 
                   5622: /(?(?=a)a|b)/
                   5623:     a
                   5624:  0: a
                   5625: 
                   5626: /(?=(a+?))(\1ab)/
                   5627:     aaab
                   5628:  0: aab
                   5629:  1: a
                   5630:  2: aab
                   5631: 
                   5632: /^(?=(a+?))\1ab/
                   5633: 
                   5634: /(\w+:)+/
                   5635:     one:
                   5636:  0: one:
                   5637:  1: one:
                   5638: 
                   5639: /$(?<=^(a))/
                   5640:     a
                   5641:  0: 
                   5642:  1: a
                   5643: 
                   5644: /(?=(a+?))(\1ab)/
                   5645:     aaab
                   5646:  0: aab
                   5647:  1: a
                   5648:  2: aab
                   5649: 
                   5650: /^(?=(a+?))\1ab/
                   5651:     *** Failers
                   5652: No match
                   5653:     aaab
                   5654: No match
                   5655:     aaab
                   5656: No match
                   5657: 
                   5658: /([\w:]+::)?(\w+)$/
                   5659:     abcd
                   5660:  0: abcd
                   5661:  1: <unset>
                   5662:  2: abcd
                   5663:     xy:z:::abcd
                   5664:  0: xy:z:::abcd
                   5665:  1: xy:z:::
                   5666:  2: abcd
                   5667: 
                   5668: /^[^bcd]*(c+)/
                   5669:     aexycd
                   5670:  0: aexyc
                   5671:  1: c
                   5672: 
                   5673: /(a*)b+/
                   5674:     caab
                   5675:  0: aab
                   5676:  1: aa
                   5677: 
                   5678: /([\w:]+::)?(\w+)$/
                   5679:     abcd
                   5680:  0: abcd
                   5681:  1: <unset>
                   5682:  2: abcd
                   5683:     xy:z:::abcd
                   5684:  0: xy:z:::abcd
                   5685:  1: xy:z:::
                   5686:  2: abcd
                   5687:     *** Failers
                   5688:  0: Failers
                   5689:  1: <unset>
                   5690:  2: Failers
                   5691:     abcd:
                   5692: No match
                   5693:     abcd:
                   5694: No match
                   5695: 
                   5696: /^[^bcd]*(c+)/
                   5697:     aexycd
                   5698:  0: aexyc
                   5699:  1: c
                   5700: 
                   5701: /(>a+)ab/
                   5702: 
                   5703: /(?>a+)b/
                   5704:     aaab
                   5705:  0: aaab
                   5706: 
                   5707: /([[:]+)/
                   5708:     a:[b]:
                   5709:  0: :[
                   5710:  1: :[
                   5711: 
                   5712: /([[=]+)/
                   5713:     a=[b]=
                   5714:  0: =[
                   5715:  1: =[
                   5716: 
                   5717: /([[.]+)/
                   5718:     a.[b].
                   5719:  0: .[
                   5720:  1: .[
                   5721: 
                   5722: /((?>a+)b)/
                   5723:     aaab
                   5724:  0: aaab
                   5725:  1: aaab
                   5726: 
                   5727: /(?>(a+))b/
                   5728:     aaab
                   5729:  0: aaab
                   5730:  1: aaa
                   5731: 
                   5732: /((?>[^()]+)|\([^()]*\))+/
                   5733:     ((abc(ade)ufh()()x
                   5734:  0: abc(ade)ufh()()x
                   5735:  1: x
                   5736: 
                   5737: /a\Z/
                   5738:     *** Failers
                   5739: No match
                   5740:     aaab
                   5741: No match
                   5742:     a\nb\n
                   5743: No match
                   5744: 
                   5745: /b\Z/
                   5746:     a\nb\n
                   5747:  0: b
                   5748: 
                   5749: /b\z/
                   5750: 
                   5751: /b\Z/
                   5752:     a\nb
                   5753:  0: b
                   5754: 
                   5755: /b\z/
                   5756:     a\nb
                   5757:  0: b
                   5758:     *** Failers
                   5759: No match
                   5760:     
                   5761: /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
                   5762:     a
                   5763:  0: a
                   5764:  1: 
                   5765:     abc
                   5766:  0: abc
                   5767:  1: 
                   5768:     a-b
                   5769:  0: a-b
                   5770:  1: 
                   5771:     0-9 
                   5772:  0: 0-9
                   5773:  1: 
                   5774:     a.b
                   5775:  0: a.b
                   5776:  1: 
                   5777:     5.6.7  
                   5778:  0: 5.6.7
                   5779:  1: 
                   5780:     the.quick.brown.fox
                   5781:  0: the.quick.brown.fox
                   5782:  1: 
                   5783:     a100.b200.300c  
                   5784:  0: a100.b200.300c
                   5785:  1: 
                   5786:     12-ab.1245 
                   5787:  0: 12-ab.1245
                   5788:  1: 
                   5789:     *** Failers
                   5790: No match
                   5791:     \
                   5792: No match
                   5793:     .a
                   5794: No match
                   5795:     -a
                   5796: No match
                   5797:     a-
                   5798: No match
                   5799:     a.  
                   5800: No match
                   5801:     a_b 
                   5802: No match
                   5803:     a.-
                   5804: No match
                   5805:     a..  
                   5806: No match
                   5807:     ab..bc 
                   5808: No match
                   5809:     the.quick.brown.fox-
                   5810: No match
                   5811:     the.quick.brown.fox.
                   5812: No match
                   5813:     the.quick.brown.fox_
                   5814: No match
                   5815:     the.quick.brown.fox+       
                   5816: No match
                   5817: 
                   5818: /(?>.*)(?<=(abcd|wxyz))/
                   5819:     alphabetabcd
                   5820:  0: alphabetabcd
                   5821:  1: abcd
                   5822:     endingwxyz
                   5823:  0: endingwxyz
                   5824:  1: wxyz
                   5825:     *** Failers
                   5826: No match
                   5827:     a rather long string that doesn't end with one of them
                   5828: No match
                   5829: 
                   5830: /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
                   5831:     word cat dog elephant mussel cow horse canary baboon snake shark otherword
                   5832:  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
                   5833:     word cat dog elephant mussel cow horse canary baboon snake shark
                   5834: No match
                   5835:   
                   5836: /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
                   5837:     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
                   5838: No match
                   5839: 
                   5840: /(?<=\d{3}(?!999))foo/
                   5841:     999foo
                   5842:  0: foo
                   5843:     123999foo 
                   5844:  0: foo
                   5845:     *** Failers
                   5846: No match
                   5847:     123abcfoo
                   5848: No match
                   5849:     
                   5850: /(?<=(?!...999)\d{3})foo/
                   5851:     999foo
                   5852:  0: foo
                   5853:     123999foo 
                   5854:  0: foo
                   5855:     *** Failers
                   5856: No match
                   5857:     123abcfoo
                   5858: No match
                   5859: 
                   5860: /(?<=\d{3}(?!999)...)foo/
                   5861:     123abcfoo
                   5862:  0: foo
                   5863:     123456foo 
                   5864:  0: foo
                   5865:     *** Failers
                   5866: No match
                   5867:     123999foo  
                   5868: No match
                   5869:     
                   5870: /(?<=\d{3}...)(?<!999)foo/
                   5871:     123abcfoo   
                   5872:  0: foo
                   5873:     123456foo 
                   5874:  0: foo
                   5875:     *** Failers
                   5876: No match
                   5877:     123999foo  
                   5878: No match
                   5879: 
                   5880: /<a[\s]+href[\s]*=[\s]*          # find <a href=
                   5881:  ([\"\'])?                       # find single or double quote
                   5882:  (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
                   5883:                                  # quote, otherwise match up to next space
                   5884: /isx
                   5885:     <a href=abcd xyz
                   5886:  0: <a href=abcd
                   5887:  1: <unset>
                   5888:  2: <unset>
                   5889:  3: abcd
                   5890:     <a href=\"abcd xyz pqr\" cats
                   5891:  0: <a href="abcd xyz pqr"
                   5892:  1: "
                   5893:  2: abcd xyz pqr
                   5894:     <a href=\'abcd xyz pqr\' cats
                   5895:  0: <a href='abcd xyz pqr'
                   5896:  1: '
                   5897:  2: abcd xyz pqr
                   5898: 
                   5899: /<a\s+href\s*=\s*                # find <a href=
                   5900:  (["'])?                         # find single or double quote
                   5901:  (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
                   5902:                                  # quote, otherwise match up to next space
                   5903: /isx
                   5904:     <a href=abcd xyz
                   5905:  0: <a href=abcd
                   5906:  1: <unset>
                   5907:  2: <unset>
                   5908:  3: abcd
                   5909:     <a href=\"abcd xyz pqr\" cats
                   5910:  0: <a href="abcd xyz pqr"
                   5911:  1: "
                   5912:  2: abcd xyz pqr
                   5913:     <a href       =       \'abcd xyz pqr\' cats
                   5914:  0: <a href       =       'abcd xyz pqr'
                   5915:  1: '
                   5916:  2: abcd xyz pqr
                   5917: 
                   5918: /<a\s+href(?>\s*)=(?>\s*)        # find <a href=
                   5919:  (["'])?                         # find single or double quote
                   5920:  (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
                   5921:                                  # quote, otherwise match up to next space
                   5922: /isx
                   5923:     <a href=abcd xyz
                   5924:  0: <a href=abcd
                   5925:  1: <unset>
                   5926:  2: <unset>
                   5927:  3: abcd
                   5928:     <a href=\"abcd xyz pqr\" cats
                   5929:  0: <a href="abcd xyz pqr"
                   5930:  1: "
                   5931:  2: abcd xyz pqr
                   5932:     <a href       =       \'abcd xyz pqr\' cats
                   5933:  0: <a href       =       'abcd xyz pqr'
                   5934:  1: '
                   5935:  2: abcd xyz pqr
                   5936: 
                   5937: /((Z)+|A)*/
                   5938:     ZABCDEFG
                   5939:  0: ZA
                   5940:  1: A
                   5941:  2: Z
                   5942: 
                   5943: /(Z()|A)*/
                   5944:     ZABCDEFG
                   5945:  0: ZA
                   5946:  1: A
                   5947:  2: 
                   5948: 
                   5949: /(Z(())|A)*/
                   5950:     ZABCDEFG
                   5951:  0: ZA
                   5952:  1: A
                   5953:  2: 
                   5954:  3: 
                   5955: 
                   5956: /((?>Z)+|A)*/
                   5957:     ZABCDEFG
                   5958:  0: ZA
                   5959:  1: A
                   5960: 
                   5961: /((?>)+|A)*/
                   5962:     ZABCDEFG
                   5963:  0: 
                   5964:  1: 
                   5965: 
                   5966: /a*/g
                   5967:     abbab
                   5968:  0: a
                   5969:  0: 
                   5970:  0: 
                   5971:  0: a
                   5972:  0: 
                   5973:  0: 
                   5974: 
                   5975: /^[a-\d]/
                   5976:     abcde
                   5977:  0: a
                   5978:     -things
                   5979:  0: -
                   5980:     0digit
                   5981:  0: 0
                   5982:     *** Failers
                   5983: No match
                   5984:     bcdef    
                   5985: No match
                   5986: 
                   5987: /^[\d-a]/
                   5988:     abcde
                   5989:  0: a
                   5990:     -things
                   5991:  0: -
                   5992:     0digit
                   5993:  0: 0
                   5994:     *** Failers
                   5995: No match
                   5996:     bcdef    
                   5997: No match
                   5998:     
                   5999: /[[:space:]]+/
                   6000:     > \x09\x0a\x0c\x0d\x0b<
                   6001:  0:  \x09\x0a\x0c\x0d\x0b
                   6002:      
                   6003: /[[:blank:]]+/
                   6004:     > \x09\x0a\x0c\x0d\x0b<
                   6005:  0:  \x09
                   6006:      
                   6007: /[\s]+/
                   6008:     > \x09\x0a\x0c\x0d\x0b<
                   6009:  0:  \x09\x0a\x0c\x0d
                   6010:      
                   6011: /\s+/
                   6012:     > \x09\x0a\x0c\x0d\x0b<
                   6013:  0:  \x09\x0a\x0c\x0d
                   6014:      
                   6015: /ab/x
                   6016:     ab
                   6017: No match
                   6018: 
                   6019: /(?!\A)x/m
                   6020:   a\nxb\n
                   6021:  0: x
                   6022: 
                   6023: /(?!^)x/m
                   6024:   a\nxb\n
                   6025: No match
                   6026: 
                   6027: /abc\Qabc\Eabc/
                   6028:     abcabcabc
                   6029:  0: abcabcabc
                   6030:     
                   6031: /abc\Q(*+|\Eabc/
                   6032:     abc(*+|abc 
                   6033:  0: abc(*+|abc
                   6034: 
                   6035: /   abc\Q abc\Eabc/x
                   6036:     abc abcabc
                   6037:  0: abc abcabc
                   6038:     *** Failers
                   6039: No match
                   6040:     abcabcabc  
                   6041: No match
                   6042:     
                   6043: /abc#comment
                   6044:     \Q#not comment
                   6045:     literal\E/x
                   6046:     abc#not comment\n    literal     
                   6047:  0: abc#not comment\x0a    literal
                   6048: 
                   6049: /abc#comment
                   6050:     \Q#not comment
                   6051:     literal/x
                   6052:     abc#not comment\n    literal     
                   6053:  0: abc#not comment\x0a    literal
                   6054: 
                   6055: /abc#comment
                   6056:     \Q#not comment
                   6057:     literal\E #more comment
                   6058:     /x
                   6059:     abc#not comment\n    literal     
                   6060:  0: abc#not comment\x0a    literal
                   6061: 
                   6062: /abc#comment
                   6063:     \Q#not comment
                   6064:     literal\E #more comment/x
                   6065:     abc#not comment\n    literal     
                   6066:  0: abc#not comment\x0a    literal
                   6067: 
                   6068: /\Qabc\$xyz\E/
                   6069:     abc\\\$xyz
                   6070:  0: abc\$xyz
                   6071: 
                   6072: /\Qabc\E\$\Qxyz\E/
                   6073:     abc\$xyz
                   6074:  0: abc$xyz
                   6075: 
                   6076: /\Gabc/
                   6077:     abc
                   6078:  0: abc
                   6079:     *** Failers
                   6080: No match
                   6081:     xyzabc  
                   6082: No match
                   6083: 
                   6084: /\Gabc./g
                   6085:     abc1abc2xyzabc3
                   6086:  0: abc1
                   6087:  0: abc2
                   6088: 
                   6089: /abc./g
                   6090:     abc1abc2xyzabc3 
                   6091:  0: abc1
                   6092:  0: abc2
                   6093:  0: abc3
                   6094: 
                   6095: /a(?x: b c )d/
                   6096:     XabcdY
                   6097:  0: abcd
                   6098:     *** Failers 
                   6099: No match
                   6100:     Xa b c d Y 
                   6101: No match
                   6102: 
                   6103: /((?x)x y z | a b c)/
                   6104:     XabcY
                   6105:  0: abc
                   6106:  1: abc
                   6107:     AxyzB 
                   6108:  0: xyz
                   6109:  1: xyz
                   6110: 
                   6111: /(?i)AB(?-i)C/
                   6112:     XabCY
                   6113:  0: abC
                   6114:     *** Failers
                   6115: No match
                   6116:     XabcY  
                   6117: No match
                   6118: 
                   6119: /((?i)AB(?-i)C|D)E/
                   6120:     abCE
                   6121:  0: abCE
                   6122:  1: abC
                   6123:     DE
                   6124:  0: DE
                   6125:  1: D
                   6126:     *** Failers
                   6127: No match
                   6128:     abcE
                   6129: No match
                   6130:     abCe  
                   6131: No match
                   6132:     dE
                   6133: No match
                   6134:     De    
                   6135: No match
                   6136: 
                   6137: /(.*)\d+\1/
                   6138:     abc123abc
                   6139:  0: abc123abc
                   6140:  1: abc
                   6141:     abc123bc 
                   6142:  0: bc123bc
                   6143:  1: bc
                   6144: 
                   6145: /(.*)\d+\1/s
                   6146:     abc123abc
                   6147:  0: abc123abc
                   6148:  1: abc
                   6149:     abc123bc 
                   6150:  0: bc123bc
                   6151:  1: bc
                   6152:     
                   6153: /((.*))\d+\1/
                   6154:     abc123abc
                   6155:  0: abc123abc
                   6156:  1: abc
                   6157:  2: abc
                   6158:     abc123bc  
                   6159:  0: bc123bc
                   6160:  1: bc
                   6161:  2: bc
                   6162: 
1.1.1.4 ! misho    6163: /-- This tests for an IPv6 address in the form where it can have up to
        !          6164:     eight components, one and only one of which is empty. This must be
        !          6165:     an internal component. --/
1.1       misho    6166: 
                   6167: /^(?!:)                       # colon disallowed at start
                   6168:   (?:                         # start of item
                   6169:     (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
                   6170:     (?(1)0 | () ) )           # if null previously matched, fail; else null
                   6171:     :                         # followed by colon
                   6172:   ){1,7}                      # end item; 1-7 of them required               
                   6173:   [0-9a-f]{1,4} $             # final hex number at end of string
                   6174:   (?(1)|.)                    # check that there was an empty component
                   6175:   /xi
                   6176:     a123::a123
                   6177:  0: a123::a123
                   6178:  1: 
                   6179:     a123:b342::abcd
                   6180:  0: a123:b342::abcd
                   6181:  1: 
                   6182:     a123:b342::324e:abcd
                   6183:  0: a123:b342::324e:abcd
                   6184:  1: 
                   6185:     a123:ddde:b342::324e:abcd
                   6186:  0: a123:ddde:b342::324e:abcd
                   6187:  1: 
                   6188:     a123:ddde:b342::324e:dcba:abcd
                   6189:  0: a123:ddde:b342::324e:dcba:abcd
                   6190:  1: 
                   6191:     a123:ddde:9999:b342::324e:dcba:abcd
                   6192:  0: a123:ddde:9999:b342::324e:dcba:abcd
                   6193:  1: 
                   6194:     *** Failers
                   6195: No match
                   6196:     1:2:3:4:5:6:7:8
                   6197: No match
                   6198:     a123:bce:ddde:9999:b342::324e:dcba:abcd
                   6199: No match
                   6200:     a123::9999:b342::324e:dcba:abcd
                   6201: No match
                   6202:     abcde:2:3:4:5:6:7:8
                   6203: No match
                   6204:     ::1
                   6205: No match
                   6206:     abcd:fee0:123::   
                   6207: No match
                   6208:     :1
                   6209: No match
                   6210:     1:  
                   6211: No match
                   6212: 
                   6213: /[z\Qa-d]\E]/
                   6214:     z
                   6215:  0: z
                   6216:     a
                   6217:  0: a
                   6218:     -
                   6219:  0: -
                   6220:     d
                   6221:  0: d
                   6222:     ] 
                   6223:  0: ]
                   6224:     *** Failers
                   6225:  0: a
                   6226:     b     
                   6227: No match
                   6228: 
                   6229: /[\z\C]/
                   6230:     z
                   6231:  0: z
                   6232:     C 
                   6233:  0: C
                   6234:     
                   6235: /\M/
                   6236:     M 
                   6237:  0: M
                   6238:     
                   6239: /(a+)*b/
                   6240:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
                   6241: No match
                   6242:     
                   6243: /(?i)reg(?:ul(?:[a]|ae)r|ex)/
                   6244:     REGular
                   6245:  0: REGular
                   6246:     regulaer
                   6247:  0: regulaer
                   6248:     Regex  
                   6249:  0: Regex
                   6250:     regulr 
                   6251:  0: regul\xe4r
                   6252: 
                   6253: /[--]+/
                   6254:     
                   6255:  0: \xc5\xe6\xe5\xe4\xe0
                   6256:     
                   6257:  0: \xc5\xe6\xe5\xe4\xff
                   6258:     
                   6259:  0: \xc5\xe6\xe5\xe4\xc0
                   6260:     
                   6261:  0: \xc5\xe6\xe5\xe4\xdf
                   6262: 
                   6263: /(?<=Z)X./
                   6264:   \x84XAZXB
                   6265:  0: XB
                   6266: 
                   6267: /ab cd (?x) de fg/
                   6268:     ab cd defg
                   6269:  0: ab cd defg
                   6270: 
                   6271: /ab cd(?x) de fg/
                   6272:     ab cddefg
                   6273:  0: ab cddefg
                   6274:     ** Failers 
                   6275: No match
                   6276:     abcddefg
                   6277: No match
                   6278: 
                   6279: /(?<![^f]oo)(bar)/
                   6280:     foobarX 
                   6281:  0: bar
                   6282:  1: bar
                   6283:     ** Failers 
                   6284: No match
                   6285:     boobarX
                   6286: No match
                   6287: 
                   6288: /(?<![^f])X/
                   6289:     offX
                   6290:  0: X
                   6291:     ** Failers
                   6292: No match
                   6293:     onyX  
                   6294: No match
                   6295: 
                   6296: /(?<=[^f])X/
                   6297:     onyX
                   6298:  0: X
                   6299:     ** Failers
                   6300: No match
                   6301:     offX 
                   6302: No match
                   6303: 
                   6304: /^/mg
                   6305:     a\nb\nc\n
                   6306:  0: 
                   6307:  0: 
                   6308:  0: 
                   6309:     \ 
                   6310:  0: 
                   6311:     
                   6312: /(?<=C\n)^/mg
                   6313:     A\nC\nC\n 
                   6314:  0: 
                   6315: 
                   6316: /(?:(?(1)a|b)(X))+/
                   6317:     bXaX
                   6318:  0: bXaX
                   6319:  1: X
                   6320: 
                   6321: /(?:(?(1)\1a|b)(X|Y))+/
                   6322:     bXXaYYaY
                   6323:  0: bXXaYYaY
                   6324:  1: Y
                   6325:     bXYaXXaX  
                   6326:  0: bX
                   6327:  1: X
                   6328: 
                   6329: /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
                   6330:     bXXaYYaY
                   6331:  0: bX
                   6332:  1: 
                   6333:  2: 
                   6334:  3: 
                   6335:  4: 
                   6336:  5: 
                   6337:  6: 
                   6338:  7: 
                   6339:  8: 
                   6340:  9: 
                   6341: 10: X
                   6342: 
                   6343: /[[,abc,]+]/
                   6344:     abc]
                   6345:  0: abc]
                   6346:     a,b]
                   6347:  0: a,b]
                   6348:     [a,b,c]  
                   6349:  0: [a,b,c]
                   6350: 
                   6351: /(?-x: )/x
                   6352:     A\x20B
                   6353:  0:  
                   6354:     
                   6355: "(?x)(?-x: \s*#\s*)"
                   6356:     A # B
                   6357:  0:  # 
                   6358:     ** Failers
                   6359: No match
                   6360:     #  
                   6361: No match
                   6362: 
                   6363: "(?x-is)(?:(?-ixs) \s*#\s*) include"
                   6364:     A #include
                   6365:  0:  #include
                   6366:     ** Failers
                   6367: No match
                   6368:     A#include  
                   6369: No match
                   6370:     A #Include
                   6371: No match
                   6372: 
                   6373: /a*b*\w/
                   6374:     aaabbbb
                   6375:  0: aaabbbb
                   6376:     aaaa
                   6377:  0: aaaa
                   6378:     a
                   6379:  0: a
                   6380: 
                   6381: /a*b?\w/
                   6382:     aaabbbb
                   6383:  0: aaabb
                   6384:     aaaa
                   6385:  0: aaaa
                   6386:     a
                   6387:  0: a
                   6388: 
                   6389: /a*b{0,4}\w/
                   6390:     aaabbbb
                   6391:  0: aaabbbb
                   6392:     aaaa
                   6393:  0: aaaa
                   6394:     a
                   6395:  0: a
                   6396: 
                   6397: /a*b{0,}\w/
                   6398:     aaabbbb
                   6399:  0: aaabbbb
                   6400:     aaaa
                   6401:  0: aaaa
                   6402:     a
                   6403:  0: a
                   6404:     
                   6405: /a*\d*\w/
                   6406:     0a
                   6407:  0: 0a
                   6408:     a 
                   6409:  0: a
                   6410:     
                   6411: /a*b *\w/x
                   6412:     a 
                   6413:  0: a
                   6414: 
                   6415: /a*b#comment
                   6416:   *\w/x
                   6417:     a 
                   6418:  0: a
                   6419: 
                   6420: /a* b *\w/x
                   6421:     a 
                   6422:  0: a
                   6423: 
                   6424: /^\w+=.*(\\\n.*)*/
                   6425:     abc=xyz\\\npqr
                   6426:  0: abc=xyz\
                   6427: 
                   6428: /(?=(\w+))\1:/
                   6429:     abcd:
                   6430:  0: abcd:
                   6431:  1: abcd
                   6432: 
                   6433: /^(?=(\w+))\1:/
                   6434:     abcd:
                   6435:  0: abcd:
                   6436:  1: abcd
                   6437: 
                   6438: /^\Eabc/
                   6439:     abc
                   6440:  0: abc
                   6441:     
                   6442: /^[\Eabc]/
                   6443:     a
                   6444:  0: a
                   6445:     ** Failers 
                   6446: No match
                   6447:     E 
                   6448: No match
                   6449:     
                   6450: /^[a-\Ec]/
                   6451:     b
                   6452:  0: b
                   6453:     ** Failers
                   6454: No match
                   6455:     -
                   6456: No match
                   6457:     E    
                   6458: No match
                   6459: 
                   6460: /^[a\E\E-\Ec]/
                   6461:     b
                   6462:  0: b
                   6463:     ** Failers
                   6464: No match
                   6465:     -
                   6466: No match
                   6467:     E    
                   6468: No match
                   6469: 
                   6470: /^[\E\Qa\E-\Qz\E]+/
                   6471:     b
                   6472:  0: b
                   6473:     ** Failers
                   6474: No match
                   6475:     -  
                   6476: No match
                   6477:     
                   6478: /^[a\Q]bc\E]/
                   6479:     a
                   6480:  0: a
                   6481:     ]
                   6482:  0: ]
                   6483:     c
                   6484:  0: c
                   6485:     
                   6486: /^[a-\Q\E]/
                   6487:     a
                   6488:  0: a
                   6489:     -     
                   6490:  0: -
                   6491: 
                   6492: /^(a()*)*/
                   6493:     aaaa
                   6494:  0: aaaa
                   6495:  1: a
                   6496:  2: 
                   6497: 
                   6498: /^(?:a(?:(?:))*)*/
                   6499:     aaaa
                   6500:  0: aaaa
                   6501: 
                   6502: /^(a()+)+/
                   6503:     aaaa
                   6504:  0: aaaa
                   6505:  1: a
                   6506:  2: 
                   6507: 
                   6508: /^(?:a(?:(?:))+)+/
                   6509:     aaaa
                   6510:  0: aaaa
                   6511: 
                   6512: /(a){0,3}(?(1)b|(c|))*D/
                   6513:     abbD
                   6514:  0: abbD
                   6515:  1: a
                   6516:     ccccD
                   6517:  0: ccccD
                   6518:  1: <unset>
                   6519:  2: 
                   6520:     D  
                   6521:  0: D
                   6522:  1: <unset>
                   6523:  2: 
                   6524: 
                   6525: /(a|)*\d/
                   6526:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   6527: No match
                   6528:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
                   6529:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
                   6530:  1: 
                   6531: 
                   6532: /(?>a|)*\d/
                   6533:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   6534: No match
                   6535:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
                   6536:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
                   6537: 
                   6538: /(?:a|)*\d/
                   6539:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   6540: No match
                   6541:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
                   6542:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
                   6543: 
                   6544: /\Z/g
                   6545:   abc\n
                   6546:  0: 
                   6547:  0: 
                   6548:   
                   6549: /^(?s)(?>.*)(?<!\n)/
                   6550:   abc
                   6551:  0: abc
                   6552:   abc\n  
                   6553: No match
                   6554: 
                   6555: /^(?![^\n]*\n\z)/
                   6556:   abc
                   6557:  0: 
                   6558:   abc\n 
                   6559: No match
                   6560:   
                   6561: /\z(?<!\n)/
                   6562:   abc
                   6563:  0: 
                   6564:   abc\n  
                   6565: No match
                   6566: 
                   6567: /(.*(.)?)*/
                   6568:     abcd
                   6569:  0: abcd
                   6570:  1: 
                   6571: 
                   6572: /( (A | (?(1)0|) )*   )/x
                   6573:     abcd
                   6574:  0: 
                   6575:  1: 
                   6576:  2: 
                   6577: 
                   6578: /( ( (?(1)0|) )*   )/x
                   6579:     abcd
                   6580:  0: 
                   6581:  1: 
                   6582:  2: 
                   6583: 
                   6584: /(  (?(1)0|)*   )/x
                   6585:     abcd
                   6586:  0: 
                   6587:  1: 
                   6588: 
                   6589: /[[:abcd:xyz]]/
                   6590:     a]
                   6591:  0: a]
                   6592:     :] 
                   6593:  0: :]
                   6594:     
                   6595: /[abc[:x\]pqr]/
                   6596:     a
                   6597:  0: a
                   6598:     [
                   6599:  0: [
                   6600:     :
                   6601:  0: :
                   6602:     ]
                   6603:  0: ]
                   6604:     p    
                   6605:  0: p
                   6606: 
                   6607: /.*[op][xyz]/
                   6608:     fooabcfoo
                   6609: No match
                   6610: 
                   6611: /(?(?=.*b)b|^)/
                   6612:    adc
                   6613:  0: 
                   6614:    abc 
                   6615:  0: b
                   6616: 
                   6617: /(?(?=^.*b)b|^)/
                   6618:    adc
                   6619:  0: 
                   6620:    abc 
                   6621: No match
                   6622: 
                   6623: /(?(?=.*b)b|^)*/
                   6624:    adc
                   6625:  0: 
                   6626:    abc 
                   6627:  0: 
                   6628: 
                   6629: /(?(?=.*b)b|^)+/
                   6630:    adc
                   6631:  0: 
                   6632:    abc 
                   6633:  0: b
                   6634: 
                   6635: /(?(?=b).*b|^d)/
                   6636:     abc
                   6637:  0: b
                   6638: 
                   6639: /(?(?=.*b).*b|^d)/
                   6640:     abc
                   6641:  0: ab
                   6642: 
                   6643: /^%((?(?=[a])[^%])|b)*%$/
                   6644:     %ab%
                   6645:  0: %ab%
                   6646:  1: 
                   6647: 
                   6648: /(?i)a(?-i)b|c/
                   6649:     XabX
                   6650:  0: ab
                   6651:     XAbX
                   6652:  0: Ab
                   6653:     CcC 
                   6654:  0: c
                   6655:     ** Failers
                   6656: No match
                   6657:     XABX   
                   6658: No match
                   6659: 
                   6660: /[\x00-\xff\s]+/
                   6661:     \x0a\x0b\x0c\x0d
                   6662:  0: \x0a\x0b\x0c\x0d
                   6663: 
                   6664: /^\c/
                   6665:     ?
                   6666:  0: ?
                   6667: 
                   6668: /(abc)\1/i
                   6669:    abc
                   6670: No match
                   6671: 
                   6672: /(abc)\1/
                   6673:    abc
                   6674: No match
                   6675: 
                   6676: /[^a]*/i
                   6677:     12abc
                   6678:  0: 12
                   6679:     12ABC
                   6680:  0: 12
                   6681: 
                   6682: /[^a]*+/i
                   6683:     12abc
                   6684:  0: 12
                   6685:     12ABC
                   6686:  0: 12
                   6687: 
                   6688: /[^a]*?X/i
                   6689:     ** Failers
                   6690: No match
                   6691:     12abc
                   6692: No match
                   6693:     12ABC
                   6694: No match
                   6695:     
                   6696: /[^a]+?X/i   
                   6697:     ** Failers
                   6698: No match
                   6699:     12abc
                   6700: No match
                   6701:     12ABC
                   6702: No match
                   6703: 
                   6704: /[^a]?X/i
                   6705:     12aXbcX
                   6706:  0: X
                   6707:     12AXBCX
                   6708:  0: X
                   6709:     BCX 
                   6710:  0: CX
                   6711: 
                   6712: /[^a]??X/i
                   6713:     12aXbcX
                   6714:  0: X
                   6715:     12AXBCX
                   6716:  0: X
                   6717:     BCX
                   6718:  0: CX
                   6719:     
                   6720: /[^a]?+X/i
                   6721:     12aXbcX
                   6722:  0: cX
                   6723:     12AXBCX
                   6724:  0: CX
                   6725:     BCX 
                   6726:  0: CX
                   6727: 
                   6728: /[^a]{2,3}/i
                   6729:     abcdef
                   6730:  0: bcd
                   6731:     ABCDEF  
                   6732:  0: BCD
                   6733: 
                   6734: /[^a]{2,3}?/i
                   6735:     abcdef
                   6736:  0: bc
                   6737:     ABCDEF  
                   6738:  0: BC
                   6739: 
                   6740: /[^a]{2,3}+/i
                   6741:     abcdef
                   6742:  0: bcd
                   6743:     ABCDEF  
                   6744:  0: BCD
                   6745: 
                   6746: /((a|)+)+Z/
                   6747:     Z
                   6748:  0: Z
                   6749:  1: 
                   6750:  2: 
                   6751: 
                   6752: /(a)b|(a)c/
                   6753:     ac
                   6754:  0: ac
                   6755:  1: <unset>
                   6756:  2: a
                   6757: 
                   6758: /(?>(a))b|(a)c/
                   6759:     ac
                   6760:  0: ac
                   6761:  1: <unset>
                   6762:  2: a
                   6763: 
                   6764: /(?=(a))ab|(a)c/
                   6765:     ac
                   6766:  0: ac
                   6767:  1: <unset>
                   6768:  2: a
                   6769: 
                   6770: /((?>(a))b|(a)c)/
                   6771:     ac
                   6772:  0: ac
                   6773:  1: ac
                   6774:  2: <unset>
                   6775:  3: a
                   6776: 
                   6777: /((?>(a))b|(a)c)++/
                   6778:     ac
                   6779:  0: ac
                   6780:  1: ac
                   6781:  2: <unset>
                   6782:  3: a
                   6783: 
                   6784: /(?:(?>(a))b|(a)c)++/
                   6785:     ac
                   6786:  0: ac
                   6787:  1: <unset>
                   6788:  2: a
                   6789: 
                   6790: /(?=(?>(a))b|(a)c)(..)/
                   6791:     ac
                   6792:  0: ac
                   6793:  1: <unset>
                   6794:  2: a
                   6795:  3: ac
                   6796: 
                   6797: /(?>(?>(a))b|(a)c)/
                   6798:     ac
                   6799:  0: ac
                   6800:  1: <unset>
                   6801:  2: a
                   6802: 
                   6803: /(?:(?>([ab])))+a=/+
                   6804:     =ba=
                   6805:  0: ba=
                   6806:  0+ 
                   6807:  1: b
                   6808: 
                   6809: /(?>([ab]))+a=/+
                   6810:     =ba=
                   6811:  0: ba=
                   6812:  0+ 
                   6813:  1: b
                   6814: 
                   6815: /((?>(a+)b)+(aabab))/
                   6816:     aaaabaaabaabab
                   6817:  0: aaaabaaabaabab
                   6818:  1: aaaabaaabaabab
                   6819:  2: aaa
                   6820:  3: aabab
                   6821: 
                   6822: /(?>a+|ab)+?c/
                   6823:     aabc
                   6824: No match
                   6825: 
                   6826: /(?>a+|ab)+c/
                   6827:     aabc
                   6828: No match
                   6829: 
                   6830: /(?:a+|ab)+c/
                   6831:     aabc
                   6832:  0: aabc
                   6833: 
                   6834: /(?(?=(a))a)/
                   6835:     a
                   6836:  0: a
                   6837:  1: a
                   6838: 
                   6839: /(?(?=(a))a)(b)/
                   6840:     ab
                   6841:  0: ab
                   6842:  1: a
                   6843:  2: b
                   6844: 
                   6845: /^(?:a|ab)++c/
                   6846:     aaaabc
                   6847: No match
                   6848: 
                   6849: /^(?>a|ab)++c/
                   6850:     aaaabc
                   6851: No match
                   6852: 
                   6853: /^(?:a|ab)+c/
                   6854:     aaaabc
                   6855:  0: aaaabc
                   6856: 
                   6857: /(?=abc){3}abc/+
                   6858:     abcabcabc
                   6859:  0: abc
                   6860:  0+ abcabc
                   6861:     ** Failers
                   6862: No match
                   6863:     xyz  
                   6864: No match
                   6865:     
                   6866: /(?=abc)+abc/+
                   6867:     abcabcabc
                   6868:  0: abc
                   6869:  0+ abcabc
                   6870:     ** Failers
                   6871: No match
                   6872:     xyz  
                   6873: No match
                   6874:     
                   6875: /(?=abc)++abc/+
                   6876:     abcabcabc
                   6877:  0: abc
                   6878:  0+ abcabc
                   6879:     ** Failers
                   6880: No match
                   6881:     xyz  
                   6882: No match
                   6883:     
                   6884: /(?=abc){0}xyz/
                   6885:     xyz 
                   6886:  0: xyz
                   6887: 
                   6888: /(?=abc){1}xyz/
                   6889:     ** Failers
                   6890: No match
                   6891:     xyz 
                   6892: No match
                   6893:     
                   6894: /(?=(a))?./
                   6895:     ab
                   6896:  0: a
                   6897:  1: a
                   6898:     bc
                   6899:  0: b
                   6900:       
                   6901: /(?=(a))??./
                   6902:     ab
                   6903:  0: a
                   6904:     bc
                   6905:  0: b
                   6906: 
                   6907: /^(?=(a)){0}b(?1)/
                   6908:     backgammon
                   6909:  0: ba
                   6910: 
                   6911: /^(?=(?1))?[az]([abc])d/
                   6912:     abd 
                   6913:  0: abd
                   6914:  1: b
                   6915:     zcdxx 
                   6916:  0: zcd
                   6917:  1: c
                   6918: 
                   6919: /^(?!a){0}\w+/
                   6920:     aaaaa
                   6921:  0: aaaaa
                   6922: 
                   6923: /(?<=(abc))?xyz/
                   6924:     abcxyz
                   6925:  0: xyz
                   6926:  1: abc
                   6927:     pqrxyz 
                   6928:  0: xyz
                   6929: 
                   6930: /^[\g<a>]+/
                   6931:     ggg<<<aaa>>>
                   6932:  0: ggg<<<aaa>>>
                   6933:     ** Failers
                   6934: No match
                   6935:     \\ga  
                   6936: No match
                   6937:     
                   6938: /^[\ga]+/
                   6939:     gggagagaxyz 
                   6940:  0: gggagaga
                   6941:     
                   6942: /^[:a[:digit:]]+/
                   6943:     aaaa444:::Z 
                   6944:  0: aaaa444:::
                   6945: 
                   6946: /^[:a[:digit:]:b]+/
                   6947:     aaaa444:::bbbZ 
                   6948:  0: aaaa444:::bbb
                   6949: 
                   6950: /[:a]xxx[b:]/
                   6951:      :xxx:
                   6952:  0: :xxx:
                   6953:      
                   6954: /(?<=a{2})b/i
                   6955:     xaabc
                   6956:  0: b
                   6957:     ** Failers
                   6958: No match
                   6959:     xabc  
                   6960: No match
                   6961: 
                   6962: /(?<!a{2})b/i
                   6963:     xabc
                   6964:  0: b
                   6965:     ** Failers
                   6966: No match
                   6967:     xaabc  
                   6968: No match
                   6969: 
                   6970: /(?<=a\h)c/
                   6971:     xa c
                   6972:  0: c
                   6973:     
                   6974: /(?<=[^a]{2})b/
                   6975:     axxbc
                   6976:  0: b
                   6977:     aAAbc 
                   6978:  0: b
                   6979:     ** Failers
                   6980: No match
                   6981:     xaabc    
                   6982: No match
                   6983: 
                   6984: /(?<=[^a]{2})b/i
                   6985:     axxbc  
                   6986:  0: b
                   6987:     ** Failers
                   6988: No match
                   6989:     aAAbc 
                   6990: No match
                   6991:     xaabc    
                   6992: No match
                   6993: 
                   6994: /(?<=a\H)c/
                   6995:     abc
                   6996:  0: c
                   6997: 
                   6998: /(?<=a\V)c/
                   6999:     abc
                   7000:  0: c
                   7001:     
                   7002: /(?<=a\v)c/
                   7003:     a\nc
                   7004:  0: c
                   7005: 
                   7006: /(?(?=c)c|d)++Y/
                   7007:     XcccddYX
                   7008:  0: cccddY
                   7009: 
                   7010: /(?(?=c)c|d)*+Y/
                   7011:     XcccddYX
                   7012:  0: cccddY
                   7013: 
                   7014: /^(a{2,3}){2,}+a/
                   7015:     aaaaaaa
                   7016:  0: aaaaaaa
                   7017:  1: aaa
                   7018:     ** Failers
                   7019: No match
                   7020:     aaaaaa
                   7021: No match
                   7022:     aaaaaaaaa 
                   7023: No match
                   7024: 
                   7025: /^(a{2,3})++a/
                   7026:     ** Failers
                   7027: No match
                   7028:     aaaaaa
                   7029: No match
                   7030: 
                   7031: /^(a{2,3})*+a/
                   7032:     ** Failers
                   7033: No match
                   7034:     aaaaaa
                   7035: No match
                   7036: 
                   7037: /ab\Cde/
                   7038:     abXde
                   7039:  0: abXde
                   7040:     
                   7041: /(?<=ab\Cde)X/
                   7042:     abZdeX
                   7043:  0: X
                   7044: 
                   7045: /a[\CD]b/
                   7046:     aCb
                   7047:  0: aCb
                   7048:     aDb 
                   7049:  0: aDb
                   7050: 
                   7051: /a[\C-X]b/
                   7052:     aJb
                   7053:  0: aJb
                   7054: 
1.1.1.2   misho    7055: /\H\h\V\v/
                   7056:     X X\x0a
                   7057:  0: X X\x0a
                   7058:     X\x09X\x0b
                   7059:  0: X\x09X\x0b
                   7060:     ** Failers
                   7061: No match
                   7062:     \xa0 X\x0a   
                   7063: No match
                   7064:     
                   7065: /\H*\h+\V?\v{3,4}/ 
                   7066:     \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
                   7067:  0: \x09 \xa0X\x0a\x0b\x0c\x0d
                   7068:     \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
                   7069:  0: \x09 \xa0\x0a\x0b\x0c\x0d
                   7070:     \x09\x20\xa0\x0a\x0b\x0c
                   7071:  0: \x09 \xa0\x0a\x0b\x0c
                   7072:     ** Failers 
                   7073: No match
                   7074:     \x09\x20\xa0\x0a\x0b
                   7075: No match
                   7076:      
                   7077: /\H{3,4}/
                   7078:     XY  ABCDE
                   7079:  0: ABCD
                   7080:     XY  PQR ST 
                   7081:  0: PQR
                   7082:     
                   7083: /.\h{3,4}./
                   7084:     XY  AB    PQRS
                   7085:  0: B    P
                   7086: 
                   7087: /\h*X\h?\H+Y\H?Z/
                   7088:     >XNNNYZ
                   7089:  0: XNNNYZ
                   7090:     >  X NYQZ
                   7091:  0:   X NYQZ
                   7092:     ** Failers
                   7093: No match
                   7094:     >XYZ   
                   7095: No match
                   7096:     >  X NY Z
                   7097: No match
                   7098: 
                   7099: /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
                   7100:     >XY\x0aZ\x0aA\x0bNN\x0c
                   7101:  0: XY\x0aZ\x0aA\x0bNN\x0c
                   7102:     >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
                   7103:  0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
                   7104: 
                   7105: /(foo)\Kbar/
                   7106:     foobar
                   7107:  0: bar
                   7108:  1: foo
                   7109:    
                   7110: /(foo)(\Kbar|baz)/
                   7111:     foobar
                   7112:  0: bar
                   7113:  1: foo
                   7114:  2: bar
                   7115:     foobaz 
                   7116:  0: foobaz
                   7117:  1: foo
                   7118:  2: baz
                   7119: 
                   7120: /(foo\Kbar)baz/
                   7121:     foobarbaz
                   7122:  0: barbaz
                   7123:  1: foobar
                   7124: 
                   7125: /abc\K|def\K/g+
                   7126:     Xabcdefghi
                   7127:  0: 
                   7128:  0+ defghi
                   7129:  0: 
                   7130:  0+ ghi
                   7131: 
                   7132: /ab\Kc|de\Kf/g+
                   7133:     Xabcdefghi
                   7134:  0: c
                   7135:  0+ defghi
                   7136:  0: f
                   7137:  0+ ghi
                   7138:     
                   7139: /(?=C)/g+
                   7140:     ABCDECBA
                   7141:  0: 
                   7142:  0+ CDECBA
                   7143:  0: 
                   7144:  0+ CBA
                   7145:     
                   7146: /^abc\K/+
                   7147:     abcdef
                   7148:  0: 
                   7149:  0+ def
                   7150:     ** Failers
                   7151: No match
                   7152:     defabcxyz   
                   7153: No match
                   7154: 
                   7155: /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
                   7156:     ababababbbabZXXXX
                   7157:  0: ababababbbabZ
                   7158:  1: ab
                   7159:  2: b
                   7160: 
                   7161: /(?<A>tom|bon)-\g{A}/
                   7162:     tom-tom
                   7163:  0: tom-tom
                   7164:  1: tom
                   7165:     bon-bon 
                   7166:  0: bon-bon
                   7167:  1: bon
                   7168:     
                   7169: /(^(a|b\g{-1}))/
                   7170:     bacxxx
                   7171: No match
                   7172: 
                   7173: /(?|(abc)|(xyz))\1/
                   7174:     abcabc
                   7175:  0: abcabc
                   7176:  1: abc
                   7177:     xyzxyz 
                   7178:  0: xyzxyz
                   7179:  1: xyz
                   7180:     ** Failers
                   7181: No match
                   7182:     abcxyz
                   7183: No match
                   7184:     xyzabc   
                   7185: No match
                   7186:     
                   7187: /(?|(abc)|(xyz))(?1)/
                   7188:     abcabc
                   7189:  0: abcabc
                   7190:  1: abc
                   7191:     xyzabc 
                   7192:  0: xyzabc
                   7193:  1: xyz
                   7194:     ** Failers 
                   7195: No match
                   7196:     xyzxyz 
                   7197: No match
                   7198:  
                   7199: /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
                   7200:     XYabcdY
                   7201:  0: XYabcdY
                   7202:  1: a
                   7203:  2: b
                   7204:  3: c
                   7205:  4: d
                   7206:  5: Y
                   7207: 
                   7208: /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
                   7209:     XYabcdY
                   7210:  0: XYabcdY
                   7211:  1: a
                   7212:  2: b
                   7213:  3: <unset>
                   7214:  4: <unset>
                   7215:  5: c
                   7216:  6: d
                   7217:  7: Y
                   7218: 
                   7219: /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
                   7220:     XYabcdY
                   7221:  0: XYabcdY
                   7222:  1: a
                   7223:  2: b
                   7224:  3: <unset>
                   7225:  4: <unset>
                   7226:  5: c
                   7227:  6: d
                   7228:  7: Y
                   7229: 
                   7230: /(?'abc'\w+):\k<abc>{2}/
                   7231:     a:aaxyz
                   7232:  0: a:aa
                   7233:  1: a
                   7234:     ab:ababxyz
                   7235:  0: ab:abab
                   7236:  1: ab
                   7237:     ** Failers
                   7238: No match
                   7239:     a:axyz
                   7240: No match
                   7241:     ab:abxyz
                   7242: No match
                   7243: 
                   7244: /(?'abc'\w+):\g{abc}{2}/
                   7245:     a:aaxyz
                   7246:  0: a:aa
                   7247:  1: a
                   7248:     ab:ababxyz
                   7249:  0: ab:abab
                   7250:  1: ab
                   7251:     ** Failers
                   7252: No match
                   7253:     a:axyz
                   7254: No match
                   7255:     ab:abxyz
                   7256: No match
                   7257: 
                   7258: /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
                   7259:     abd
                   7260:  0: abd
                   7261:  1: a
                   7262:     ce
                   7263:  0: ce
                   7264: 
                   7265: /^(a.)\g-1Z/
                   7266:     aXaXZ
                   7267:  0: aXaXZ
                   7268:  1: aX
                   7269: 
                   7270: /^(a.)\g{-1}Z/
                   7271:     aXaXZ
                   7272:  0: aXaXZ
                   7273:  1: aX
                   7274: 
                   7275: /^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /x
                   7276:     abcd
                   7277:  0: ab
                   7278: 
                   7279: /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
                   7280:   (?(DEFINE)
                   7281:   (?<NAME_PAT>[a-z]+)
                   7282:   (?<ADDRESS_PAT>\d+)
                   7283:   )/x
                   7284:     metcalfe 33
                   7285:  0: metcalfe 33
                   7286:  1: metcalfe
                   7287:  2: 33
                   7288: 
                   7289: /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
                   7290:     1.2.3.4
                   7291:  0: 1.2.3.4
                   7292:  1: <unset>
                   7293:  2: .4
                   7294:     131.111.10.206
                   7295:  0: 131.111.10.206
                   7296:  1: <unset>
                   7297:  2: .206
                   7298:     10.0.0.0
                   7299:  0: 10.0.0.0
                   7300:  1: <unset>
                   7301:  2: .0
                   7302:     ** Failers
                   7303: No match
                   7304:     10.6
                   7305: No match
                   7306:     455.3.4.5
                   7307: No match
                   7308: 
                   7309: /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
                   7310:     1.2.3.4
                   7311:  0: 1.2.3.4
                   7312:  1: .4
                   7313:     131.111.10.206
                   7314:  0: 131.111.10.206
                   7315:  1: .206
                   7316:     10.0.0.0
                   7317:  0: 10.0.0.0
                   7318:  1: .0
                   7319:     ** Failers
                   7320: No match
                   7321:     10.6
                   7322: No match
                   7323:     455.3.4.5
                   7324: No match
                   7325: 
                   7326: /^(\w++|\s++)*$/
                   7327:     now is the time for all good men to come to the aid of the party
                   7328:  0: now is the time for all good men to come to the aid of the party
                   7329:  1: party
                   7330:     *** Failers
                   7331: No match
                   7332:     this is not a line with only words and spaces!
                   7333: No match
                   7334: 
                   7335: /(\d++)(\w)/
                   7336:     12345a
                   7337:  0: 12345a
                   7338:  1: 12345
                   7339:  2: a
                   7340:     *** Failers
                   7341: No match
                   7342:     12345+
                   7343: No match
                   7344: 
                   7345: /a++b/
                   7346:     aaab
                   7347:  0: aaab
                   7348: 
                   7349: /(a++b)/
                   7350:     aaab
                   7351:  0: aaab
                   7352:  1: aaab
                   7353: 
                   7354: /(a++)b/
                   7355:     aaab
                   7356:  0: aaab
                   7357:  1: aaa
                   7358: 
                   7359: /([^()]++|\([^()]*\))+/
                   7360:     ((abc(ade)ufh()()x
                   7361:  0: abc(ade)ufh()()x
                   7362:  1: x
                   7363: 
                   7364: /\(([^()]++|\([^()]+\))+\)/
                   7365:     (abc)
                   7366:  0: (abc)
                   7367:  1: abc
                   7368:     (abc(def)xyz)
                   7369:  0: (abc(def)xyz)
                   7370:  1: xyz
                   7371:     *** Failers
                   7372: No match
                   7373:     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   7374: No match
                   7375: 
                   7376: /^([^()]|\((?1)*\))*$/
                   7377:     abc
                   7378:  0: abc
                   7379:  1: c
                   7380:     a(b)c
                   7381:  0: a(b)c
                   7382:  1: c
                   7383:     a(b(c))d
                   7384:  0: a(b(c))d
                   7385:  1: d
                   7386:     *** Failers)
                   7387: No match
                   7388:     a(b(c)d
                   7389: No match
                   7390: 
                   7391: /^>abc>([^()]|\((?1)*\))*<xyz<$/
                   7392:    >abc>123<xyz<
                   7393:  0: >abc>123<xyz<
                   7394:  1: 3
                   7395:    >abc>1(2)3<xyz<
                   7396:  0: >abc>1(2)3<xyz<
                   7397:  1: 3
                   7398:    >abc>(1(2)3)<xyz<
                   7399:  0: >abc>(1(2)3)<xyz<
                   7400:  1: (1(2)3)
                   7401: 
                   7402: /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
                   7403:     1221
                   7404:  0: 1221
                   7405:  1: 1221
                   7406:  2: 1
                   7407:     Satanoscillatemymetallicsonatas
                   7408:  0: Satanoscillatemymetallicsonatas
                   7409:  1: <unset>
                   7410:  2: <unset>
                   7411:  3: Satanoscillatemymetallicsonatas
                   7412:  4: S
                   7413:     AmanaplanacanalPanama
                   7414:  0: AmanaplanacanalPanama
                   7415:  1: <unset>
                   7416:  2: <unset>
                   7417:  3: AmanaplanacanalPanama
                   7418:  4: A
                   7419:     AblewasIereIsawElba
                   7420:  0: AblewasIereIsawElba
                   7421:  1: <unset>
                   7422:  2: <unset>
                   7423:  3: AblewasIereIsawElba
                   7424:  4: A
                   7425:     *** Failers
                   7426: No match
                   7427:     Thequickbrownfox
                   7428: No match
                   7429: 
                   7430: /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
                   7431:     12
                   7432:  0: 12
                   7433:  1: 12
                   7434:     (((2+2)*-3)-7)
                   7435:  0: (((2+2)*-3)-7)
                   7436:  1: (((2+2)*-3)-7)
                   7437:  2: -
                   7438:     -12
                   7439:  0: -12
                   7440:  1: -12
                   7441:     *** Failers
                   7442: No match
                   7443:     ((2+2)*-3)-7)
                   7444: No match
                   7445: 
                   7446: /^(x(y|(?1){2})z)/
                   7447:     xyz
                   7448:  0: xyz
                   7449:  1: xyz
                   7450:  2: y
                   7451:     xxyzxyzz
                   7452:  0: xxyzxyzz
                   7453:  1: xxyzxyzz
                   7454:  2: xyzxyz
                   7455:     *** Failers
                   7456: No match
                   7457:     xxyzz
                   7458: No match
                   7459:     xxyzxyzxyzz
                   7460: No match
                   7461: 
                   7462: /((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/x
                   7463:     <>
                   7464:  0: <>
                   7465:  1: <>
                   7466:  2: <>
                   7467:     <abcd>
                   7468:  0: <abcd>
                   7469:  1: <abcd>
                   7470:  2: <abcd>
                   7471:     <abc <123> hij>
                   7472:  0: <abc <123> hij>
                   7473:  1: <abc <123> hij>
                   7474:  2: <abc <123> hij>
                   7475:     <abc <def> hij>
                   7476:  0: <def>
                   7477:  1: <def>
                   7478:  2: <def>
                   7479:     <abc<>def>
                   7480:  0: <abc<>def>
                   7481:  1: <abc<>def>
                   7482:  2: <abc<>def>
                   7483:     <abc<>
                   7484:  0: <>
                   7485:  1: <>
                   7486:  2: <>
                   7487:     *** Failers
                   7488: No match
                   7489:     <abc
                   7490: No match
                   7491: 
                   7492: /^a+(*FAIL)/
                   7493:     aaaaaa
                   7494: No match
                   7495:     
                   7496: /a+b?c+(*FAIL)/
                   7497:     aaabccc
                   7498: No match
                   7499: 
                   7500: /a+b?(*PRUNE)c+(*FAIL)/
                   7501:     aaabccc
                   7502: No match
                   7503: 
                   7504: /a+b?(*COMMIT)c+(*FAIL)/
                   7505:     aaabccc
                   7506: No match
                   7507:     
                   7508: /a+b?(*SKIP)c+(*FAIL)/
                   7509:     aaabcccaaabccc
                   7510: No match
                   7511: 
                   7512: /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
                   7513:     aaaxxxxxx
                   7514:  0: aaaxxxxxx
                   7515:     aaa++++++ 
                   7516:  0: aaa
                   7517:     bbbxxxxx
                   7518:  0: bbbxxxxx
                   7519:     bbb+++++ 
                   7520:  0: bbb
                   7521:     cccxxxx
                   7522:  0: cccxxxx
                   7523:     ccc++++ 
                   7524:  0: ccc
                   7525:     dddddddd   
                   7526:  0: ddd
                   7527: 
                   7528: /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
                   7529:     aaaxxxxxx
                   7530:  0: aaaxxxxxx
                   7531:  1: aaaxxxxxx
                   7532:     aaa++++++ 
                   7533:  0: aaa
                   7534:  1: aaa
                   7535:     bbbxxxxx
                   7536:  0: bbbxxxxx
                   7537:  1: bbbxxxxx
                   7538:     bbb+++++ 
                   7539:  0: bbb
                   7540:  1: bbb
                   7541:     cccxxxx
                   7542:  0: cccxxxx
                   7543:  1: cccxxxx
                   7544:     ccc++++ 
                   7545:  0: ccc
                   7546:  1: ccc
                   7547:     dddddddd   
                   7548:  0: ddd
                   7549:  1: ddd
                   7550: 
                   7551: /a+b?(*THEN)c+(*FAIL)/
                   7552:     aaabccc
                   7553: No match
                   7554: 
                   7555: /(A (A|B(*ACCEPT)|C) D)(E)/x
                   7556:     AB
                   7557:  0: AB
                   7558:  1: AB
                   7559:  2: B
                   7560:     ABX
                   7561:  0: AB
                   7562:  1: AB
                   7563:  2: B
                   7564:     AADE
                   7565:  0: AADE
                   7566:  1: AAD
                   7567:  2: A
                   7568:  3: E
                   7569:     ACDE
                   7570:  0: ACDE
                   7571:  1: ACD
                   7572:  2: C
                   7573:  3: E
                   7574:     ** Failers
                   7575: No match
                   7576:     AD 
                   7577: No match
                   7578:         
                   7579: /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
                   7580:     1221
                   7581:  0: 1221
                   7582:  1: 1221
                   7583:  2: 1
                   7584:     Satan, oscillate my metallic sonatas!
                   7585:  0: Satan, oscillate my metallic sonatas!
                   7586:  1: <unset>
                   7587:  2: <unset>
                   7588:  3: Satan, oscillate my metallic sonatas
                   7589:  4: S
                   7590:     A man, a plan, a canal: Panama!
                   7591:  0: A man, a plan, a canal: Panama!
                   7592:  1: <unset>
                   7593:  2: <unset>
                   7594:  3: A man, a plan, a canal: Panama
                   7595:  4: A
                   7596:     Able was I ere I saw Elba.
                   7597:  0: Able was I ere I saw Elba.
                   7598:  1: <unset>
                   7599:  2: <unset>
                   7600:  3: Able was I ere I saw Elba
                   7601:  4: A
                   7602:     *** Failers
                   7603: No match
                   7604:     The quick brown fox
                   7605: No match
                   7606: 
                   7607: /^((.)(?1)\2|.)$/
                   7608:     a
                   7609:  0: a
                   7610:  1: a
                   7611:     aba
                   7612:  0: aba
                   7613:  1: aba
                   7614:  2: a
                   7615:     aabaa  
                   7616:  0: aabaa
                   7617:  1: aabaa
                   7618:  2: a
                   7619:     abcdcba 
                   7620:  0: abcdcba
                   7621:  1: abcdcba
                   7622:  2: a
                   7623:     pqaabaaqp  
                   7624:  0: pqaabaaqp
                   7625:  1: pqaabaaqp
                   7626:  2: p
                   7627:     ablewasiereisawelba
                   7628:  0: ablewasiereisawelba
                   7629:  1: ablewasiereisawelba
                   7630:  2: a
                   7631:     rhubarb
                   7632: No match
                   7633:     the quick brown fox  
                   7634: No match
                   7635: 
                   7636: /(a)(?<=b(?1))/
                   7637:     baz
                   7638:  0: a
                   7639:  1: a
                   7640:     ** Failers
                   7641: No match
                   7642:     caz  
                   7643: No match
                   7644:     
                   7645: /(?<=b(?1))(a)/
                   7646:     zbaaz
                   7647:  0: a
                   7648:  1: a
                   7649:     ** Failers
                   7650: No match
                   7651:     aaa  
                   7652: No match
                   7653:     
                   7654: /(?<X>a)(?<=b(?&X))/
                   7655:     baz
                   7656:  0: a
                   7657:  1: a
                   7658: 
                   7659: /^(?|(abc)|(def))\1/
                   7660:     abcabc
                   7661:  0: abcabc
                   7662:  1: abc
                   7663:     defdef 
                   7664:  0: defdef
                   7665:  1: def
                   7666:     ** Failers
                   7667: No match
                   7668:     abcdef
                   7669: No match
                   7670:     defabc   
                   7671: No match
                   7672:     
                   7673: /^(?|(abc)|(def))(?1)/
                   7674:     abcabc
                   7675:  0: abcabc
                   7676:  1: abc
                   7677:     defabc
                   7678:  0: defabc
                   7679:  1: def
                   7680:     ** Failers
                   7681: No match
                   7682:     defdef
                   7683: No match
                   7684:     abcdef    
                   7685: No match
                   7686: 
                   7687: /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ
                   7688:     a\"aaaaa
                   7689:  0: a"aaaaa
                   7690:  1: "
                   7691:  2: <unset>
                   7692:  3: "
                   7693:     b\"aaaaa 
                   7694:  0: b"aaaaa
                   7695:  1: <unset>
                   7696:  2: <unset>
                   7697:  3: <unset>
                   7698:  4: "
                   7699:  5: <unset>
                   7700:  6: "
                   7701:     ** Failers 
                   7702: No match
                   7703:     b\"11111
                   7704: No match
                   7705: 
                   7706: /(?:(?1)|B)(A(*F)|C)/
                   7707:     ABCD
                   7708:  0: BC
                   7709:  1: C
                   7710:     CCD
                   7711:  0: CC
                   7712:  1: C
                   7713:     ** Failers
                   7714: No match
                   7715:     CAD   
                   7716: No match
                   7717: 
                   7718: /^(?:(?1)|B)(A(*F)|C)/
                   7719:     CCD
                   7720:  0: CC
                   7721:  1: C
                   7722:     BCD 
                   7723:  0: BC
                   7724:  1: C
                   7725:     ** Failers
                   7726: No match
                   7727:     ABCD
                   7728: No match
                   7729:     CAD
                   7730: No match
                   7731:     BAD    
                   7732: No match
                   7733: 
                   7734: /(?:(?1)|B)(A(*ACCEPT)XX|C)D/
                   7735:     AAD
                   7736:  0: AA
                   7737:  1: A
                   7738:     ACD
                   7739:  0: ACD
                   7740:  1: C
                   7741:     BAD
                   7742:  0: BA
                   7743:  1: A
                   7744:     BCD
                   7745:  0: BCD
                   7746:  1: C
                   7747:     BAX  
                   7748:  0: BA
                   7749:  1: A
                   7750:     ** Failers
                   7751: No match
                   7752:     ACX
                   7753: No match
                   7754:     ABC   
                   7755: No match
                   7756: 
                   7757: /(?(DEFINE)(A))B(?1)C/
                   7758:     BAC
                   7759:  0: BAC
                   7760: 
                   7761: /(?(DEFINE)((A)\2))B(?1)C/
                   7762:     BAAC
                   7763:  0: BAAC
                   7764: 
                   7765: /(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
                   7766:     (ab(cd)ef)
                   7767:  0: (ab(cd)ef)
                   7768:  1: (ab(cd)ef)
                   7769:  2: ef
                   7770: 
                   7771: /^(?=a(*SKIP)b|ac)/
                   7772:     ** Failers
                   7773: No match
                   7774:     ac
                   7775: No match
                   7776:     
                   7777: /^(?=a(*PRUNE)b)/
                   7778:     ab  
                   7779:  0: 
                   7780:     ** Failers 
                   7781: No match
                   7782:     ac
                   7783: No match
                   7784: 
                   7785: /^(?=a(*ACCEPT)b)/
                   7786:     ac
                   7787:  0: 
                   7788: 
                   7789: /(?>a\Kb)/
                   7790:     ab
                   7791:  0: b
                   7792: 
                   7793: /((?>a\Kb))/
                   7794:     ab
                   7795:  0: b
                   7796:  1: ab
                   7797: 
                   7798: /(a\Kb)/
                   7799:     ab
                   7800:  0: b
                   7801:  1: ab
                   7802:     
                   7803: /^a\Kcz|ac/
                   7804:     ac
                   7805:  0: ac
                   7806:     
                   7807: /(?>a\Kbz|ab)/
                   7808:     ab 
                   7809:  0: ab
                   7810: 
                   7811: /^(?&t)(?(DEFINE)(?<t>a\Kb))$/
                   7812:     ab
                   7813:  0: b
                   7814: 
                   7815: /^([^()]|\((?1)*\))*$/
                   7816:     a(b)c
                   7817:  0: a(b)c
                   7818:  1: c
                   7819:     a(b(c)d)e 
                   7820:  0: a(b(c)d)e
                   7821:  1: e
                   7822: 
                   7823: /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
                   7824:     0
                   7825:  0: 0
                   7826:  1: 0
                   7827:     00
                   7828:  0: 00
                   7829:  1: 00
                   7830:  2: 0
                   7831:     0000  
                   7832:  0: 0000
                   7833:  1: 0000
                   7834:  2: 0
                   7835: 
                   7836: /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
                   7837:     0
                   7838:  0: 0
                   7839:  1: 0
                   7840:  2: 0
                   7841:     00
                   7842:  0: 0
                   7843:  1: 0
                   7844:  2: 0
                   7845:     0000  
                   7846:  0: 0
                   7847:  1: 0
                   7848:  2: 0
                   7849: 
                   7850: /--- This one does fail, as expected, in Perl. It needs the complex item at the
                   7851:      end of the pattern. A single letter instead of (B|D) makes it not fail,
                   7852:      which I think is a Perl bug. --- /
                   7853: 
                   7854: /A(*COMMIT)(B|D)/
                   7855:     ACABX
                   7856: No match
                   7857: 
                   7858: /--- Check the use of names for failure ---/
                   7859: 
                   7860: /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
                   7861:     ** Failers
                   7862: No match
                   7863:     AC
                   7864: No match, mark = A
                   7865:     CB    
                   7866: No match, mark = B
                   7867:     
                   7868: /--- Force no study, otherwise mark is not seen. The studied version is in
                   7869:      test 2 because it isn't Perl-compatible. ---/
                   7870: 
                   7871: /(*MARK:A)(*SKIP:B)(C|X)/KSS
                   7872:     C
                   7873:  0: C
                   7874:  1: C
                   7875: MK: A
                   7876:     D
                   7877: No match, mark = A
                   7878:      
                   7879: /^(A(*THEN:A)B|C(*THEN:B)D)/K
                   7880:     ** Failers
                   7881: No match
                   7882:     CB    
                   7883: No match, mark = B
                   7884: 
                   7885: /^(?:A(*THEN:A)B|C(*THEN:B)D)/K
                   7886:     CB    
                   7887: No match, mark = B
                   7888:     
                   7889: /^(?>A(*THEN:A)B|C(*THEN:B)D)/K
                   7890:     CB    
                   7891: No match, mark = B
                   7892:     
                   7893: /--- This should succeed, as the skip causes bump to offset 1 (the mark). Note
                   7894: that we have to have something complicated such as (B|Z) at the end because,
                   7895: for Perl, a simple character somehow causes an unwanted optimization to mess
                   7896: with the handling of backtracking verbs. ---/
                   7897: 
                   7898: /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
                   7899:     AAAC
                   7900:  0: AC
                   7901:     
                   7902: /--- Test skipping over a non-matching mark. ---/
                   7903: 
                   7904: /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
                   7905:     AAAC
                   7906:  0: AC
                   7907:     
                   7908: /--- Check shorthand for MARK ---/
                   7909: 
                   7910: /A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
                   7911:     AAAC
                   7912:  0: AC
                   7913: 
                   7914: /--- Don't loop! Force no study, otherwise mark is not seen. ---/
                   7915: 
                   7916: /(*:A)A+(*SKIP:A)(B|Z)/KSS
                   7917:     AAAC
                   7918: No match, mark = A
                   7919: 
                   7920: /--- This should succeed, as a non-existent skip name disables the skip ---/ 
                   7921: 
                   7922: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
                   7923:     AAAC
                   7924:  0: AC
                   7925: 
                   7926: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
                   7927:     AAAC
                   7928:  0: AC
                   7929: MK: B
                   7930: 
                   7931: /--- COMMIT at the start of a pattern should act like an anchor. Again, 
                   7932: however, we need the complication for Perl. ---/
                   7933: 
                   7934: /(*COMMIT)(A|P)(B|P)(C|P)/
                   7935:     ABCDEFG
                   7936:  0: ABC
                   7937:  1: A
                   7938:  2: B
                   7939:  3: C
                   7940:     ** Failers
                   7941: No match
                   7942:     DEFGABC  
                   7943: No match
                   7944: 
                   7945: /--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
                   7946: 
                   7947: /(\w+)(?>b(*COMMIT))\w{2}/
                   7948:     abbb
                   7949:  0: abbb
                   7950:  1: a
                   7951: 
                   7952: /(\w+)b(*COMMIT)\w{2}/
                   7953:     abbb
                   7954: No match
                   7955: 
                   7956: /--- Check opening parens in comment when seeking forward reference. ---/ 
                   7957: 
                   7958: /(?&t)(?#()(?(DEFINE)(?<t>a))/
                   7959:     bac
                   7960:  0: a
                   7961: 
                   7962: /--- COMMIT should override THEN ---/
                   7963: 
                   7964: /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
                   7965:   yes
                   7966: No match
                   7967: 
                   7968: /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
                   7969:   yes
                   7970: No match
                   7971: 
                   7972: /b?(*SKIP)c/
                   7973:     bc
                   7974:  0: bc
                   7975:     abc
                   7976:  0: bc
                   7977:    
                   7978: /(*SKIP)bc/
                   7979:     a
                   7980: No match
                   7981: 
                   7982: /(*SKIP)b/
                   7983:     a 
                   7984: No match
                   7985: 
                   7986: /(?P<abn>(?P=abn)xxx|)+/
                   7987:     xxx
                   7988:  0: 
                   7989:  1: 
                   7990: 
                   7991: /(?i:([^b]))(?1)/
                   7992:     aa
                   7993:  0: aa
                   7994:  1: a
                   7995:     aA     
                   7996:  0: aA
                   7997:  1: a
                   7998:     ** Failers
                   7999:  0: **
                   8000:  1: *
                   8001:     ab
                   8002: No match
                   8003:     aB
                   8004: No match
                   8005:     Ba
                   8006: No match
                   8007:     ba
                   8008: No match
                   8009: 
                   8010: /^(?&t)*+(?(DEFINE)(?<t>a))\w$/
                   8011:     aaaaaaX
                   8012:  0: aaaaaaX
                   8013:     ** Failers 
                   8014: No match
                   8015:     aaaaaa 
                   8016: No match
                   8017: 
                   8018: /^(?&t)*(?(DEFINE)(?<t>a))\w$/
                   8019:     aaaaaaX
                   8020:  0: aaaaaaX
                   8021:     aaaaaa 
                   8022:  0: aaaaaa
                   8023: 
                   8024: /^(a)*+(\w)/
                   8025:     aaaaX
                   8026:  0: aaaaX
                   8027:  1: a
                   8028:  2: X
                   8029:     YZ 
                   8030:  0: Y
                   8031:  1: <unset>
                   8032:  2: Y
                   8033:     ** Failers 
                   8034: No match
                   8035:     aaaa
                   8036: No match
                   8037: 
                   8038: /^(?:a)*+(\w)/
                   8039:     aaaaX
                   8040:  0: aaaaX
                   8041:  1: X
                   8042:     YZ 
                   8043:  0: Y
                   8044:  1: Y
                   8045:     ** Failers 
                   8046: No match
                   8047:     aaaa
                   8048: No match
                   8049: 
                   8050: /^(a)++(\w)/
                   8051:     aaaaX
                   8052:  0: aaaaX
                   8053:  1: a
                   8054:  2: X
                   8055:     ** Failers 
                   8056: No match
                   8057:     aaaa
                   8058: No match
                   8059:     YZ 
                   8060: No match
                   8061: 
                   8062: /^(?:a)++(\w)/
                   8063:     aaaaX
                   8064:  0: aaaaX
                   8065:  1: X
                   8066:     ** Failers 
                   8067: No match
                   8068:     aaaa
                   8069: No match
                   8070:     YZ 
                   8071: No match
                   8072: 
                   8073: /^(a)?+(\w)/
                   8074:     aaaaX
                   8075:  0: aa
                   8076:  1: a
                   8077:  2: a
                   8078:     YZ 
                   8079:  0: Y
                   8080:  1: <unset>
                   8081:  2: Y
                   8082: 
                   8083: /^(?:a)?+(\w)/
                   8084:     aaaaX
                   8085:  0: aa
                   8086:  1: a
                   8087:     YZ 
                   8088:  0: Y
                   8089:  1: Y
                   8090: 
                   8091: /^(a){2,}+(\w)/
                   8092:     aaaaX
                   8093:  0: aaaaX
                   8094:  1: a
                   8095:  2: X
                   8096:     ** Failers
                   8097: No match
                   8098:     aaa
                   8099: No match
                   8100:     YZ 
                   8101: No match
                   8102: 
                   8103: /^(?:a){2,}+(\w)/
                   8104:     aaaaX
                   8105:  0: aaaaX
                   8106:  1: X
                   8107:     ** Failers
                   8108: No match
                   8109:     aaa
                   8110: No match
                   8111:     YZ 
                   8112: No match
                   8113: 
                   8114: /(a|)*(?1)b/
                   8115:     b
                   8116:  0: b
                   8117:  1: 
                   8118:     ab
                   8119:  0: ab
                   8120:  1: 
                   8121:     aab  
                   8122:  0: aab
                   8123:  1: 
                   8124: 
                   8125: /(a)++(?1)b/
                   8126:     ** Failers
                   8127: No match
                   8128:     ab 
                   8129: No match
                   8130:     aab
                   8131: No match
                   8132: 
                   8133: /(a)*+(?1)b/
                   8134:     ** Failers
                   8135: No match
                   8136:     ab
                   8137: No match
                   8138:     aab  
                   8139: No match
                   8140: 
                   8141: /(?1)(?:(b)){0}/
                   8142:     b
                   8143:  0: b
                   8144: 
                   8145: /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
                   8146:     foo(bar(baz)+baz(bop))
                   8147:  0: foo(bar(baz)+baz(bop))
                   8148:  1: foo(bar(baz)+baz(bop))
                   8149:  2: (bar(baz)+baz(bop))
                   8150:  3: bar(baz)+baz(bop)
                   8151: 
                   8152: /(A (A|B(*ACCEPT)|C) D)(E)/x
                   8153:     AB
                   8154:  0: AB
                   8155:  1: AB
                   8156:  2: B
                   8157: 
                   8158: /\A.*?(a|bc)/
                   8159:     ba
                   8160:  0: ba
                   8161:  1: a
                   8162: 
                   8163: /\A.*?(?:a|bc)++/
                   8164:     ba
                   8165:  0: ba
                   8166: 
                   8167: /\A.*?(a|bc)++/
                   8168:     ba
                   8169:  0: ba
                   8170:  1: a
                   8171: 
                   8172: /\A.*?(?:a|bc|d)/
                   8173:     ba
                   8174:  0: ba
                   8175: 
                   8176: /(?:(b))++/
                   8177:     beetle
                   8178:  0: b
                   8179:  1: b
                   8180: 
                   8181: /(?(?=(a(*ACCEPT)z))a)/
                   8182:     a
                   8183:  0: a
                   8184:  1: a
                   8185: 
                   8186: /^(a)(?1)+ab/
                   8187:     aaaab
                   8188:  0: aaaab
                   8189:  1: a
                   8190:     
                   8191: /^(a)(?1)++ab/
                   8192:     aaaab
                   8193: No match
                   8194: 
                   8195: /^(?=a(*:M))aZ/K
                   8196:     aZbc
                   8197:  0: aZ
                   8198: MK: M
                   8199: 
                   8200: /^(?!(*:M)b)aZ/K
                   8201:     aZbc
                   8202:  0: aZ
                   8203: 
                   8204: /(?(DEFINE)(a))?b(?1)/
                   8205:     backgammon
                   8206:  0: ba
                   8207: 
                   8208: /^\N+/
                   8209:     abc\ndef
                   8210:  0: abc
                   8211:     
                   8212: /^\N{1,}/
                   8213:     abc\ndef 
                   8214:  0: abc
                   8215: 
                   8216: /(?(R)a+|(?R)b)/
                   8217:     aaaabcde
                   8218:  0: aaaab
                   8219: 
                   8220: /(?(R)a+|((?R))b)/
                   8221:     aaaabcde
                   8222:  0: aaaab
                   8223:  1: aaaa
                   8224: 
                   8225: /((?(R)a+|(?1)b))/
                   8226:     aaaabcde
                   8227:  0: aaaab
                   8228:  1: aaaab
                   8229: 
                   8230: /((?(R1)a+|(?1)b))/
                   8231:     aaaabcde
                   8232:  0: aaaab
                   8233:  1: aaaab
                   8234: 
                   8235: /a(*:any 
                   8236: name)/K
                   8237:     abc
                   8238:  0: a
                   8239: MK: any \x0aname
                   8240:     
                   8241: /(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
                   8242:     a
                   8243:  0: a
                   8244:     ba
                   8245:  0: a
                   8246:     bba 
                   8247:  0: a
                   8248:     
                   8249: /--- Checking revised (*THEN) handling ---/ 
                   8250: 
                   8251: /--- Capture ---/
                   8252: 
                   8253: /^.*? (a(*THEN)b) c/x
                   8254:     aabc
                   8255: No match
                   8256: 
                   8257: /^.*? (a(*THEN)b|(*F)) c/x
                   8258:     aabc
                   8259:  0: aabc
                   8260:  1: ab
                   8261: 
                   8262: /^.*? ( (a(*THEN)b) | (*F) ) c/x
                   8263:     aabc
                   8264:  0: aabc
                   8265:  1: ab
                   8266:  2: ab
                   8267: 
                   8268: /^.*? ( (a(*THEN)b) ) c/x
                   8269:     aabc
                   8270: No match
                   8271: 
                   8272: /--- Non-capture ---/
                   8273: 
                   8274: /^.*? (?:a(*THEN)b) c/x
                   8275:     aabc
                   8276: No match
                   8277: 
                   8278: /^.*? (?:a(*THEN)b|(*F)) c/x
                   8279:     aabc
                   8280:  0: aabc
                   8281: 
                   8282: /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
                   8283:     aabc
                   8284:  0: aabc
                   8285: 
                   8286: /^.*? (?: (?:a(*THEN)b) ) c/x
                   8287:     aabc
                   8288: No match
                   8289: 
                   8290: /--- Atomic ---/
                   8291: 
                   8292: /^.*? (?>a(*THEN)b) c/x
                   8293:     aabc
                   8294: No match
                   8295: 
                   8296: /^.*? (?>a(*THEN)b|(*F)) c/x
                   8297:     aabc
                   8298:  0: aabc
                   8299: 
                   8300: /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
                   8301:     aabc
                   8302:  0: aabc
                   8303: 
                   8304: /^.*? (?> (?>a(*THEN)b) ) c/x
                   8305:     aabc
                   8306: No match
                   8307: 
                   8308: /--- Possessive capture ---/
                   8309: 
                   8310: /^.*? (a(*THEN)b)++ c/x
                   8311:     aabc
                   8312: No match
                   8313: 
                   8314: /^.*? (a(*THEN)b|(*F))++ c/x
                   8315:     aabc
                   8316:  0: aabc
                   8317:  1: ab
                   8318: 
                   8319: /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
                   8320:     aabc
                   8321:  0: aabc
                   8322:  1: ab
                   8323:  2: ab
                   8324: 
                   8325: /^.*? ( (a(*THEN)b)++ )++ c/x
                   8326:     aabc
                   8327: No match
                   8328: 
                   8329: /--- Possessive non-capture ---/
                   8330: 
                   8331: /^.*? (?:a(*THEN)b)++ c/x
                   8332:     aabc
                   8333: No match
                   8334: 
                   8335: /^.*? (?:a(*THEN)b|(*F))++ c/x
                   8336:     aabc
                   8337:  0: aabc
                   8338: 
                   8339: /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
                   8340:     aabc
                   8341:  0: aabc
                   8342: 
                   8343: /^.*? (?: (?:a(*THEN)b)++ )++ c/x
                   8344:     aabc
                   8345: No match
                   8346:     
                   8347: /--- Condition assertion ---/
                   8348: 
                   8349: /^(?(?=a(*THEN)b)ab|ac)/
                   8350:     ac
                   8351:  0: ac
                   8352:  
                   8353: /--- Condition ---/
                   8354: 
                   8355: /^.*?(?(?=a)a|b(*THEN)c)/
                   8356:     ba
                   8357: No match
                   8358: 
                   8359: /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
                   8360:     ba
                   8361:  0: ba
                   8362: 
                   8363: /^.*?(?(?=a)a(*THEN)b|c)/
                   8364:     ac
                   8365: No match
                   8366: 
                   8367: /--- Assertion ---/
                   8368: 
                   8369: /^.*(?=a(*THEN)b)/ 
                   8370:     aabc
                   8371:  0: a
                   8372: 
                   8373: /------------------------------/
                   8374: 
                   8375: /(?>a(*:m))/imsxSK 
                   8376:     a
                   8377:  0: a
                   8378: MK: m
                   8379: 
                   8380: /(?>(a)(*:m))/imsxSK 
                   8381:     a
                   8382:  0: a
                   8383:  1: a
                   8384: MK: m
                   8385: 
                   8386: /(?<=a(*ACCEPT)b)c/
                   8387:     xacd
                   8388:  0: c
                   8389: 
                   8390: /(?<=(a(*ACCEPT)b))c/
                   8391:     xacd
                   8392:  0: c
                   8393:  1: a
                   8394: 
                   8395: /(?<=(a(*COMMIT)b))c/
                   8396:     xabcd
                   8397:  0: c
                   8398:  1: ab
                   8399:     ** Failers 
                   8400: No match
                   8401:     xacd
                   8402: No match
                   8403:     
                   8404: /(?<!a(*FAIL)b)c/
                   8405:     xcd
                   8406:  0: c
                   8407:     acd 
                   8408:  0: c
                   8409: 
                   8410: /(?<=a(*:N)b)c/K
                   8411:     xabcd
                   8412:  0: c
                   8413: MK: N
                   8414:     
                   8415: /(?<=a(*PRUNE)b)c/
                   8416:     xabcd 
                   8417:  0: c
                   8418: 
                   8419: /(?<=a(*SKIP)b)c/
                   8420:     xabcd 
                   8421:  0: c
                   8422: 
                   8423: /(?<=a(*THEN)b)c/
                   8424:     xabcd 
                   8425:  0: c
                   8426: 
                   8427: /(a)(?2){2}(.)/
                   8428:     abcd
                   8429:  0: abcd
                   8430:  1: a
                   8431:  2: d
                   8432: 
                   8433: /(*MARK:A)(*PRUNE:B)(C|X)/KS
                   8434:     C
                   8435:  0: C
                   8436:  1: C
                   8437: MK: B
                   8438:     D 
                   8439: No match, mark = B
                   8440: 
                   8441: /(*MARK:A)(*PRUNE:B)(C|X)/KSS
                   8442:     C
                   8443:  0: C
                   8444:  1: C
                   8445: MK: B
                   8446:     D 
                   8447: No match, mark = B
                   8448: 
                   8449: /(*MARK:A)(*THEN:B)(C|X)/KS
                   8450:     C
                   8451:  0: C
                   8452:  1: C
                   8453: MK: B
                   8454:     D 
                   8455: No match, mark = B
                   8456: 
                   8457: /(*MARK:A)(*THEN:B)(C|X)/KSY
                   8458:     C
                   8459:  0: C
                   8460:  1: C
                   8461: MK: B
                   8462:     D 
                   8463: No match, mark = B
                   8464: 
                   8465: /(*MARK:A)(*THEN:B)(C|X)/KSS
                   8466:     C
                   8467:  0: C
                   8468:  1: C
                   8469: MK: B
                   8470:     D 
                   8471: No match, mark = B
                   8472: 
                   8473: /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
                   8474: 
                   8475: /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
                   8476:     AAAC
                   8477: No match, mark = A
                   8478: 
                   8479: /--- Same --/
                   8480: 
                   8481: /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
                   8482:     AAAC
                   8483: No match, mark = B
                   8484: 
                   8485: /A(*:A)A+(*SKIP)(B|Z) | AC/xK
                   8486:     AAAC
                   8487: No match, mark = A
                   8488: 
                   8489: /--- This should fail, as a null name is the same as no name ---/
                   8490: 
                   8491: /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
                   8492:     AAAC
                   8493: No match, mark = A
                   8494: 
                   8495: /--- A check on what happens after hitting a mark and them bumping along to
                   8496: something that does not even start. Perl reports tags after the failures here, 
                   8497: though it does not when the individual letters are made into something 
                   8498: more complicated. ---/
                   8499: 
                   8500: /A(*:A)B|XX(*:B)Y/K
                   8501:     AABC
                   8502:  0: AB
                   8503: MK: A
                   8504:     XXYZ 
                   8505:  0: XXY
                   8506: MK: B
                   8507:     ** Failers
                   8508: No match
                   8509:     XAQQ  
                   8510: No match, mark = A
                   8511:     XAQQXZZ  
                   8512: No match, mark = A
                   8513:     AXQQQ 
                   8514: No match, mark = A
                   8515:     AXXQQQ 
                   8516: No match, mark = B
                   8517:     
                   8518: /^(A(*THEN:A)B|C(*THEN:B)D)/K
                   8519:     AB
                   8520:  0: AB
                   8521:  1: AB
                   8522: MK: A
                   8523:     CD
                   8524:  0: CD
                   8525:  1: CD
                   8526: MK: B
                   8527:     ** Failers
                   8528: No match
                   8529:     AC
                   8530: No match, mark = A
                   8531:     CB    
                   8532: No match, mark = B
                   8533:     
                   8534: /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
                   8535:     AB
                   8536:  0: AB
                   8537:  1: AB
                   8538: MK: A
                   8539:     CD
                   8540:  0: CD
                   8541:  1: CD
                   8542: MK: B
                   8543:     ** Failers
                   8544: No match
                   8545:     AC
                   8546: No match, mark = A
                   8547:     CB    
                   8548: No match, mark = B
                   8549:     
                   8550: /--- An empty name does not pass back an empty string. It is the same as if no
                   8551: name were given. ---/ 
                   8552: 
                   8553: /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
                   8554:     AB
                   8555:  0: AB
                   8556:  1: AB
                   8557:     CD 
                   8558:  0: CD
                   8559:  1: CD
                   8560: MK: B
                   8561: 
                   8562: /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
                   8563:     
                   8564: /A(*PRUNE:A)B/K
                   8565:     ACAB
                   8566:  0: AB
                   8567: MK: A
                   8568: 
                   8569: /--- Mark names can be duplicated ---/
                   8570: 
                   8571: /A(*:A)B|X(*:A)Y/K
                   8572:     AABC
                   8573:  0: AB
                   8574: MK: A
                   8575:     XXYZ 
                   8576:  0: XY
                   8577: MK: A
                   8578:     
                   8579: /b(*:m)f|a(*:n)w/K
                   8580:     aw 
                   8581:  0: aw
                   8582: MK: n
                   8583:     ** Failers 
                   8584: No match, mark = n
                   8585:     abc
                   8586: No match, mark = m
                   8587: 
                   8588: /b(*:m)f|aw/K
                   8589:     abaw
                   8590:  0: aw
                   8591:     ** Failers 
                   8592: No match
                   8593:     abc
                   8594: No match, mark = m
                   8595:     abax 
                   8596: No match, mark = m
                   8597: 
                   8598: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
                   8599:     AAAC
                   8600:  0: AAC
                   8601: 
                   8602: /a(*PRUNE:X)bc|qq/KY
                   8603:     ** Failers
                   8604: No match, mark = X
                   8605:     axy
                   8606: No match, mark = X
                   8607: 
                   8608: /a(*THEN:X)bc|qq/KY
                   8609:     ** Failers
                   8610: No match, mark = X
                   8611:     axy
                   8612: No match, mark = X
                   8613: 
                   8614: /(?=a(*MARK:A)b)..x/K
                   8615:     abxy
                   8616:  0: abx
                   8617: MK: A
                   8618:     ** Failers
                   8619: No match
                   8620:     abpq  
                   8621: No match
                   8622: 
                   8623: /(?=a(*MARK:A)b)..(*:Y)x/K
                   8624:     abxy
                   8625:  0: abx
                   8626: MK: Y
                   8627:     ** Failers
                   8628: No match
                   8629:     abpq  
                   8630: No match
                   8631: 
                   8632: /(?=a(*PRUNE:A)b)..x/K
                   8633:     abxy
                   8634:  0: abx
                   8635: MK: A
                   8636:     ** Failers
                   8637: No match
                   8638:     abpq  
                   8639: No match
                   8640: 
                   8641: /(?=a(*PRUNE:A)b)..(*:Y)x/K
                   8642:     abxy
                   8643:  0: abx
                   8644: MK: Y
                   8645:     ** Failers
                   8646: No match
                   8647:     abpq  
                   8648: No match
                   8649: 
                   8650: /(?=a(*THEN:A)b)..x/K
                   8651:     abxy
                   8652:  0: abx
                   8653: MK: A
                   8654:     ** Failers
                   8655: No match
                   8656:     abpq  
                   8657: No match
                   8658: 
                   8659: /(?=a(*THEN:A)b)..(*:Y)x/K
                   8660:     abxy
                   8661:  0: abx
                   8662: MK: Y
                   8663:     ** Failers
                   8664: No match
                   8665:     abpq  
                   8666: No match
                   8667: 
                   8668: /(another)?(\1?)test/
                   8669:     hello world test
                   8670:  0: test
                   8671:  1: <unset>
                   8672:  2: 
                   8673: 
                   8674: /(another)?(\1+)test/
                   8675:     hello world test
                   8676: No match
                   8677: 
1.1.1.3   misho    8678: /(a(*COMMIT)b){0}a(?1)|aac/
                   8679:     aac
                   8680:  0: aac
                   8681: 
                   8682: /((?:a?)*)*c/
                   8683:   aac   
                   8684:  0: aac
                   8685:  1: 
                   8686: 
                   8687: /((?>a?)*)*c/
                   8688:   aac   
                   8689:  0: aac
                   8690:  1: 
                   8691: 
1.1.1.4 ! misho    8692: /(?>.*?a)(?<=ba)/
        !          8693:     aba
        !          8694:  0: ba
        !          8695: 
        !          8696: /(?:.*?a)(?<=ba)/
        !          8697:     aba
        !          8698:  0: aba
        !          8699: 
        !          8700: /.*?a(*PRUNE)b/
        !          8701:     aab
        !          8702:  0: ab
        !          8703: 
        !          8704: /.*?a(*PRUNE)b/s
        !          8705:     aab
        !          8706:  0: ab
        !          8707: 
        !          8708: /^a(*PRUNE)b/s
        !          8709:     aab
        !          8710: No match
        !          8711: 
        !          8712: /.*?a(*SKIP)b/
        !          8713:     aab
        !          8714:  0: ab
        !          8715: 
        !          8716: /(?>.*?a)b/s
        !          8717:     aab
        !          8718:  0: ab
        !          8719: 
        !          8720: /(?>.*?a)b/
        !          8721:     aab
        !          8722:  0: ab
        !          8723: 
        !          8724: /(?>^a)b/s
        !          8725:     aab
        !          8726: No match
        !          8727: 
        !          8728: /(?>.*?)(?<=(abcd)|(wxyz))/
        !          8729:     alphabetabcd
        !          8730:  0: 
        !          8731:  1: abcd
        !          8732:     endingwxyz 
        !          8733:  0: 
        !          8734:  1: <unset>
        !          8735:  2: wxyz
        !          8736: 
        !          8737: /(?>.*)(?<=(abcd)|(wxyz))/
        !          8738:     alphabetabcd
        !          8739:  0: alphabetabcd
        !          8740:  1: abcd
        !          8741:     endingwxyz 
        !          8742:  0: endingwxyz
        !          8743:  1: <unset>
        !          8744:  2: wxyz
        !          8745: 
        !          8746: "(?>.*)foo"
        !          8747:     abcdfooxyz
        !          8748: No match
        !          8749:     
        !          8750: "(?>.*?)foo"
        !          8751:     abcdfooxyz
        !          8752:  0: foo
        !          8753: 
        !          8754: /(?:(a(*PRUNE)b)){0}(?:(?1)|ac)/
        !          8755:     ac
        !          8756:  0: ac
        !          8757:     
        !          8758: /(?:(a(*SKIP)b)){0}(?:(?1)|ac)/
        !          8759:     ac 
        !          8760:  0: ac
        !          8761: 
        !          8762: /(?<=(*SKIP)ac)a/
        !          8763:     aa
        !          8764: No match
        !          8765: 
        !          8766: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
        !          8767:     AAAC
        !          8768:  0: AC
        !          8769: 
        !          8770: /a(*SKIP:m)x|ac(*:n)(*SKIP:n)d|ac/K
        !          8771:     acacd
        !          8772:  0: acd
        !          8773: MK: n
        !          8774: 
        !          8775: /A(*SKIP:m)x|A(*SKIP:n)x|AB/K
        !          8776:     AB
        !          8777:  0: AB
        !          8778: 
        !          8779: /((*SKIP:r)d){0}a(*SKIP:m)x|ac(*:n)|ac/K
        !          8780:     acacd
        !          8781:  0: ac
        !          8782: MK: n
        !          8783: 
        !          8784: /-- Tests that try to figure out how Perl works. My hypothesis is that the
        !          8785:     first verb that is backtracked onto is the one that acts. This seems to be
        !          8786:     the case almost all the time, but there is one exception that is perhaps a 
        !          8787:     bug. --/
        !          8788: 
        !          8789: /-- This matches "aaaac"; each PRUNE advances one character until the subject
        !          8790:     no longer starts with 5 'a's. --/
        !          8791: 
        !          8792: /aaaaa(*PRUNE)b|a+c/
        !          8793:     aaaaaac
        !          8794:  0: aaaac
        !          8795: 
        !          8796: /-- Putting SKIP in front of PRUNE makes no difference, as it is never 
        !          8797: backtracked onto, whether or not it has a label. --/
        !          8798: 
        !          8799: /aaaaa(*SKIP)(*PRUNE)b|a+c/
        !          8800:     aaaaaac
        !          8801:  0: aaaac
        !          8802: 
        !          8803: /aaaaa(*SKIP:N)(*PRUNE)b|a+c/
        !          8804:     aaaaaac
        !          8805:  0: aaaac
        !          8806: 
        !          8807: /aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c/
        !          8808:     aaaaaac
        !          8809:  0: aaaac
        !          8810: 
        !          8811: /-- Putting THEN in front makes no difference. */
        !          8812:     
        !          8813: /aaaaa(*THEN)(*PRUNE)b|a+c/
        !          8814:     aaaaaac
        !          8815:  0: aaaac
        !          8816:  
        !          8817: /-- However, putting COMMIT in front of the prune changes it to "no match". I 
        !          8818:     think this is inconsistent and possibly a bug. For the moment, running this
        !          8819:     test is moved out of the Perl-compatible file. --/
        !          8820: 
        !          8821: /aaaaa(*COMMIT)(*PRUNE)b|a+c/
        !          8822:     
        !          8823: 
        !          8824: /---- OK, lets play the same game again using SKIP instead of PRUNE. ----/
        !          8825: 
        !          8826: /-- This matches "ac" because SKIP forces the next match to start on the
        !          8827:     sixth "a". --/
        !          8828: 
        !          8829: /aaaaa(*SKIP)b|a+c/
        !          8830:     aaaaaac
        !          8831:  0: ac
        !          8832:  
        !          8833: /-- Putting PRUNE in front makes no difference. --/
        !          8834: 
        !          8835: /aaaaa(*PRUNE)(*SKIP)b|a+c/
        !          8836:     aaaaaac
        !          8837:  0: ac
        !          8838: 
        !          8839: /-- Putting THEN in front makes no difference. --/
        !          8840: 
        !          8841: /aaaaa(*THEN)(*SKIP)b|a+c/
        !          8842:     aaaaaac
        !          8843:  0: ac
        !          8844: 
        !          8845: /-- In this case, neither does COMMIT. This still matches "ac". --/
        !          8846: 
        !          8847: /aaaaa(*COMMIT)(*SKIP)b|a+c/
        !          8848:     aaaaaac
        !          8849:  0: ac
        !          8850:     
        !          8851: /-- This gives "no match", as expected. --/
        !          8852: 
        !          8853: /aaaaa(*COMMIT)b|a+c/
        !          8854:     aaaaaac
        !          8855: No match
        !          8856:     
        !          8857: 
        !          8858: /------ Tests using THEN ------/
        !          8859: 
        !          8860: /-- This matches "aaaaaac", as expected. --/
        !          8861: 
        !          8862: /aaaaa(*THEN)b|a+c/
        !          8863:     aaaaaac
        !          8864:  0: aaaaaac
        !          8865: 
        !          8866: /-- Putting SKIP in front makes no difference. --/
        !          8867: 
        !          8868: /aaaaa(*SKIP)(*THEN)b|a+c/
        !          8869:     aaaaaac
        !          8870:  0: aaaaaac
        !          8871:     
        !          8872: /-- Putting PRUNE in front makes no difference. --/
        !          8873: 
        !          8874: /aaaaa(*PRUNE)(*THEN)b|a+c/
        !          8875:     aaaaaac
        !          8876:  0: aaaaaac
        !          8877:     
        !          8878: /-- Putting COMMIT in front makes no difference. --/
        !          8879: 
        !          8880: /aaaaa(*COMMIT)(*THEN)b|a+c/
        !          8881:     aaaaaac
        !          8882:  0: aaaaaac
        !          8883:     
        !          8884: /-- End of "priority" tests --/ 
        !          8885: 
        !          8886: /aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+/
        !          8887:     aaaaaa
        !          8888:  0: a
        !          8889: 
        !          8890: /aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
        !          8891:     aaaaaa
        !          8892:  0: a
        !          8893: 
        !          8894: /aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+/
        !          8895:     aaaaaa
        !          8896:  0: aaaa
        !          8897: 
        !          8898: /aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
        !          8899:     aaaaaa
        !          8900:  0: a
        !          8901: 
        !          8902: /a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c/
        !          8903:     aaaac
        !          8904:  0: aac
        !          8905: 
        !          8906: /a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c/
        !          8907:     aaaac
        !          8908:  0: ac
        !          8909: 
        !          8910: /aaa(*PRUNE:A)a(*SKIP:A)b|a+c/
        !          8911:     aaaac
        !          8912:  0: aac
        !          8913: 
        !          8914: /aaa(*MARK:A)a(*SKIP:A)b|a+c/
        !          8915:     aaaac
        !          8916:  0: ac
        !          8917: 
        !          8918: /a(*:m)a(*COMMIT)(*SKIP:m)b|a+c/K
        !          8919:     aaaaaac
        !          8920:  0: ac
        !          8921: 
        !          8922: /.?(a|b(*THEN)c)/
        !          8923:     ba
        !          8924:  0: ba
        !          8925:  1: a
        !          8926: 
        !          8927: /(a(*COMMIT)b)c|abd/
        !          8928:     abc
        !          8929:  0: abc
        !          8930:  1: ab
        !          8931:     abd
        !          8932: No match
        !          8933: 
        !          8934: /(?=a(*COMMIT)b)abc|abd/
        !          8935:     abc
        !          8936:  0: abc
        !          8937:     abd
        !          8938:  0: abd
        !          8939: 
        !          8940: /(?>a(*COMMIT)b)c|abd/
        !          8941:     abc
        !          8942:  0: abc
        !          8943:     abd
        !          8944:  0: abd
        !          8945: 
        !          8946: /a(?=b(*COMMIT)c)[^d]|abd/
        !          8947:     abd
        !          8948: No match
        !          8949:     abc 
        !          8950:  0: ab
        !          8951: 
        !          8952: /a(?=bc).|abd/
        !          8953:     abd
        !          8954:  0: abd
        !          8955:     abc 
        !          8956:  0: ab
        !          8957:     
        !          8958: /a(?>b(*COMMIT)c)d|abd/
        !          8959:     abceabd 
        !          8960: No match
        !          8961: 
        !          8962: /a(?>bc)d|abd/
        !          8963:     abceabd 
        !          8964:  0: abd
        !          8965: 
        !          8966: /(?>a(*COMMIT)b)c|abd/
        !          8967:     abd
        !          8968:  0: abd
        !          8969: 
        !          8970: /(?>a(*COMMIT)c)d|abd/
        !          8971:     abd
        !          8972: No match
        !          8973: 
        !          8974: /((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
        !          8975:     ac 
        !          8976:  0: ac
        !          8977:  1: <unset>
        !          8978:  2: c
        !          8979:     
        !          8980: /-- These tests were formerly in test 2, but changes in PCRE and Perl have
        !          8981:     made them compatible. --/
        !          8982:     
        !          8983: /^(a)?(?(1)a|b)+$/
        !          8984:     *** Failers
        !          8985: No match
        !          8986:     a
        !          8987: No match
        !          8988: 
        !          8989: /(?=a\Kb)ab/
        !          8990:     ab 
        !          8991:  0: b
        !          8992: 
        !          8993: /(?!a\Kb)ac/
        !          8994:     ac 
        !          8995:  0: ac
        !          8996:     
        !          8997: /^abc(?<=b\Kc)d/
        !          8998:     abcd
        !          8999:  0: cd
        !          9000: 
        !          9001: /^abc(?<!b\Kq)d/
        !          9002:     abcd
        !          9003:  0: abcd
        !          9004: 
        !          9005: 
        !          9006: /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
        !          9007:     AAAC
        !          9008: No match, mark = A
        !          9009: 
        !          9010: /^((abc|abcx)(*THEN)y|abcd)/
        !          9011:     abcd
        !          9012:  0: abcd
        !          9013:  1: abcd
        !          9014:     *** Failers 
        !          9015: No match
        !          9016:     abcxy 
        !          9017: No match
        !          9018:     
        !          9019: /^((yes|no)(*THEN)(*F))?/
        !          9020:   yes
        !          9021: No match
        !          9022: 
        !          9023: /(A (.*)   C? (*THEN)  | A D) (*FAIL)/x
        !          9024: AbcdCBefgBhiBqz
        !          9025: No match
        !          9026: 
        !          9027: /(A (.*)   C? (*THEN)  | A D) z/x
        !          9028: AbcdCBefgBhiBqz
        !          9029: No match
        !          9030: 
        !          9031: /(A (.*)   C? (*THEN)  | A D) \s* (*FAIL)/x
        !          9032: AbcdCBefgBhiBqz
        !          9033: No match
        !          9034: 
        !          9035: /(A (.*)   C? (*THEN)  | A D) \s* z/x
        !          9036: AbcdCBefgBhiBqz
        !          9037: No match
        !          9038: 
        !          9039: /(A (.*)   (?:C|) (*THEN)  | A D) (*FAIL)/x
        !          9040: AbcdCBefgBhiBqz
        !          9041: No match
        !          9042: 
        !          9043: /(A (.*)   (?:C|) (*THEN)  | A D) z/x
        !          9044: AbcdCBefgBhiBqz
        !          9045: No match
        !          9046: 
        !          9047: /(A (.*)   C{0,6} (*THEN)  | A D) (*FAIL)/x
        !          9048: AbcdCBefgBhiBqz
        !          9049: No match
        !          9050: 
        !          9051: /(A (.*)   C{0,6} (*THEN)  | A D) z/x
        !          9052: AbcdCBefgBhiBqz
        !          9053: No match
        !          9054: 
        !          9055: /(A (.*)   (CE){0,6} (*THEN)  | A D) (*FAIL)/x
        !          9056: AbcdCEBefgBhiBqz
        !          9057: No match
        !          9058: 
        !          9059: /(A (.*)   (CE){0,6} (*THEN)  | A D) z/x
        !          9060: AbcdCEBefgBhiBqz
        !          9061: No match
        !          9062: 
        !          9063: /(A (.*)   (CE*){0,6} (*THEN)  | A D) (*FAIL)/x
        !          9064: AbcdCBefgBhiBqz
        !          9065: No match
        !          9066: 
        !          9067: /(A (.*)   (CE*){0,6} (*THEN)  | A D) z/x
        !          9068: AbcdCBefgBhiBqz
        !          9069: No match
        !          9070: 
        !          9071: /(?=a(*COMMIT)b|ac)ac|ac/
        !          9072:     ac
        !          9073: No match
        !          9074: 
        !          9075: /(?=a(*COMMIT)b|(ac)) ac | (a)c/x
        !          9076:     ac
        !          9077: No match
        !          9078: 
        !          9079: /--------/
        !          9080: 
        !          9081: /(?(?!b(*THEN)a)bn|bnn)/
        !          9082:    bnn 
        !          9083:  0: bn
        !          9084: 
        !          9085: /(?!b(*SKIP)a)bn|bnn/
        !          9086:     bnn
        !          9087:  0: bn
        !          9088:     
        !          9089: /(?(?!b(*SKIP)a)bn|bnn)/
        !          9090:    bnn 
        !          9091:  0: bn
        !          9092: 
        !          9093: /(?!b(*PRUNE)a)bn|bnn/
        !          9094:     bnn
        !          9095:  0: bn
        !          9096:     
        !          9097: /(?(?!b(*PRUNE)a)bn|bnn)/
        !          9098:    bnn 
        !          9099:  0: bn
        !          9100:    
        !          9101: /(?!b(*COMMIT)a)bn|bnn/
        !          9102:     bnn
        !          9103:  0: bn
        !          9104:     
        !          9105: /(?(?!b(*COMMIT)a)bn|bnn)/
        !          9106:    bnn 
        !          9107:  0: bn
        !          9108: 
        !          9109: /(?=b(*SKIP)a)bn|bnn/
        !          9110:     bnn
        !          9111: No match
        !          9112: 
        !          9113: /(?=b(*THEN)a)bn|bnn/
        !          9114:     bnn
        !          9115:  0: bnn
        !          9116:     
        !          9117:  /^(?!a(*SKIP)b)/
        !          9118:      ac
        !          9119:  0: 
        !          9120: 
        !          9121:  /^(?!a(*SKIP)b)../
        !          9122:      acd
        !          9123:  0: ac
        !          9124: 
        !          9125: /(?!a(*SKIP)b)../
        !          9126:      acd
        !          9127:  0: ac
        !          9128: 
        !          9129: /^(?(?!a(*SKIP)b))/
        !          9130:      ac
        !          9131:  0: 
        !          9132: 
        !          9133: /^(?!a(*PRUNE)b)../
        !          9134:      acd
        !          9135:  0: ac
        !          9136: 
        !          9137: /(?!a(*PRUNE)b)../
        !          9138:      acd
        !          9139:  0: ac
        !          9140: 
        !          9141:  /(?!a(*COMMIT)b)ac|cd/
        !          9142:      ac
        !          9143:  0: ac
        !          9144: 
        !          9145: /\A.*?(?:a|bc)/
        !          9146:     ba
        !          9147:  0: ba
        !          9148: 
        !          9149: /^(A(*THEN)B|C(*THEN)D)/
        !          9150:     CD           
        !          9151:  0: CD
        !          9152:  1: CD
        !          9153: 
        !          9154: /(*:m(m)(?&y)(?(DEFINE)(?<y>b))/K
        !          9155:     abc
        !          9156:  0: b
        !          9157: MK: m(m
        !          9158: 
        !          9159: /(*PRUNE:m(m)(?&y)(?(DEFINE)(?<y>b))/K
        !          9160:     abc
        !          9161:  0: b
        !          9162: MK: m(m
        !          9163: 
        !          9164: /(*SKIP:m(m)(?&y)(?(DEFINE)(?<y>b))/K
        !          9165:     abc
        !          9166:  0: b
        !          9167: 
        !          9168: /(*THEN:m(m)(?&y)(?(DEFINE)(?<y>b))/K
        !          9169:     abc
        !          9170:  0: b
        !          9171: MK: m(m
        !          9172: 
        !          9173: /^\d*\w{4}/
        !          9174:     1234
        !          9175:  0: 1234
        !          9176:     123 
        !          9177: No match
        !          9178: 
        !          9179: /^[^b]*\w{4}/
        !          9180:     aaaa
        !          9181:  0: aaaa
        !          9182:     aaa     
        !          9183: No match
        !          9184: 
        !          9185: /^[^b]*\w{4}/i
        !          9186:     aaaa
        !          9187:  0: aaaa
        !          9188:     aaa     
        !          9189: No match
        !          9190: 
        !          9191: /^a*\w{4}/
        !          9192:     aaaa
        !          9193:  0: aaaa
        !          9194:     aaa     
        !          9195: No match
        !          9196: 
        !          9197: /^a*\w{4}/i
        !          9198:     aaaa
        !          9199:  0: aaaa
        !          9200:     aaa     
        !          9201: No match
        !          9202: 
1.1       misho    9203: /-- End of testinput1 --/

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