Annotation of embedaddon/pcre/testdata/testoutput11, revision 1.1

1.1     ! misho       1: /-- These tests are for the Perl >= 5.10 features that PCRE supports. --/
        !             2: 
        !             3: /\H\h\V\v/
        !             4:     X X\x0a
        !             5:  0: X X\x0a
        !             6:     X\x09X\x0b
        !             7:  0: X\x09X\x0b
        !             8:     ** Failers
        !             9: No match
        !            10:     \xa0 X\x0a   
        !            11: No match
        !            12:     
        !            13: /\H*\h+\V?\v{3,4}/ 
        !            14:     \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
        !            15:  0: \x09 \xa0X\x0a\x0b\x0c\x0d
        !            16:     \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
        !            17:  0: \x09 \xa0\x0a\x0b\x0c\x0d
        !            18:     \x09\x20\xa0\x0a\x0b\x0c
        !            19:  0: \x09 \xa0\x0a\x0b\x0c
        !            20:     ** Failers 
        !            21: No match
        !            22:     \x09\x20\xa0\x0a\x0b
        !            23: No match
        !            24:      
        !            25: /\H{3,4}/
        !            26:     XY  ABCDE
        !            27:  0: ABCD
        !            28:     XY  PQR ST 
        !            29:  0: PQR
        !            30:     
        !            31: /.\h{3,4}./
        !            32:     XY  AB    PQRS
        !            33:  0: B    P
        !            34: 
        !            35: /\h*X\h?\H+Y\H?Z/
        !            36:     >XNNNYZ
        !            37:  0: XNNNYZ
        !            38:     >  X NYQZ
        !            39:  0:   X NYQZ
        !            40:     ** Failers
        !            41: No match
        !            42:     >XYZ   
        !            43: No match
        !            44:     >  X NY Z
        !            45: No match
        !            46: 
        !            47: /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
        !            48:     >XY\x0aZ\x0aA\x0bNN\x0c
        !            49:  0: XY\x0aZ\x0aA\x0bNN\x0c
        !            50:     >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
        !            51:  0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
        !            52: 
        !            53: /(foo)\Kbar/
        !            54:     foobar
        !            55:  0: bar
        !            56:  1: foo
        !            57:    
        !            58: /(foo)(\Kbar|baz)/
        !            59:     foobar
        !            60:  0: bar
        !            61:  1: foo
        !            62:  2: bar
        !            63:     foobaz 
        !            64:  0: foobaz
        !            65:  1: foo
        !            66:  2: baz
        !            67: 
        !            68: /(foo\Kbar)baz/
        !            69:     foobarbaz
        !            70:  0: barbaz
        !            71:  1: foobar
        !            72: 
        !            73: /abc\K|def\K/g+
        !            74:     Xabcdefghi
        !            75:  0: 
        !            76:  0+ defghi
        !            77:  0: 
        !            78:  0+ ghi
        !            79: 
        !            80: /ab\Kc|de\Kf/g+
        !            81:     Xabcdefghi
        !            82:  0: c
        !            83:  0+ defghi
        !            84:  0: f
        !            85:  0+ ghi
        !            86:     
        !            87: /(?=C)/g+
        !            88:     ABCDECBA
        !            89:  0: 
        !            90:  0+ CDECBA
        !            91:  0: 
        !            92:  0+ CBA
        !            93:     
        !            94: /^abc\K/+
        !            95:     abcdef
        !            96:  0: 
        !            97:  0+ def
        !            98:     ** Failers
        !            99: No match
        !           100:     defabcxyz   
        !           101: No match
        !           102: 
        !           103: /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
        !           104:     ababababbbabZXXXX
        !           105:  0: ababababbbabZ
        !           106:  1: ab
        !           107:  2: b
        !           108: 
        !           109: /(?<A>tom|bon)-\g{A}/
        !           110:     tom-tom
        !           111:  0: tom-tom
        !           112:  1: tom
        !           113:     bon-bon 
        !           114:  0: bon-bon
        !           115:  1: bon
        !           116:     
        !           117: /(^(a|b\g{-1}))/
        !           118:     bacxxx
        !           119: No match
        !           120: 
        !           121: /(?|(abc)|(xyz))\1/
        !           122:     abcabc
        !           123:  0: abcabc
        !           124:  1: abc
        !           125:     xyzxyz 
        !           126:  0: xyzxyz
        !           127:  1: xyz
        !           128:     ** Failers
        !           129: No match
        !           130:     abcxyz
        !           131: No match
        !           132:     xyzabc   
        !           133: No match
        !           134:     
        !           135: /(?|(abc)|(xyz))(?1)/
        !           136:     abcabc
        !           137:  0: abcabc
        !           138:  1: abc
        !           139:     xyzabc 
        !           140:  0: xyzabc
        !           141:  1: xyz
        !           142:     ** Failers 
        !           143: No match
        !           144:     xyzxyz 
        !           145: No match
        !           146:  
        !           147: /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
        !           148:     XYabcdY
        !           149:  0: XYabcdY
        !           150:  1: a
        !           151:  2: b
        !           152:  3: c
        !           153:  4: d
        !           154:  5: Y
        !           155: 
        !           156: /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
        !           157:     XYabcdY
        !           158:  0: XYabcdY
        !           159:  1: a
        !           160:  2: b
        !           161:  3: <unset>
        !           162:  4: <unset>
        !           163:  5: c
        !           164:  6: d
        !           165:  7: Y
        !           166: 
        !           167: /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
        !           168:     XYabcdY
        !           169:  0: XYabcdY
        !           170:  1: a
        !           171:  2: b
        !           172:  3: <unset>
        !           173:  4: <unset>
        !           174:  5: c
        !           175:  6: d
        !           176:  7: Y
        !           177: 
        !           178: /(?'abc'\w+):\k<abc>{2}/
        !           179:     a:aaxyz
        !           180:  0: a:aa
        !           181:  1: a
        !           182:     ab:ababxyz
        !           183:  0: ab:abab
        !           184:  1: ab
        !           185:     ** Failers
        !           186: No match
        !           187:     a:axyz
        !           188: No match
        !           189:     ab:abxyz
        !           190: No match
        !           191: 
        !           192: /(?'abc'\w+):\g{abc}{2}/
        !           193:     a:aaxyz
        !           194:  0: a:aa
        !           195:  1: a
        !           196:     ab:ababxyz
        !           197:  0: ab:abab
        !           198:  1: ab
        !           199:     ** Failers
        !           200: No match
        !           201:     a:axyz
        !           202: No match
        !           203:     ab:abxyz
        !           204: No match
        !           205: 
        !           206: /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
        !           207:     abd
        !           208:  0: abd
        !           209:  1: a
        !           210:     ce
        !           211:  0: ce
        !           212: 
        !           213: /^(a.)\g-1Z/
        !           214:     aXaXZ
        !           215:  0: aXaXZ
        !           216:  1: aX
        !           217: 
        !           218: /^(a.)\g{-1}Z/
        !           219:     aXaXZ
        !           220:  0: aXaXZ
        !           221:  1: aX
        !           222: 
        !           223: /^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /x
        !           224:     abcd
        !           225:  0: ab
        !           226: 
        !           227: /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
        !           228:   (?(DEFINE)
        !           229:   (?<NAME_PAT>[a-z]+)
        !           230:   (?<ADDRESS_PAT>\d+)
        !           231:   )/x
        !           232:     metcalfe 33
        !           233:  0: metcalfe 33
        !           234:  1: metcalfe
        !           235:  2: 33
        !           236: 
        !           237: /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
        !           238:     1.2.3.4
        !           239:  0: 1.2.3.4
        !           240:  1: <unset>
        !           241:  2: .4
        !           242:     131.111.10.206
        !           243:  0: 131.111.10.206
        !           244:  1: <unset>
        !           245:  2: .206
        !           246:     10.0.0.0
        !           247:  0: 10.0.0.0
        !           248:  1: <unset>
        !           249:  2: .0
        !           250:     ** Failers
        !           251: No match
        !           252:     10.6
        !           253: No match
        !           254:     455.3.4.5
        !           255: No match
        !           256: 
        !           257: /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
        !           258:     1.2.3.4
        !           259:  0: 1.2.3.4
        !           260:  1: .4
        !           261:     131.111.10.206
        !           262:  0: 131.111.10.206
        !           263:  1: .206
        !           264:     10.0.0.0
        !           265:  0: 10.0.0.0
        !           266:  1: .0
        !           267:     ** Failers
        !           268: No match
        !           269:     10.6
        !           270: No match
        !           271:     455.3.4.5
        !           272: No match
        !           273: 
        !           274: /^(\w++|\s++)*$/
        !           275:     now is the time for all good men to come to the aid of the party
        !           276:  0: now is the time for all good men to come to the aid of the party
        !           277:  1: party
        !           278:     *** Failers
        !           279: No match
        !           280:     this is not a line with only words and spaces!
        !           281: No match
        !           282: 
        !           283: /(\d++)(\w)/
        !           284:     12345a
        !           285:  0: 12345a
        !           286:  1: 12345
        !           287:  2: a
        !           288:     *** Failers
        !           289: No match
        !           290:     12345+
        !           291: No match
        !           292: 
        !           293: /a++b/
        !           294:     aaab
        !           295:  0: aaab
        !           296: 
        !           297: /(a++b)/
        !           298:     aaab
        !           299:  0: aaab
        !           300:  1: aaab
        !           301: 
        !           302: /(a++)b/
        !           303:     aaab
        !           304:  0: aaab
        !           305:  1: aaa
        !           306: 
        !           307: /([^()]++|\([^()]*\))+/
        !           308:     ((abc(ade)ufh()()x
        !           309:  0: abc(ade)ufh()()x
        !           310:  1: x
        !           311: 
        !           312: /\(([^()]++|\([^()]+\))+\)/
        !           313:     (abc)
        !           314:  0: (abc)
        !           315:  1: abc
        !           316:     (abc(def)xyz)
        !           317:  0: (abc(def)xyz)
        !           318:  1: xyz
        !           319:     *** Failers
        !           320: No match
        !           321:     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        !           322: No match
        !           323: 
        !           324: /^([^()]|\((?1)*\))*$/
        !           325:     abc
        !           326:  0: abc
        !           327:  1: c
        !           328:     a(b)c
        !           329:  0: a(b)c
        !           330:  1: c
        !           331:     a(b(c))d
        !           332:  0: a(b(c))d
        !           333:  1: d
        !           334:     *** Failers)
        !           335: No match
        !           336:     a(b(c)d
        !           337: No match
        !           338: 
        !           339: /^>abc>([^()]|\((?1)*\))*<xyz<$/
        !           340:    >abc>123<xyz<
        !           341:  0: >abc>123<xyz<
        !           342:  1: 3
        !           343:    >abc>1(2)3<xyz<
        !           344:  0: >abc>1(2)3<xyz<
        !           345:  1: 3
        !           346:    >abc>(1(2)3)<xyz<
        !           347:  0: >abc>(1(2)3)<xyz<
        !           348:  1: (1(2)3)
        !           349: 
        !           350: /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
        !           351:     1221
        !           352:  0: 1221
        !           353:  1: 1221
        !           354:  2: 1
        !           355:     Satanoscillatemymetallicsonatas
        !           356:  0: Satanoscillatemymetallicsonatas
        !           357:  1: <unset>
        !           358:  2: <unset>
        !           359:  3: Satanoscillatemymetallicsonatas
        !           360:  4: S
        !           361:     AmanaplanacanalPanama
        !           362:  0: AmanaplanacanalPanama
        !           363:  1: <unset>
        !           364:  2: <unset>
        !           365:  3: AmanaplanacanalPanama
        !           366:  4: A
        !           367:     AblewasIereIsawElba
        !           368:  0: AblewasIereIsawElba
        !           369:  1: <unset>
        !           370:  2: <unset>
        !           371:  3: AblewasIereIsawElba
        !           372:  4: A
        !           373:     *** Failers
        !           374: No match
        !           375:     Thequickbrownfox
        !           376: No match
        !           377: 
        !           378: /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
        !           379:     12
        !           380:  0: 12
        !           381:  1: 12
        !           382:     (((2+2)*-3)-7)
        !           383:  0: (((2+2)*-3)-7)
        !           384:  1: (((2+2)*-3)-7)
        !           385:  2: -
        !           386:     -12
        !           387:  0: -12
        !           388:  1: -12
        !           389:     *** Failers
        !           390: No match
        !           391:     ((2+2)*-3)-7)
        !           392: No match
        !           393: 
        !           394: /^(x(y|(?1){2})z)/
        !           395:     xyz
        !           396:  0: xyz
        !           397:  1: xyz
        !           398:  2: y
        !           399:     xxyzxyzz
        !           400:  0: xxyzxyzz
        !           401:  1: xxyzxyzz
        !           402:  2: xyzxyz
        !           403:     *** Failers
        !           404: No match
        !           405:     xxyzz
        !           406: No match
        !           407:     xxyzxyzxyzz
        !           408: No match
        !           409: 
        !           410: /((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/x
        !           411:     <>
        !           412:  0: <>
        !           413:  1: <>
        !           414:  2: <>
        !           415:     <abcd>
        !           416:  0: <abcd>
        !           417:  1: <abcd>
        !           418:  2: <abcd>
        !           419:     <abc <123> hij>
        !           420:  0: <abc <123> hij>
        !           421:  1: <abc <123> hij>
        !           422:  2: <abc <123> hij>
        !           423:     <abc <def> hij>
        !           424:  0: <def>
        !           425:  1: <def>
        !           426:  2: <def>
        !           427:     <abc<>def>
        !           428:  0: <abc<>def>
        !           429:  1: <abc<>def>
        !           430:  2: <abc<>def>
        !           431:     <abc<>
        !           432:  0: <>
        !           433:  1: <>
        !           434:  2: <>
        !           435:     *** Failers
        !           436: No match
        !           437:     <abc
        !           438: No match
        !           439: 
        !           440: /^a+(*FAIL)/
        !           441:     aaaaaa
        !           442: No match
        !           443:     
        !           444: /a+b?c+(*FAIL)/
        !           445:     aaabccc
        !           446: No match
        !           447: 
        !           448: /a+b?(*PRUNE)c+(*FAIL)/
        !           449:     aaabccc
        !           450: No match
        !           451: 
        !           452: /a+b?(*COMMIT)c+(*FAIL)/
        !           453:     aaabccc
        !           454: No match
        !           455:     
        !           456: /a+b?(*SKIP)c+(*FAIL)/
        !           457:     aaabcccaaabccc
        !           458: No match
        !           459: 
        !           460: /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
        !           461:     aaaxxxxxx
        !           462:  0: aaaxxxxxx
        !           463:     aaa++++++ 
        !           464:  0: aaa
        !           465:     bbbxxxxx
        !           466:  0: bbbxxxxx
        !           467:     bbb+++++ 
        !           468:  0: bbb
        !           469:     cccxxxx
        !           470:  0: cccxxxx
        !           471:     ccc++++ 
        !           472:  0: ccc
        !           473:     dddddddd   
        !           474:  0: ddd
        !           475: 
        !           476: /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
        !           477:     aaaxxxxxx
        !           478:  0: aaaxxxxxx
        !           479:  1: aaaxxxxxx
        !           480:     aaa++++++ 
        !           481:  0: aaa
        !           482:  1: aaa
        !           483:     bbbxxxxx
        !           484:  0: bbbxxxxx
        !           485:  1: bbbxxxxx
        !           486:     bbb+++++ 
        !           487:  0: bbb
        !           488:  1: bbb
        !           489:     cccxxxx
        !           490:  0: cccxxxx
        !           491:  1: cccxxxx
        !           492:     ccc++++ 
        !           493:  0: ccc
        !           494:  1: ccc
        !           495:     dddddddd   
        !           496:  0: ddd
        !           497:  1: ddd
        !           498: 
        !           499: /a+b?(*THEN)c+(*FAIL)/
        !           500:     aaabccc
        !           501: No match
        !           502: 
        !           503: /(A (A|B(*ACCEPT)|C) D)(E)/x
        !           504:     AB
        !           505:  0: AB
        !           506:  1: AB
        !           507:  2: B
        !           508:     ABX
        !           509:  0: AB
        !           510:  1: AB
        !           511:  2: B
        !           512:     AADE
        !           513:  0: AADE
        !           514:  1: AAD
        !           515:  2: A
        !           516:  3: E
        !           517:     ACDE
        !           518:  0: ACDE
        !           519:  1: ACD
        !           520:  2: C
        !           521:  3: E
        !           522:     ** Failers
        !           523: No match
        !           524:     AD 
        !           525: No match
        !           526:         
        !           527: /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
        !           528:     1221
        !           529:  0: 1221
        !           530:  1: 1221
        !           531:  2: 1
        !           532:     Satan, oscillate my metallic sonatas!
        !           533:  0: Satan, oscillate my metallic sonatas!
        !           534:  1: <unset>
        !           535:  2: <unset>
        !           536:  3: Satan, oscillate my metallic sonatas
        !           537:  4: S
        !           538:     A man, a plan, a canal: Panama!
        !           539:  0: A man, a plan, a canal: Panama!
        !           540:  1: <unset>
        !           541:  2: <unset>
        !           542:  3: A man, a plan, a canal: Panama
        !           543:  4: A
        !           544:     Able was I ere I saw Elba.
        !           545:  0: Able was I ere I saw Elba.
        !           546:  1: <unset>
        !           547:  2: <unset>
        !           548:  3: Able was I ere I saw Elba
        !           549:  4: A
        !           550:     *** Failers
        !           551: No match
        !           552:     The quick brown fox
        !           553: No match
        !           554: 
        !           555: /^((.)(?1)\2|.)$/
        !           556:     a
        !           557:  0: a
        !           558:  1: a
        !           559:     aba
        !           560:  0: aba
        !           561:  1: aba
        !           562:  2: a
        !           563:     aabaa  
        !           564:  0: aabaa
        !           565:  1: aabaa
        !           566:  2: a
        !           567:     abcdcba 
        !           568:  0: abcdcba
        !           569:  1: abcdcba
        !           570:  2: a
        !           571:     pqaabaaqp  
        !           572:  0: pqaabaaqp
        !           573:  1: pqaabaaqp
        !           574:  2: p
        !           575:     ablewasiereisawelba
        !           576:  0: ablewasiereisawelba
        !           577:  1: ablewasiereisawelba
        !           578:  2: a
        !           579:     rhubarb
        !           580: No match
        !           581:     the quick brown fox  
        !           582: No match
        !           583: 
        !           584: /(a)(?<=b(?1))/
        !           585:     baz
        !           586:  0: a
        !           587:  1: a
        !           588:     ** Failers
        !           589: No match
        !           590:     caz  
        !           591: No match
        !           592:     
        !           593: /(?<=b(?1))(a)/
        !           594:     zbaaz
        !           595:  0: a
        !           596:  1: a
        !           597:     ** Failers
        !           598: No match
        !           599:     aaa  
        !           600: No match
        !           601:     
        !           602: /(?<X>a)(?<=b(?&X))/
        !           603:     baz
        !           604:  0: a
        !           605:  1: a
        !           606: 
        !           607: /^(?|(abc)|(def))\1/
        !           608:     abcabc
        !           609:  0: abcabc
        !           610:  1: abc
        !           611:     defdef 
        !           612:  0: defdef
        !           613:  1: def
        !           614:     ** Failers
        !           615: No match
        !           616:     abcdef
        !           617: No match
        !           618:     defabc   
        !           619: No match
        !           620:     
        !           621: /^(?|(abc)|(def))(?1)/
        !           622:     abcabc
        !           623:  0: abcabc
        !           624:  1: abc
        !           625:     defabc
        !           626:  0: defabc
        !           627:  1: def
        !           628:     ** Failers
        !           629: No match
        !           630:     defdef
        !           631: No match
        !           632:     abcdef    
        !           633: No match
        !           634: 
        !           635: /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ
        !           636:     a\"aaaaa
        !           637:  0: a"aaaaa
        !           638:  1: "
        !           639:  2: <unset>
        !           640:  3: "
        !           641:     b\"aaaaa 
        !           642:  0: b"aaaaa
        !           643:  1: <unset>
        !           644:  2: <unset>
        !           645:  3: <unset>
        !           646:  4: "
        !           647:  5: <unset>
        !           648:  6: "
        !           649:     ** Failers 
        !           650: No match
        !           651:     b\"11111
        !           652: No match
        !           653: 
        !           654: /(?:(?1)|B)(A(*F)|C)/
        !           655:     ABCD
        !           656:  0: BC
        !           657:  1: C
        !           658:     CCD
        !           659:  0: CC
        !           660:  1: C
        !           661:     ** Failers
        !           662: No match
        !           663:     CAD   
        !           664: No match
        !           665: 
        !           666: /^(?:(?1)|B)(A(*F)|C)/
        !           667:     CCD
        !           668:  0: CC
        !           669:  1: C
        !           670:     BCD 
        !           671:  0: BC
        !           672:  1: C
        !           673:     ** Failers
        !           674: No match
        !           675:     ABCD
        !           676: No match
        !           677:     CAD
        !           678: No match
        !           679:     BAD    
        !           680: No match
        !           681: 
        !           682: /(?:(?1)|B)(A(*ACCEPT)XX|C)D/
        !           683:     AAD
        !           684:  0: AA
        !           685:  1: A
        !           686:     ACD
        !           687:  0: ACD
        !           688:  1: C
        !           689:     BAD
        !           690:  0: BA
        !           691:  1: A
        !           692:     BCD
        !           693:  0: BCD
        !           694:  1: C
        !           695:     BAX  
        !           696:  0: BA
        !           697:  1: A
        !           698:     ** Failers
        !           699: No match
        !           700:     ACX
        !           701: No match
        !           702:     ABC   
        !           703: No match
        !           704: 
        !           705: /(?(DEFINE)(A))B(?1)C/
        !           706:     BAC
        !           707:  0: BAC
        !           708: 
        !           709: /(?(DEFINE)((A)\2))B(?1)C/
        !           710:     BAAC
        !           711:  0: BAAC
        !           712: 
        !           713: /(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
        !           714:     (ab(cd)ef)
        !           715:  0: (ab(cd)ef)
        !           716:  1: (ab(cd)ef)
        !           717:  2: ef
        !           718: 
        !           719: /^(?!a(*SKIP)b)/
        !           720:     ac
        !           721:  0: 
        !           722:     
        !           723: /^(?=a(*SKIP)b|ac)/
        !           724:     ** Failers
        !           725: No match
        !           726:     ac
        !           727: No match
        !           728:     
        !           729: /^(?=a(*THEN)b|ac)/
        !           730:     ac
        !           731:  0: 
        !           732:     
        !           733: /^(?=a(*PRUNE)b)/
        !           734:     ab  
        !           735:  0: 
        !           736:     ** Failers 
        !           737: No match
        !           738:     ac
        !           739: No match
        !           740: 
        !           741: /^(?=a(*ACCEPT)b)/
        !           742:     ac
        !           743:  0: 
        !           744: 
        !           745: /^(?(?!a(*SKIP)b))/
        !           746:     ac
        !           747:  0: 
        !           748: 
        !           749: /(?>a\Kb)/
        !           750:     ab
        !           751:  0: b
        !           752: 
        !           753: /((?>a\Kb))/
        !           754:     ab
        !           755:  0: b
        !           756:  1: ab
        !           757: 
        !           758: /(a\Kb)/
        !           759:     ab
        !           760:  0: b
        !           761:  1: ab
        !           762:     
        !           763: /^a\Kcz|ac/
        !           764:     ac
        !           765:  0: ac
        !           766:     
        !           767: /(?>a\Kbz|ab)/
        !           768:     ab 
        !           769:  0: ab
        !           770: 
        !           771: /^(?&t)(?(DEFINE)(?<t>a\Kb))$/
        !           772:     ab
        !           773:  0: b
        !           774: 
        !           775: /^([^()]|\((?1)*\))*$/
        !           776:     a(b)c
        !           777:  0: a(b)c
        !           778:  1: c
        !           779:     a(b(c)d)e 
        !           780:  0: a(b(c)d)e
        !           781:  1: e
        !           782: 
        !           783: /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
        !           784:     0
        !           785:  0: 0
        !           786:  1: 0
        !           787:     00
        !           788:  0: 00
        !           789:  1: 00
        !           790:  2: 0
        !           791:     0000  
        !           792:  0: 0000
        !           793:  1: 0000
        !           794:  2: 0
        !           795: 
        !           796: /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
        !           797:     0
        !           798:  0: 0
        !           799:  1: 0
        !           800:  2: 0
        !           801:     00
        !           802:  0: 0
        !           803:  1: 0
        !           804:  2: 0
        !           805:     0000  
        !           806:  0: 0
        !           807:  1: 0
        !           808:  2: 0
        !           809: 
        !           810: /--- This one does fail, as expected, in Perl. It needs the complex item at the
        !           811:      end of the pattern. A single letter instead of (B|D) makes it not fail,
        !           812:      which I think is a Perl bug. --- /
        !           813: 
        !           814: /A(*COMMIT)(B|D)/
        !           815:     ACABX
        !           816: No match
        !           817: 
        !           818: /--- Check the use of names for failure ---/
        !           819: 
        !           820: /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
        !           821:     ** Failers
        !           822: No match
        !           823:     AC
        !           824: No match, mark = A
        !           825:     CB    
        !           826: No match, mark = B
        !           827:     
        !           828: /--- Force no study, otherwise mark is not seen. The studied version is in
        !           829:      test 2 because it isn't Perl-compatible. ---/
        !           830: 
        !           831: /(*MARK:A)(*SKIP:B)(C|X)/KSS
        !           832:     C
        !           833:  0: C
        !           834:  1: C
        !           835: MK: A
        !           836:     D
        !           837: No match, mark = A
        !           838:      
        !           839: /^(A(*THEN:A)B|C(*THEN:B)D)/K
        !           840:     ** Failers
        !           841: No match
        !           842:     CB    
        !           843: No match, mark = B
        !           844: 
        !           845: /^(?:A(*THEN:A)B|C(*THEN:B)D)/K
        !           846:     CB    
        !           847: No match, mark = B
        !           848:     
        !           849: /^(?>A(*THEN:A)B|C(*THEN:B)D)/K
        !           850:     CB    
        !           851: No match, mark = B
        !           852:     
        !           853: /--- This should succeed, as the skip causes bump to offset 1 (the mark). Note
        !           854: that we have to have something complicated such as (B|Z) at the end because,
        !           855: for Perl, a simple character somehow causes an unwanted optimization to mess
        !           856: with the handling of backtracking verbs. ---/
        !           857: 
        !           858: /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
        !           859:     AAAC
        !           860:  0: AC
        !           861:     
        !           862: /--- Test skipping over a non-matching mark. ---/
        !           863: 
        !           864: /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
        !           865:     AAAC
        !           866:  0: AC
        !           867:     
        !           868: /--- Check shorthand for MARK ---/
        !           869: 
        !           870: /A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
        !           871:     AAAC
        !           872:  0: AC
        !           873: 
        !           874: /--- Don't loop! Force no study, otherwise mark is not seen. ---/
        !           875: 
        !           876: /(*:A)A+(*SKIP:A)(B|Z)/KSS
        !           877:     AAAC
        !           878: No match, mark = A
        !           879: 
        !           880: /--- This should succeed, as a non-existent skip name disables the skip ---/ 
        !           881: 
        !           882: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
        !           883:     AAAC
        !           884:  0: AC
        !           885: 
        !           886: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
        !           887:     AAAC
        !           888:  0: AC
        !           889: MK: B
        !           890: 
        !           891: /--- COMMIT at the start of a pattern should act like an anchor. Again, 
        !           892: however, we need the complication for Perl. ---/
        !           893: 
        !           894: /(*COMMIT)(A|P)(B|P)(C|P)/
        !           895:     ABCDEFG
        !           896:  0: ABC
        !           897:  1: A
        !           898:  2: B
        !           899:  3: C
        !           900:     ** Failers
        !           901: No match
        !           902:     DEFGABC  
        !           903: No match
        !           904: 
        !           905: /--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
        !           906: 
        !           907: /(\w+)(?>b(*COMMIT))\w{2}/
        !           908:     abbb
        !           909:  0: abbb
        !           910:  1: a
        !           911: 
        !           912: /(\w+)b(*COMMIT)\w{2}/
        !           913:     abbb
        !           914: No match
        !           915: 
        !           916: /--- Check opening parens in comment when seeking forward reference. ---/ 
        !           917: 
        !           918: /(?&t)(?#()(?(DEFINE)(?<t>a))/
        !           919:     bac
        !           920:  0: a
        !           921: 
        !           922: /--- COMMIT should override THEN ---/
        !           923: 
        !           924: /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
        !           925:   yes
        !           926: No match
        !           927: 
        !           928: /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
        !           929:   yes
        !           930: No match
        !           931: 
        !           932: /b?(*SKIP)c/
        !           933:     bc
        !           934:  0: bc
        !           935:     abc
        !           936:  0: bc
        !           937:    
        !           938: /(*SKIP)bc/
        !           939:     a
        !           940: No match
        !           941: 
        !           942: /(*SKIP)b/
        !           943:     a 
        !           944: No match
        !           945: 
        !           946: /(?P<abn>(?P=abn)xxx|)+/
        !           947:     xxx
        !           948:  0: 
        !           949:  1: 
        !           950: 
        !           951: /(?i:([^b]))(?1)/
        !           952:     aa
        !           953:  0: aa
        !           954:  1: a
        !           955:     aA     
        !           956:  0: aA
        !           957:  1: a
        !           958:     ** Failers
        !           959:  0: **
        !           960:  1: *
        !           961:     ab
        !           962: No match
        !           963:     aB
        !           964: No match
        !           965:     Ba
        !           966: No match
        !           967:     ba
        !           968: No match
        !           969: 
        !           970: /^(?&t)*+(?(DEFINE)(?<t>a))\w$/
        !           971:     aaaaaaX
        !           972:  0: aaaaaaX
        !           973:     ** Failers 
        !           974: No match
        !           975:     aaaaaa 
        !           976: No match
        !           977: 
        !           978: /^(?&t)*(?(DEFINE)(?<t>a))\w$/
        !           979:     aaaaaaX
        !           980:  0: aaaaaaX
        !           981:     aaaaaa 
        !           982:  0: aaaaaa
        !           983: 
        !           984: /^(a)*+(\w)/
        !           985:     aaaaX
        !           986:  0: aaaaX
        !           987:  1: a
        !           988:  2: X
        !           989:     YZ 
        !           990:  0: Y
        !           991:  1: <unset>
        !           992:  2: Y
        !           993:     ** Failers 
        !           994: No match
        !           995:     aaaa
        !           996: No match
        !           997: 
        !           998: /^(?:a)*+(\w)/
        !           999:     aaaaX
        !          1000:  0: aaaaX
        !          1001:  1: X
        !          1002:     YZ 
        !          1003:  0: Y
        !          1004:  1: Y
        !          1005:     ** Failers 
        !          1006: No match
        !          1007:     aaaa
        !          1008: No match
        !          1009: 
        !          1010: /^(a)++(\w)/
        !          1011:     aaaaX
        !          1012:  0: aaaaX
        !          1013:  1: a
        !          1014:  2: X
        !          1015:     ** Failers 
        !          1016: No match
        !          1017:     aaaa
        !          1018: No match
        !          1019:     YZ 
        !          1020: No match
        !          1021: 
        !          1022: /^(?:a)++(\w)/
        !          1023:     aaaaX
        !          1024:  0: aaaaX
        !          1025:  1: X
        !          1026:     ** Failers 
        !          1027: No match
        !          1028:     aaaa
        !          1029: No match
        !          1030:     YZ 
        !          1031: No match
        !          1032: 
        !          1033: /^(a)?+(\w)/
        !          1034:     aaaaX
        !          1035:  0: aa
        !          1036:  1: a
        !          1037:  2: a
        !          1038:     YZ 
        !          1039:  0: Y
        !          1040:  1: <unset>
        !          1041:  2: Y
        !          1042: 
        !          1043: /^(?:a)?+(\w)/
        !          1044:     aaaaX
        !          1045:  0: aa
        !          1046:  1: a
        !          1047:     YZ 
        !          1048:  0: Y
        !          1049:  1: Y
        !          1050: 
        !          1051: /^(a){2,}+(\w)/
        !          1052:     aaaaX
        !          1053:  0: aaaaX
        !          1054:  1: a
        !          1055:  2: X
        !          1056:     ** Failers
        !          1057: No match
        !          1058:     aaa
        !          1059: No match
        !          1060:     YZ 
        !          1061: No match
        !          1062: 
        !          1063: /^(?:a){2,}+(\w)/
        !          1064:     aaaaX
        !          1065:  0: aaaaX
        !          1066:  1: X
        !          1067:     ** Failers
        !          1068: No match
        !          1069:     aaa
        !          1070: No match
        !          1071:     YZ 
        !          1072: No match
        !          1073: 
        !          1074: /(a|)*(?1)b/
        !          1075:     b
        !          1076:  0: b
        !          1077:  1: 
        !          1078:     ab
        !          1079:  0: ab
        !          1080:  1: 
        !          1081:     aab  
        !          1082:  0: aab
        !          1083:  1: 
        !          1084: 
        !          1085: /(a)++(?1)b/
        !          1086:     ** Failers
        !          1087: No match
        !          1088:     ab 
        !          1089: No match
        !          1090:     aab
        !          1091: No match
        !          1092: 
        !          1093: /(a)*+(?1)b/
        !          1094:     ** Failers
        !          1095: No match
        !          1096:     ab
        !          1097: No match
        !          1098:     aab  
        !          1099: No match
        !          1100: 
        !          1101: /(?1)(?:(b)){0}/
        !          1102:     b
        !          1103:  0: b
        !          1104: 
        !          1105: /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
        !          1106:     foo(bar(baz)+baz(bop))
        !          1107:  0: foo(bar(baz)+baz(bop))
        !          1108:  1: foo(bar(baz)+baz(bop))
        !          1109:  2: (bar(baz)+baz(bop))
        !          1110:  3: bar(baz)+baz(bop)
        !          1111: 
        !          1112: /(A (A|B(*ACCEPT)|C) D)(E)/x
        !          1113:     AB
        !          1114:  0: AB
        !          1115:  1: AB
        !          1116:  2: B
        !          1117: 
        !          1118: /\A.*?(?:a|b(*THEN)c)/
        !          1119:     ba
        !          1120:  0: ba
        !          1121: 
        !          1122: /\A.*?(?:a|bc)/
        !          1123:     ba
        !          1124:  0: ba
        !          1125: 
        !          1126: /\A.*?(a|b(*THEN)c)/
        !          1127:     ba
        !          1128:  0: ba
        !          1129:  1: a
        !          1130: 
        !          1131: /\A.*?(a|bc)/
        !          1132:     ba
        !          1133:  0: ba
        !          1134:  1: a
        !          1135: 
        !          1136: /\A.*?(?:a|b(*THEN)c)++/
        !          1137:     ba
        !          1138:  0: ba
        !          1139: 
        !          1140: /\A.*?(?:a|bc)++/
        !          1141:     ba
        !          1142:  0: ba
        !          1143: 
        !          1144: /\A.*?(a|b(*THEN)c)++/
        !          1145:     ba
        !          1146:  0: ba
        !          1147:  1: a
        !          1148: 
        !          1149: /\A.*?(a|bc)++/
        !          1150:     ba
        !          1151:  0: ba
        !          1152:  1: a
        !          1153: 
        !          1154: /\A.*?(?:a|b(*THEN)c|d)/
        !          1155:     ba
        !          1156:  0: ba
        !          1157: 
        !          1158: /\A.*?(?:a|bc|d)/
        !          1159:     ba
        !          1160:  0: ba
        !          1161: 
        !          1162: /(?:(b))++/
        !          1163:     beetle
        !          1164:  0: b
        !          1165:  1: b
        !          1166: 
        !          1167: /(?(?=(a(*ACCEPT)z))a)/
        !          1168:     a
        !          1169:  0: a
        !          1170:  1: a
        !          1171: 
        !          1172: /^(a)(?1)+ab/
        !          1173:     aaaab
        !          1174:  0: aaaab
        !          1175:  1: a
        !          1176:     
        !          1177: /^(a)(?1)++ab/
        !          1178:     aaaab
        !          1179: No match
        !          1180: 
        !          1181: /^(?=a(*:M))aZ/K
        !          1182:     aZbc
        !          1183:  0: aZ
        !          1184: MK: M
        !          1185: 
        !          1186: /^(?!(*:M)b)aZ/K
        !          1187:     aZbc
        !          1188:  0: aZ
        !          1189: 
        !          1190: /(?(DEFINE)(a))?b(?1)/
        !          1191:     backgammon
        !          1192:  0: ba
        !          1193: 
        !          1194: /^\N+/
        !          1195:     abc\ndef
        !          1196:  0: abc
        !          1197:     
        !          1198: /^\N{1,}/
        !          1199:     abc\ndef 
        !          1200:  0: abc
        !          1201: 
        !          1202: /(?(R)a+|(?R)b)/
        !          1203:     aaaabcde
        !          1204:  0: aaaab
        !          1205: 
        !          1206: /(?(R)a+|((?R))b)/
        !          1207:     aaaabcde
        !          1208:  0: aaaab
        !          1209:  1: aaaa
        !          1210: 
        !          1211: /((?(R)a+|(?1)b))/
        !          1212:     aaaabcde
        !          1213:  0: aaaab
        !          1214:  1: aaaab
        !          1215: 
        !          1216: /((?(R1)a+|(?1)b))/
        !          1217:     aaaabcde
        !          1218:  0: aaaab
        !          1219:  1: aaaab
        !          1220: 
        !          1221: /a(*:any 
        !          1222: name)/K
        !          1223:     abc
        !          1224:  0: a
        !          1225: MK: any 
        !          1226: name
        !          1227:     
        !          1228: /(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
        !          1229:     a
        !          1230:  0: a
        !          1231:     ba
        !          1232:  0: a
        !          1233:     bba 
        !          1234:  0: a
        !          1235:     
        !          1236: /--- Checking revised (*THEN) handling ---/ 
        !          1237: 
        !          1238: /--- Capture ---/
        !          1239: 
        !          1240: /^.*? (a(*THEN)b) c/x
        !          1241:     aabc
        !          1242: No match
        !          1243: 
        !          1244: /^.*? (a(*THEN)b|(*F)) c/x
        !          1245:     aabc
        !          1246:  0: aabc
        !          1247:  1: ab
        !          1248: 
        !          1249: /^.*? ( (a(*THEN)b) | (*F) ) c/x
        !          1250:     aabc
        !          1251:  0: aabc
        !          1252:  1: ab
        !          1253:  2: ab
        !          1254: 
        !          1255: /^.*? ( (a(*THEN)b) ) c/x
        !          1256:     aabc
        !          1257: No match
        !          1258: 
        !          1259: /--- Non-capture ---/
        !          1260: 
        !          1261: /^.*? (?:a(*THEN)b) c/x
        !          1262:     aabc
        !          1263: No match
        !          1264: 
        !          1265: /^.*? (?:a(*THEN)b|(*F)) c/x
        !          1266:     aabc
        !          1267:  0: aabc
        !          1268: 
        !          1269: /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
        !          1270:     aabc
        !          1271:  0: aabc
        !          1272: 
        !          1273: /^.*? (?: (?:a(*THEN)b) ) c/x
        !          1274:     aabc
        !          1275: No match
        !          1276: 
        !          1277: /--- Atomic ---/
        !          1278: 
        !          1279: /^.*? (?>a(*THEN)b) c/x
        !          1280:     aabc
        !          1281: No match
        !          1282: 
        !          1283: /^.*? (?>a(*THEN)b|(*F)) c/x
        !          1284:     aabc
        !          1285:  0: aabc
        !          1286: 
        !          1287: /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
        !          1288:     aabc
        !          1289:  0: aabc
        !          1290: 
        !          1291: /^.*? (?> (?>a(*THEN)b) ) c/x
        !          1292:     aabc
        !          1293: No match
        !          1294: 
        !          1295: /--- Possessive capture ---/
        !          1296: 
        !          1297: /^.*? (a(*THEN)b)++ c/x
        !          1298:     aabc
        !          1299: No match
        !          1300: 
        !          1301: /^.*? (a(*THEN)b|(*F))++ c/x
        !          1302:     aabc
        !          1303:  0: aabc
        !          1304:  1: ab
        !          1305: 
        !          1306: /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
        !          1307:     aabc
        !          1308:  0: aabc
        !          1309:  1: ab
        !          1310:  2: ab
        !          1311: 
        !          1312: /^.*? ( (a(*THEN)b)++ )++ c/x
        !          1313:     aabc
        !          1314: No match
        !          1315: 
        !          1316: /--- Possessive non-capture ---/
        !          1317: 
        !          1318: /^.*? (?:a(*THEN)b)++ c/x
        !          1319:     aabc
        !          1320: No match
        !          1321: 
        !          1322: /^.*? (?:a(*THEN)b|(*F))++ c/x
        !          1323:     aabc
        !          1324:  0: aabc
        !          1325: 
        !          1326: /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
        !          1327:     aabc
        !          1328:  0: aabc
        !          1329: 
        !          1330: /^.*? (?: (?:a(*THEN)b)++ )++ c/x
        !          1331:     aabc
        !          1332: No match
        !          1333:     
        !          1334: /--- Condition assertion ---/
        !          1335: 
        !          1336: /^(?(?=a(*THEN)b)ab|ac)/
        !          1337:     ac
        !          1338:  0: ac
        !          1339:  
        !          1340: /--- Condition ---/
        !          1341: 
        !          1342: /^.*?(?(?=a)a|b(*THEN)c)/
        !          1343:     ba
        !          1344: No match
        !          1345: 
        !          1346: /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
        !          1347:     ba
        !          1348:  0: ba
        !          1349: 
        !          1350: /^.*?(?(?=a)a(*THEN)b|c)/
        !          1351:     ac
        !          1352: No match
        !          1353: 
        !          1354: /--- Assertion ---/
        !          1355: 
        !          1356: /^.*(?=a(*THEN)b)/ 
        !          1357:     aabc
        !          1358:  0: a
        !          1359: 
        !          1360: /------------------------------/
        !          1361: 
        !          1362: /(?>a(*:m))/imsxSK 
        !          1363:     a
        !          1364:  0: a
        !          1365: MK: m
        !          1366: 
        !          1367: /(?>(a)(*:m))/imsxSK 
        !          1368:     a
        !          1369:  0: a
        !          1370:  1: a
        !          1371: MK: m
        !          1372: 
        !          1373: /(?<=a(*ACCEPT)b)c/
        !          1374:     xacd
        !          1375:  0: c
        !          1376: 
        !          1377: /(?<=(a(*ACCEPT)b))c/
        !          1378:     xacd
        !          1379:  0: c
        !          1380:  1: a
        !          1381: 
        !          1382: /(?<=(a(*COMMIT)b))c/
        !          1383:     xabcd
        !          1384:  0: c
        !          1385:  1: ab
        !          1386:     ** Failers 
        !          1387: No match
        !          1388:     xacd
        !          1389: No match
        !          1390:     
        !          1391: /(?<!a(*FAIL)b)c/
        !          1392:     xcd
        !          1393:  0: c
        !          1394:     acd 
        !          1395:  0: c
        !          1396: 
        !          1397: /(?<=a(*:N)b)c/K
        !          1398:     xabcd
        !          1399:  0: c
        !          1400: MK: N
        !          1401:     
        !          1402: /(?<=a(*PRUNE)b)c/
        !          1403:     xabcd 
        !          1404:  0: c
        !          1405: 
        !          1406: /(?<=a(*SKIP)b)c/
        !          1407:     xabcd 
        !          1408:  0: c
        !          1409: 
        !          1410: /(?<=a(*THEN)b)c/
        !          1411:     xabcd 
        !          1412:  0: c
        !          1413: 
        !          1414: /(a)(?2){2}(.)/
        !          1415:     abcd
        !          1416:  0: abcd
        !          1417:  1: a
        !          1418:  2: d
        !          1419: 
        !          1420: /(*MARK:A)(*PRUNE:B)(C|X)/KS
        !          1421:     C
        !          1422:  0: C
        !          1423:  1: C
        !          1424: MK: B
        !          1425:     D 
        !          1426: No match, mark = B
        !          1427: 
        !          1428: /(*MARK:A)(*PRUNE:B)(C|X)/KSS
        !          1429:     C
        !          1430:  0: C
        !          1431:  1: C
        !          1432: MK: B
        !          1433:     D 
        !          1434: No match, mark = B
        !          1435: 
        !          1436: /(*MARK:A)(*THEN:B)(C|X)/KS
        !          1437:     C
        !          1438:  0: C
        !          1439:  1: C
        !          1440: MK: B
        !          1441:     D 
        !          1442: No match, mark = B
        !          1443: 
        !          1444: /(*MARK:A)(*THEN:B)(C|X)/KSY
        !          1445:     C
        !          1446:  0: C
        !          1447:  1: C
        !          1448: MK: B
        !          1449:     D 
        !          1450: No match, mark = B
        !          1451: 
        !          1452: /(*MARK:A)(*THEN:B)(C|X)/KSS
        !          1453:     C
        !          1454:  0: C
        !          1455:  1: C
        !          1456: MK: B
        !          1457:     D 
        !          1458: No match, mark = B
        !          1459: 
        !          1460: /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
        !          1461: 
        !          1462: /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
        !          1463:     AAAC
        !          1464: No match, mark = A
        !          1465: 
        !          1466: /--- Same --/
        !          1467: 
        !          1468: /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
        !          1469:     AAAC
        !          1470: No match, mark = B
        !          1471: 
        !          1472: /A(*:A)A+(*SKIP)(B|Z) | AC/xK
        !          1473:     AAAC
        !          1474: No match, mark = A
        !          1475: 
        !          1476: /--- This should fail, as a null name is the same as no name ---/
        !          1477: 
        !          1478: /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
        !          1479:     AAAC
        !          1480: No match, mark = A
        !          1481: 
        !          1482: /--- A check on what happens after hitting a mark and them bumping along to
        !          1483: something that does not even start. Perl reports tags after the failures here, 
        !          1484: though it does not when the individual letters are made into something 
        !          1485: more complicated. ---/
        !          1486: 
        !          1487: /A(*:A)B|XX(*:B)Y/K
        !          1488:     AABC
        !          1489:  0: AB
        !          1490: MK: A
        !          1491:     XXYZ 
        !          1492:  0: XXY
        !          1493: MK: B
        !          1494:     ** Failers
        !          1495: No match
        !          1496:     XAQQ  
        !          1497: No match, mark = A
        !          1498:     XAQQXZZ  
        !          1499: No match, mark = A
        !          1500:     AXQQQ 
        !          1501: No match, mark = A
        !          1502:     AXXQQQ 
        !          1503: No match, mark = B
        !          1504:     
        !          1505: /^(A(*THEN:A)B|C(*THEN:B)D)/K
        !          1506:     AB
        !          1507:  0: AB
        !          1508:  1: AB
        !          1509: MK: A
        !          1510:     CD
        !          1511:  0: CD
        !          1512:  1: CD
        !          1513: MK: B
        !          1514:     ** Failers
        !          1515: No match
        !          1516:     AC
        !          1517: No match, mark = A
        !          1518:     CB    
        !          1519: No match, mark = B
        !          1520:     
        !          1521: /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
        !          1522:     AB
        !          1523:  0: AB
        !          1524:  1: AB
        !          1525: MK: A
        !          1526:     CD
        !          1527:  0: CD
        !          1528:  1: CD
        !          1529: MK: B
        !          1530:     ** Failers
        !          1531: No match
        !          1532:     AC
        !          1533: No match, mark = A
        !          1534:     CB    
        !          1535: No match, mark = B
        !          1536:     
        !          1537: /--- An empty name does not pass back an empty string. It is the same as if no
        !          1538: name were given. ---/ 
        !          1539: 
        !          1540: /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
        !          1541:     AB
        !          1542:  0: AB
        !          1543:  1: AB
        !          1544:     CD 
        !          1545:  0: CD
        !          1546:  1: CD
        !          1547: MK: B
        !          1548: 
        !          1549: /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
        !          1550:     
        !          1551: /A(*PRUNE:A)B/K
        !          1552:     ACAB
        !          1553:  0: AB
        !          1554: MK: A
        !          1555: 
        !          1556: /--- Mark names can be duplicated ---/
        !          1557: 
        !          1558: /A(*:A)B|X(*:A)Y/K
        !          1559:     AABC
        !          1560:  0: AB
        !          1561: MK: A
        !          1562:     XXYZ 
        !          1563:  0: XY
        !          1564: MK: A
        !          1565:     
        !          1566: /b(*:m)f|a(*:n)w/K
        !          1567:     aw 
        !          1568:  0: aw
        !          1569: MK: n
        !          1570:     ** Failers 
        !          1571: No match, mark = n
        !          1572:     abc
        !          1573: No match, mark = m
        !          1574: 
        !          1575: /b(*:m)f|aw/K
        !          1576:     abaw
        !          1577:  0: aw
        !          1578:     ** Failers 
        !          1579: No match
        !          1580:     abc
        !          1581: No match, mark = m
        !          1582:     abax 
        !          1583: No match, mark = m
        !          1584: 
        !          1585: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
        !          1586:     AAAC
        !          1587:  0: AAC
        !          1588: 
        !          1589: /a(*PRUNE:X)bc|qq/KY
        !          1590:     ** Failers
        !          1591: No match, mark = X
        !          1592:     axy
        !          1593: No match, mark = X
        !          1594: 
        !          1595: /a(*THEN:X)bc|qq/KY
        !          1596:     ** Failers
        !          1597: No match, mark = X
        !          1598:     axy
        !          1599: No match, mark = X
        !          1600: 
        !          1601: /(?=a(*MARK:A)b)..x/K
        !          1602:     abxy
        !          1603:  0: abx
        !          1604: MK: A
        !          1605:     ** Failers
        !          1606: No match
        !          1607:     abpq  
        !          1608: No match
        !          1609: 
        !          1610: /(?=a(*MARK:A)b)..(*:Y)x/K
        !          1611:     abxy
        !          1612:  0: abx
        !          1613: MK: Y
        !          1614:     ** Failers
        !          1615: No match
        !          1616:     abpq  
        !          1617: No match
        !          1618: 
        !          1619: /(?=a(*PRUNE:A)b)..x/K
        !          1620:     abxy
        !          1621:  0: abx
        !          1622: MK: A
        !          1623:     ** Failers
        !          1624: No match
        !          1625:     abpq  
        !          1626: No match
        !          1627: 
        !          1628: /(?=a(*PRUNE:A)b)..(*:Y)x/K
        !          1629:     abxy
        !          1630:  0: abx
        !          1631: MK: Y
        !          1632:     ** Failers
        !          1633: No match
        !          1634:     abpq  
        !          1635: No match
        !          1636: 
        !          1637: /(?=a(*THEN:A)b)..x/K
        !          1638:     abxy
        !          1639:  0: abx
        !          1640: MK: A
        !          1641:     ** Failers
        !          1642: No match
        !          1643:     abpq  
        !          1644: No match
        !          1645: 
        !          1646: /(?=a(*THEN:A)b)..(*:Y)x/K
        !          1647:     abxy
        !          1648:  0: abx
        !          1649: MK: Y
        !          1650:     ** Failers
        !          1651: No match
        !          1652:     abpq  
        !          1653: No match
        !          1654: 
        !          1655: /-- End of testinput11 --/

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