File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / pcre / testdata / testinput11
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:05:52 2012 UTC (12 years, 5 months ago) by misho
Branches: pcre, MAIN
CVS tags: v8_21, HEAD
pcre

    1: /-- These tests are for the Perl >= 5.10 features that PCRE supports. --/
    2: 
    3: /\H\h\V\v/
    4:     X X\x0a
    5:     X\x09X\x0b
    6:     ** Failers
    7:     \xa0 X\x0a   
    8:     
    9: /\H*\h+\V?\v{3,4}/ 
   10:     \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
   11:     \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
   12:     \x09\x20\xa0\x0a\x0b\x0c
   13:     ** Failers 
   14:     \x09\x20\xa0\x0a\x0b
   15:      
   16: /\H{3,4}/
   17:     XY  ABCDE
   18:     XY  PQR ST 
   19:     
   20: /.\h{3,4}./
   21:     XY  AB    PQRS
   22: 
   23: /\h*X\h?\H+Y\H?Z/
   24:     >XNNNYZ
   25:     >  X NYQZ
   26:     ** Failers
   27:     >XYZ   
   28:     >  X NY Z
   29: 
   30: /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
   31:     >XY\x0aZ\x0aA\x0bNN\x0c
   32:     >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
   33: 
   34: /(foo)\Kbar/
   35:     foobar
   36:    
   37: /(foo)(\Kbar|baz)/
   38:     foobar
   39:     foobaz 
   40: 
   41: /(foo\Kbar)baz/
   42:     foobarbaz
   43: 
   44: /abc\K|def\K/g+
   45:     Xabcdefghi
   46: 
   47: /ab\Kc|de\Kf/g+
   48:     Xabcdefghi
   49:     
   50: /(?=C)/g+
   51:     ABCDECBA
   52:     
   53: /^abc\K/+
   54:     abcdef
   55:     ** Failers
   56:     defabcxyz   
   57: 
   58: /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
   59:     ababababbbabZXXXX
   60: 
   61: /(?<A>tom|bon)-\g{A}/
   62:     tom-tom
   63:     bon-bon 
   64:     
   65: /(^(a|b\g{-1}))/
   66:     bacxxx
   67: 
   68: /(?|(abc)|(xyz))\1/
   69:     abcabc
   70:     xyzxyz 
   71:     ** Failers
   72:     abcxyz
   73:     xyzabc   
   74:     
   75: /(?|(abc)|(xyz))(?1)/
   76:     abcabc
   77:     xyzabc 
   78:     ** Failers 
   79:     xyzxyz 
   80:  
   81: /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
   82:     XYabcdY
   83: 
   84: /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
   85:     XYabcdY
   86: 
   87: /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
   88:     XYabcdY
   89: 
   90: /(?'abc'\w+):\k<abc>{2}/
   91:     a:aaxyz
   92:     ab:ababxyz
   93:     ** Failers
   94:     a:axyz
   95:     ab:abxyz
   96: 
   97: /(?'abc'\w+):\g{abc}{2}/
   98:     a:aaxyz
   99:     ab:ababxyz
  100:     ** Failers
  101:     a:axyz
  102:     ab:abxyz
  103: 
  104: /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
  105:     abd
  106:     ce
  107: 
  108: /^(a.)\g-1Z/
  109:     aXaXZ
  110: 
  111: /^(a.)\g{-1}Z/
  112:     aXaXZ
  113: 
  114: /^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /x
  115:     abcd
  116: 
  117: /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
  118:   (?(DEFINE)
  119:   (?<NAME_PAT>[a-z]+)
  120:   (?<ADDRESS_PAT>\d+)
  121:   )/x
  122:     metcalfe 33
  123: 
  124: /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
  125:     1.2.3.4
  126:     131.111.10.206
  127:     10.0.0.0
  128:     ** Failers
  129:     10.6
  130:     455.3.4.5
  131: 
  132: /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
  133:     1.2.3.4
  134:     131.111.10.206
  135:     10.0.0.0
  136:     ** Failers
  137:     10.6
  138:     455.3.4.5
  139: 
  140: /^(\w++|\s++)*$/
  141:     now is the time for all good men to come to the aid of the party
  142:     *** Failers
  143:     this is not a line with only words and spaces!
  144: 
  145: /(\d++)(\w)/
  146:     12345a
  147:     *** Failers
  148:     12345+
  149: 
  150: /a++b/
  151:     aaab
  152: 
  153: /(a++b)/
  154:     aaab
  155: 
  156: /(a++)b/
  157:     aaab
  158: 
  159: /([^()]++|\([^()]*\))+/
  160:     ((abc(ade)ufh()()x
  161: 
  162: /\(([^()]++|\([^()]+\))+\)/
  163:     (abc)
  164:     (abc(def)xyz)
  165:     *** Failers
  166:     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  167: 
  168: /^([^()]|\((?1)*\))*$/
  169:     abc
  170:     a(b)c
  171:     a(b(c))d
  172:     *** Failers)
  173:     a(b(c)d
  174: 
  175: /^>abc>([^()]|\((?1)*\))*<xyz<$/
  176:    >abc>123<xyz<
  177:    >abc>1(2)3<xyz<
  178:    >abc>(1(2)3)<xyz<
  179: 
  180: /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
  181:     1221
  182:     Satanoscillatemymetallicsonatas
  183:     AmanaplanacanalPanama
  184:     AblewasIereIsawElba
  185:     *** Failers
  186:     Thequickbrownfox
  187: 
  188: /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
  189:     12
  190:     (((2+2)*-3)-7)
  191:     -12
  192:     *** Failers
  193:     ((2+2)*-3)-7)
  194: 
  195: /^(x(y|(?1){2})z)/
  196:     xyz
  197:     xxyzxyzz
  198:     *** Failers
  199:     xxyzz
  200:     xxyzxyzxyzz
  201: 
  202: /((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/x
  203:     <>
  204:     <abcd>
  205:     <abc <123> hij>
  206:     <abc <def> hij>
  207:     <abc<>def>
  208:     <abc<>
  209:     *** Failers
  210:     <abc
  211: 
  212: /^a+(*FAIL)/
  213:     aaaaaa
  214:     
  215: /a+b?c+(*FAIL)/
  216:     aaabccc
  217: 
  218: /a+b?(*PRUNE)c+(*FAIL)/
  219:     aaabccc
  220: 
  221: /a+b?(*COMMIT)c+(*FAIL)/
  222:     aaabccc
  223:     
  224: /a+b?(*SKIP)c+(*FAIL)/
  225:     aaabcccaaabccc
  226: 
  227: /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
  228:     aaaxxxxxx
  229:     aaa++++++ 
  230:     bbbxxxxx
  231:     bbb+++++ 
  232:     cccxxxx
  233:     ccc++++ 
  234:     dddddddd   
  235: 
  236: /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
  237:     aaaxxxxxx
  238:     aaa++++++ 
  239:     bbbxxxxx
  240:     bbb+++++ 
  241:     cccxxxx
  242:     ccc++++ 
  243:     dddddddd   
  244: 
  245: /a+b?(*THEN)c+(*FAIL)/
  246:     aaabccc
  247: 
  248: /(A (A|B(*ACCEPT)|C) D)(E)/x
  249:     AB
  250:     ABX
  251:     AADE
  252:     ACDE
  253:     ** Failers
  254:     AD 
  255:         
  256: /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
  257:     1221
  258:     Satan, oscillate my metallic sonatas!
  259:     A man, a plan, a canal: Panama!
  260:     Able was I ere I saw Elba.
  261:     *** Failers
  262:     The quick brown fox
  263: 
  264: /^((.)(?1)\2|.)$/
  265:     a
  266:     aba
  267:     aabaa  
  268:     abcdcba 
  269:     pqaabaaqp  
  270:     ablewasiereisawelba
  271:     rhubarb
  272:     the quick brown fox  
  273: 
  274: /(a)(?<=b(?1))/
  275:     baz
  276:     ** Failers
  277:     caz  
  278:     
  279: /(?<=b(?1))(a)/
  280:     zbaaz
  281:     ** Failers
  282:     aaa  
  283:     
  284: /(?<X>a)(?<=b(?&X))/
  285:     baz
  286: 
  287: /^(?|(abc)|(def))\1/
  288:     abcabc
  289:     defdef 
  290:     ** Failers
  291:     abcdef
  292:     defabc   
  293:     
  294: /^(?|(abc)|(def))(?1)/
  295:     abcabc
  296:     defabc
  297:     ** Failers
  298:     defdef
  299:     abcdef    
  300: 
  301: /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ
  302:     a\"aaaaa
  303:     b\"aaaaa 
  304:     ** Failers 
  305:     b\"11111
  306: 
  307: /(?:(?1)|B)(A(*F)|C)/
  308:     ABCD
  309:     CCD
  310:     ** Failers
  311:     CAD   
  312: 
  313: /^(?:(?1)|B)(A(*F)|C)/
  314:     CCD
  315:     BCD 
  316:     ** Failers
  317:     ABCD
  318:     CAD
  319:     BAD    
  320: 
  321: /(?:(?1)|B)(A(*ACCEPT)XX|C)D/
  322:     AAD
  323:     ACD
  324:     BAD
  325:     BCD
  326:     BAX  
  327:     ** Failers
  328:     ACX
  329:     ABC   
  330: 
  331: /(?(DEFINE)(A))B(?1)C/
  332:     BAC
  333: 
  334: /(?(DEFINE)((A)\2))B(?1)C/
  335:     BAAC
  336: 
  337: /(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
  338:     (ab(cd)ef)
  339: 
  340: /^(?!a(*SKIP)b)/
  341:     ac
  342:     
  343: /^(?=a(*SKIP)b|ac)/
  344:     ** Failers
  345:     ac
  346:     
  347: /^(?=a(*THEN)b|ac)/
  348:     ac
  349:     
  350: /^(?=a(*PRUNE)b)/
  351:     ab  
  352:     ** Failers 
  353:     ac
  354: 
  355: /^(?=a(*ACCEPT)b)/
  356:     ac
  357: 
  358: /^(?(?!a(*SKIP)b))/
  359:     ac
  360: 
  361: /(?>a\Kb)/
  362:     ab
  363: 
  364: /((?>a\Kb))/
  365:     ab
  366: 
  367: /(a\Kb)/
  368:     ab
  369:     
  370: /^a\Kcz|ac/
  371:     ac
  372:     
  373: /(?>a\Kbz|ab)/
  374:     ab 
  375: 
  376: /^(?&t)(?(DEFINE)(?<t>a\Kb))$/
  377:     ab
  378: 
  379: /^([^()]|\((?1)*\))*$/
  380:     a(b)c
  381:     a(b(c)d)e 
  382: 
  383: /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
  384:     0
  385:     00
  386:     0000  
  387: 
  388: /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
  389:     0
  390:     00
  391:     0000  
  392: 
  393: /--- This one does fail, as expected, in Perl. It needs the complex item at the
  394:      end of the pattern. A single letter instead of (B|D) makes it not fail,
  395:      which I think is a Perl bug. --- /
  396: 
  397: /A(*COMMIT)(B|D)/
  398:     ACABX
  399: 
  400: /--- Check the use of names for failure ---/
  401: 
  402: /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
  403:     ** Failers
  404:     AC
  405:     CB    
  406:     
  407: /--- Force no study, otherwise mark is not seen. The studied version is in
  408:      test 2 because it isn't Perl-compatible. ---/
  409: 
  410: /(*MARK:A)(*SKIP:B)(C|X)/KSS
  411:     C
  412:     D
  413:      
  414: /^(A(*THEN:A)B|C(*THEN:B)D)/K
  415:     ** Failers
  416:     CB    
  417: 
  418: /^(?:A(*THEN:A)B|C(*THEN:B)D)/K
  419:     CB    
  420:     
  421: /^(?>A(*THEN:A)B|C(*THEN:B)D)/K
  422:     CB    
  423:     
  424: /--- This should succeed, as the skip causes bump to offset 1 (the mark). Note
  425: that we have to have something complicated such as (B|Z) at the end because,
  426: for Perl, a simple character somehow causes an unwanted optimization to mess
  427: with the handling of backtracking verbs. ---/
  428: 
  429: /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
  430:     AAAC
  431:     
  432: /--- Test skipping over a non-matching mark. ---/
  433: 
  434: /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
  435:     AAAC
  436:     
  437: /--- Check shorthand for MARK ---/
  438: 
  439: /A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
  440:     AAAC
  441: 
  442: /--- Don't loop! Force no study, otherwise mark is not seen. ---/
  443: 
  444: /(*:A)A+(*SKIP:A)(B|Z)/KSS
  445:     AAAC
  446: 
  447: /--- This should succeed, as a non-existent skip name disables the skip ---/ 
  448: 
  449: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
  450:     AAAC
  451: 
  452: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
  453:     AAAC
  454: 
  455: /--- COMMIT at the start of a pattern should act like an anchor. Again, 
  456: however, we need the complication for Perl. ---/
  457: 
  458: /(*COMMIT)(A|P)(B|P)(C|P)/
  459:     ABCDEFG
  460:     ** Failers
  461:     DEFGABC  
  462: 
  463: /--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
  464: 
  465: /(\w+)(?>b(*COMMIT))\w{2}/
  466:     abbb
  467: 
  468: /(\w+)b(*COMMIT)\w{2}/
  469:     abbb
  470: 
  471: /--- Check opening parens in comment when seeking forward reference. ---/ 
  472: 
  473: /(?&t)(?#()(?(DEFINE)(?<t>a))/
  474:     bac
  475: 
  476: /--- COMMIT should override THEN ---/
  477: 
  478: /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
  479:   yes
  480: 
  481: /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
  482:   yes
  483: 
  484: /b?(*SKIP)c/
  485:     bc
  486:     abc
  487:    
  488: /(*SKIP)bc/
  489:     a
  490: 
  491: /(*SKIP)b/
  492:     a 
  493: 
  494: /(?P<abn>(?P=abn)xxx|)+/
  495:     xxx
  496: 
  497: /(?i:([^b]))(?1)/
  498:     aa
  499:     aA     
  500:     ** Failers
  501:     ab
  502:     aB
  503:     Ba
  504:     ba
  505: 
  506: /^(?&t)*+(?(DEFINE)(?<t>a))\w$/
  507:     aaaaaaX
  508:     ** Failers 
  509:     aaaaaa 
  510: 
  511: /^(?&t)*(?(DEFINE)(?<t>a))\w$/
  512:     aaaaaaX
  513:     aaaaaa 
  514: 
  515: /^(a)*+(\w)/
  516:     aaaaX
  517:     YZ 
  518:     ** Failers 
  519:     aaaa
  520: 
  521: /^(?:a)*+(\w)/
  522:     aaaaX
  523:     YZ 
  524:     ** Failers 
  525:     aaaa
  526: 
  527: /^(a)++(\w)/
  528:     aaaaX
  529:     ** Failers 
  530:     aaaa
  531:     YZ 
  532: 
  533: /^(?:a)++(\w)/
  534:     aaaaX
  535:     ** Failers 
  536:     aaaa
  537:     YZ 
  538: 
  539: /^(a)?+(\w)/
  540:     aaaaX
  541:     YZ 
  542: 
  543: /^(?:a)?+(\w)/
  544:     aaaaX
  545:     YZ 
  546: 
  547: /^(a){2,}+(\w)/
  548:     aaaaX
  549:     ** Failers
  550:     aaa
  551:     YZ 
  552: 
  553: /^(?:a){2,}+(\w)/
  554:     aaaaX
  555:     ** Failers
  556:     aaa
  557:     YZ 
  558: 
  559: /(a|)*(?1)b/
  560:     b
  561:     ab
  562:     aab  
  563: 
  564: /(a)++(?1)b/
  565:     ** Failers
  566:     ab 
  567:     aab
  568: 
  569: /(a)*+(?1)b/
  570:     ** Failers
  571:     ab
  572:     aab  
  573: 
  574: /(?1)(?:(b)){0}/
  575:     b
  576: 
  577: /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
  578:     foo(bar(baz)+baz(bop))
  579: 
  580: /(A (A|B(*ACCEPT)|C) D)(E)/x
  581:     AB
  582: 
  583: /\A.*?(?:a|b(*THEN)c)/
  584:     ba
  585: 
  586: /\A.*?(?:a|bc)/
  587:     ba
  588: 
  589: /\A.*?(a|b(*THEN)c)/
  590:     ba
  591: 
  592: /\A.*?(a|bc)/
  593:     ba
  594: 
  595: /\A.*?(?:a|b(*THEN)c)++/
  596:     ba
  597: 
  598: /\A.*?(?:a|bc)++/
  599:     ba
  600: 
  601: /\A.*?(a|b(*THEN)c)++/
  602:     ba
  603: 
  604: /\A.*?(a|bc)++/
  605:     ba
  606: 
  607: /\A.*?(?:a|b(*THEN)c|d)/
  608:     ba
  609: 
  610: /\A.*?(?:a|bc|d)/
  611:     ba
  612: 
  613: /(?:(b))++/
  614:     beetle
  615: 
  616: /(?(?=(a(*ACCEPT)z))a)/
  617:     a
  618: 
  619: /^(a)(?1)+ab/
  620:     aaaab
  621:     
  622: /^(a)(?1)++ab/
  623:     aaaab
  624: 
  625: /^(?=a(*:M))aZ/K
  626:     aZbc
  627: 
  628: /^(?!(*:M)b)aZ/K
  629:     aZbc
  630: 
  631: /(?(DEFINE)(a))?b(?1)/
  632:     backgammon
  633: 
  634: /^\N+/
  635:     abc\ndef
  636:     
  637: /^\N{1,}/
  638:     abc\ndef 
  639: 
  640: /(?(R)a+|(?R)b)/
  641:     aaaabcde
  642: 
  643: /(?(R)a+|((?R))b)/
  644:     aaaabcde
  645: 
  646: /((?(R)a+|(?1)b))/
  647:     aaaabcde
  648: 
  649: /((?(R1)a+|(?1)b))/
  650:     aaaabcde
  651: 
  652: /a(*:any 
  653: name)/K
  654:     abc
  655:     
  656: /(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
  657:     a
  658:     ba
  659:     bba 
  660:     
  661: /--- Checking revised (*THEN) handling ---/ 
  662: 
  663: /--- Capture ---/
  664: 
  665: /^.*? (a(*THEN)b) c/x
  666:     aabc
  667: 
  668: /^.*? (a(*THEN)b|(*F)) c/x
  669:     aabc
  670: 
  671: /^.*? ( (a(*THEN)b) | (*F) ) c/x
  672:     aabc
  673: 
  674: /^.*? ( (a(*THEN)b) ) c/x
  675:     aabc
  676: 
  677: /--- Non-capture ---/
  678: 
  679: /^.*? (?:a(*THEN)b) c/x
  680:     aabc
  681: 
  682: /^.*? (?:a(*THEN)b|(*F)) c/x
  683:     aabc
  684: 
  685: /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
  686:     aabc
  687: 
  688: /^.*? (?: (?:a(*THEN)b) ) c/x
  689:     aabc
  690: 
  691: /--- Atomic ---/
  692: 
  693: /^.*? (?>a(*THEN)b) c/x
  694:     aabc
  695: 
  696: /^.*? (?>a(*THEN)b|(*F)) c/x
  697:     aabc
  698: 
  699: /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
  700:     aabc
  701: 
  702: /^.*? (?> (?>a(*THEN)b) ) c/x
  703:     aabc
  704: 
  705: /--- Possessive capture ---/
  706: 
  707: /^.*? (a(*THEN)b)++ c/x
  708:     aabc
  709: 
  710: /^.*? (a(*THEN)b|(*F))++ c/x
  711:     aabc
  712: 
  713: /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
  714:     aabc
  715: 
  716: /^.*? ( (a(*THEN)b)++ )++ c/x
  717:     aabc
  718: 
  719: /--- Possessive non-capture ---/
  720: 
  721: /^.*? (?:a(*THEN)b)++ c/x
  722:     aabc
  723: 
  724: /^.*? (?:a(*THEN)b|(*F))++ c/x
  725:     aabc
  726: 
  727: /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
  728:     aabc
  729: 
  730: /^.*? (?: (?:a(*THEN)b)++ )++ c/x
  731:     aabc
  732:     
  733: /--- Condition assertion ---/
  734: 
  735: /^(?(?=a(*THEN)b)ab|ac)/
  736:     ac
  737:  
  738: /--- Condition ---/
  739: 
  740: /^.*?(?(?=a)a|b(*THEN)c)/
  741:     ba
  742: 
  743: /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
  744:     ba
  745: 
  746: /^.*?(?(?=a)a(*THEN)b|c)/
  747:     ac
  748: 
  749: /--- Assertion ---/
  750: 
  751: /^.*(?=a(*THEN)b)/ 
  752:     aabc
  753: 
  754: /------------------------------/
  755: 
  756: /(?>a(*:m))/imsxSK 
  757:     a
  758: 
  759: /(?>(a)(*:m))/imsxSK 
  760:     a
  761: 
  762: /(?<=a(*ACCEPT)b)c/
  763:     xacd
  764: 
  765: /(?<=(a(*ACCEPT)b))c/
  766:     xacd
  767: 
  768: /(?<=(a(*COMMIT)b))c/
  769:     xabcd
  770:     ** Failers 
  771:     xacd
  772:     
  773: /(?<!a(*FAIL)b)c/
  774:     xcd
  775:     acd 
  776: 
  777: /(?<=a(*:N)b)c/K
  778:     xabcd
  779:     
  780: /(?<=a(*PRUNE)b)c/
  781:     xabcd 
  782: 
  783: /(?<=a(*SKIP)b)c/
  784:     xabcd 
  785: 
  786: /(?<=a(*THEN)b)c/
  787:     xabcd 
  788: 
  789: /(a)(?2){2}(.)/
  790:     abcd
  791: 
  792: /(*MARK:A)(*PRUNE:B)(C|X)/KS
  793:     C
  794:     D 
  795: 
  796: /(*MARK:A)(*PRUNE:B)(C|X)/KSS
  797:     C
  798:     D 
  799: 
  800: /(*MARK:A)(*THEN:B)(C|X)/KS
  801:     C
  802:     D 
  803: 
  804: /(*MARK:A)(*THEN:B)(C|X)/KSY
  805:     C
  806:     D 
  807: 
  808: /(*MARK:A)(*THEN:B)(C|X)/KSS
  809:     C
  810:     D 
  811: 
  812: /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
  813: 
  814: /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
  815:     AAAC
  816: 
  817: /--- Same --/
  818: 
  819: /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
  820:     AAAC
  821: 
  822: /A(*:A)A+(*SKIP)(B|Z) | AC/xK
  823:     AAAC
  824: 
  825: /--- This should fail, as a null name is the same as no name ---/
  826: 
  827: /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
  828:     AAAC
  829: 
  830: /--- A check on what happens after hitting a mark and them bumping along to
  831: something that does not even start. Perl reports tags after the failures here, 
  832: though it does not when the individual letters are made into something 
  833: more complicated. ---/
  834: 
  835: /A(*:A)B|XX(*:B)Y/K
  836:     AABC
  837:     XXYZ 
  838:     ** Failers
  839:     XAQQ  
  840:     XAQQXZZ  
  841:     AXQQQ 
  842:     AXXQQQ 
  843:     
  844: /^(A(*THEN:A)B|C(*THEN:B)D)/K
  845:     AB
  846:     CD
  847:     ** Failers
  848:     AC
  849:     CB    
  850:     
  851: /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
  852:     AB
  853:     CD
  854:     ** Failers
  855:     AC
  856:     CB    
  857:     
  858: /--- An empty name does not pass back an empty string. It is the same as if no
  859: name were given. ---/ 
  860: 
  861: /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
  862:     AB
  863:     CD 
  864: 
  865: /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
  866:     
  867: /A(*PRUNE:A)B/K
  868:     ACAB
  869: 
  870: /--- Mark names can be duplicated ---/
  871: 
  872: /A(*:A)B|X(*:A)Y/K
  873:     AABC
  874:     XXYZ 
  875:     
  876: /b(*:m)f|a(*:n)w/K
  877:     aw 
  878:     ** Failers 
  879:     abc
  880: 
  881: /b(*:m)f|aw/K
  882:     abaw
  883:     ** Failers 
  884:     abc
  885:     abax 
  886: 
  887: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
  888:     AAAC
  889: 
  890: /a(*PRUNE:X)bc|qq/KY
  891:     ** Failers
  892:     axy
  893: 
  894: /a(*THEN:X)bc|qq/KY
  895:     ** Failers
  896:     axy
  897: 
  898: /(?=a(*MARK:A)b)..x/K
  899:     abxy
  900:     ** Failers
  901:     abpq  
  902: 
  903: /(?=a(*MARK:A)b)..(*:Y)x/K
  904:     abxy
  905:     ** Failers
  906:     abpq  
  907: 
  908: /(?=a(*PRUNE:A)b)..x/K
  909:     abxy
  910:     ** Failers
  911:     abpq  
  912: 
  913: /(?=a(*PRUNE:A)b)..(*:Y)x/K
  914:     abxy
  915:     ** Failers
  916:     abpq  
  917: 
  918: /(?=a(*THEN:A)b)..x/K
  919:     abxy
  920:     ** Failers
  921:     abpq  
  922: 
  923: /(?=a(*THEN:A)b)..(*:Y)x/K
  924:     abxy
  925:     ** Failers
  926:     abpq  
  927: 
  928: /-- End of testinput11 --/

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