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

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

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