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

    1: /-- This set of tests is not Perl-compatible. It checks on special features
    2:     of PCRE's API, error diagnostics, and the compiled code of some patterns.
    3:     It also checks the non-Perl syntax the PCRE supports (Python, .NET, 
    4:     Oniguruma). Finally, there are some tests where PCRE and Perl differ, 
    5:     either because PCRE can't be compatible, or there is a possible Perl 
    6:     bug.
    7:     
    8:     NOTE: This is a non-UTF set of tests. When UTF support is needed, use
    9:     test 5, and if Unicode Property Support is needed, use test 7. --/
   10:   
   11: /(a)b|/I
   12: Capturing subpattern count = 1
   13: No options
   14: No first char
   15: No need char
   16: 
   17: /abc/I
   18: Capturing subpattern count = 0
   19: No options
   20: First char = 'a'
   21: Need char = 'c'
   22:     abc
   23:  0: abc
   24:     defabc
   25:  0: abc
   26:     \Aabc
   27:  0: abc
   28:     *** Failers
   29: No match
   30:     \Adefabc
   31: No match
   32:     ABC
   33: No match
   34: 
   35: /^abc/I
   36: Capturing subpattern count = 0
   37: Options: anchored
   38: No first char
   39: No need char
   40:     abc
   41:  0: abc
   42:     \Aabc
   43:  0: abc
   44:     *** Failers
   45: No match
   46:     defabc
   47: No match
   48:     \Adefabc
   49: No match
   50: 
   51: /a+bc/I
   52: Capturing subpattern count = 0
   53: No options
   54: First char = 'a'
   55: Need char = 'c'
   56: 
   57: /a*bc/I
   58: Capturing subpattern count = 0
   59: No options
   60: No first char
   61: Need char = 'c'
   62: 
   63: /a{3}bc/I
   64: Capturing subpattern count = 0
   65: No options
   66: First char = 'a'
   67: Need char = 'c'
   68: 
   69: /(abc|a+z)/I
   70: Capturing subpattern count = 1
   71: No options
   72: First char = 'a'
   73: No need char
   74: 
   75: /^abc$/I
   76: Capturing subpattern count = 0
   77: Options: anchored
   78: No first char
   79: No need char
   80:     abc
   81:  0: abc
   82:     *** Failers
   83: No match
   84:     def\nabc
   85: No match
   86: 
   87: /ab\idef/X
   88: Failed: unrecognized character follows \ at offset 3
   89: 
   90: /(?X)ab\idef/X
   91: Failed: unrecognized character follows \ at offset 7
   92: 
   93: /x{5,4}/
   94: Failed: numbers out of order in {} quantifier at offset 5
   95: 
   96: /z{65536}/
   97: Failed: number too big in {} quantifier at offset 7
   98: 
   99: /[abcd/
  100: Failed: missing terminating ] for character class at offset 5
  101: 
  102: /(?X)[\B]/
  103: Failed: invalid escape sequence in character class at offset 6
  104: 
  105: /(?X)[\R]/
  106: Failed: invalid escape sequence in character class at offset 6
  107: 
  108: /(?X)[\X]/
  109: Failed: invalid escape sequence in character class at offset 6
  110: 
  111: /[\B]/BZ
  112: ------------------------------------------------------------------
  113:         Bra
  114:         B
  115:         Ket
  116:         End
  117: ------------------------------------------------------------------
  118: 
  119: /[\R]/BZ
  120: ------------------------------------------------------------------
  121:         Bra
  122:         R
  123:         Ket
  124:         End
  125: ------------------------------------------------------------------
  126: 
  127: /[\X]/BZ
  128: ------------------------------------------------------------------
  129:         Bra
  130:         X
  131:         Ket
  132:         End
  133: ------------------------------------------------------------------
  134: 
  135: /[z-a]/
  136: Failed: range out of order in character class at offset 3
  137: 
  138: /^*/
  139: Failed: nothing to repeat at offset 1
  140: 
  141: /(abc/
  142: Failed: missing ) at offset 4
  143: 
  144: /(?# abc/
  145: Failed: missing ) after comment at offset 7
  146: 
  147: /(?z)abc/
  148: Failed: unrecognized character after (? or (?- at offset 2
  149: 
  150: /.*b/I
  151: Capturing subpattern count = 0
  152: No options
  153: First char at start or follows newline
  154: Need char = 'b'
  155: 
  156: /.*?b/I
  157: Capturing subpattern count = 0
  158: No options
  159: First char at start or follows newline
  160: Need char = 'b'
  161: 
  162: /cat|dog|elephant/I
  163: Capturing subpattern count = 0
  164: No options
  165: No first char
  166: No need char
  167:     this sentence eventually mentions a cat
  168:  0: cat
  169:     this sentences rambles on and on for a while and then reaches elephant
  170:  0: elephant
  171: 
  172: /cat|dog|elephant/IS
  173: Capturing subpattern count = 0
  174: No options
  175: No first char
  176: No need char
  177: Subject length lower bound = 3
  178: Starting byte set: c d e 
  179:     this sentence eventually mentions a cat
  180:  0: cat
  181:     this sentences rambles on and on for a while and then reaches elephant
  182:  0: elephant
  183: 
  184: /cat|dog|elephant/IiS
  185: Capturing subpattern count = 0
  186: Options: caseless
  187: No first char
  188: No need char
  189: Subject length lower bound = 3
  190: Starting byte set: C D E c d e 
  191:     this sentence eventually mentions a CAT cat
  192:  0: CAT
  193:     this sentences rambles on and on for a while to elephant ElePhant
  194:  0: elephant
  195: 
  196: /a|[bcd]/IS
  197: Capturing subpattern count = 0
  198: No options
  199: No first char
  200: No need char
  201: Subject length lower bound = 1
  202: Starting byte set: a b c d 
  203: 
  204: /(a|[^\dZ])/IS
  205: Capturing subpattern count = 1
  206: No options
  207: No first char
  208: No need char
  209: Subject length lower bound = 1
  210: Starting byte set: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a 
  211:   \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 
  212:   \x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / : ; < = > 
  213:   ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y [ \ ] ^ _ ` a b c d 
  214:   e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f \x80 \x81 \x82 \x83 
  215:   \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 \x91 \x92 
  216:   \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f \xa0 \xa1 
  217:   \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf \xb0 
  218:   \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf 
  219:   \xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce 
  220:   \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd 
  221:   \xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec 
  222:   \xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb 
  223:   \xfc \xfd \xfe \xff 
  224: 
  225: /(a|b)*[\s]/IS
  226: Capturing subpattern count = 1
  227: No options
  228: No first char
  229: No need char
  230: Subject length lower bound = 1
  231: Starting byte set: \x09 \x0a \x0c \x0d \x20 a b 
  232: 
  233: /(ab\2)/
  234: Failed: reference to non-existent subpattern at offset 6
  235: 
  236: /{4,5}abc/
  237: Failed: nothing to repeat at offset 4
  238: 
  239: /(a)(b)(c)\2/I
  240: Capturing subpattern count = 3
  241: Max back reference = 2
  242: No options
  243: First char = 'a'
  244: Need char = 'c'
  245:     abcb
  246:  0: abcb
  247:  1: a
  248:  2: b
  249:  3: c
  250:     \O0abcb
  251: Matched, but too many substrings
  252:     \O3abcb
  253: Matched, but too many substrings
  254:  0: abcb
  255:     \O6abcb
  256: Matched, but too many substrings
  257:  0: abcb
  258:  1: a
  259:     \O9abcb
  260: Matched, but too many substrings
  261:  0: abcb
  262:  1: a
  263:  2: b
  264:     \O12abcb
  265:  0: abcb
  266:  1: a
  267:  2: b
  268:  3: c
  269: 
  270: /(a)bc|(a)(b)\2/I
  271: Capturing subpattern count = 3
  272: Max back reference = 2
  273: No options
  274: First char = 'a'
  275: No need char
  276:     abc
  277:  0: abc
  278:  1: a
  279:     \O0abc
  280: Matched, but too many substrings
  281:     \O3abc
  282: Matched, but too many substrings
  283:  0: abc
  284:     \O6abc
  285:  0: abc
  286:  1: a
  287:     aba
  288:  0: aba
  289:  1: <unset>
  290:  2: a
  291:  3: b
  292:     \O0aba
  293: Matched, but too many substrings
  294:     \O3aba
  295: Matched, but too many substrings
  296:  0: aba
  297:     \O6aba
  298: Matched, but too many substrings
  299:  0: aba
  300:  1: <unset>
  301:     \O9aba
  302: Matched, but too many substrings
  303:  0: aba
  304:  1: <unset>
  305:  2: a
  306:     \O12aba
  307:  0: aba
  308:  1: <unset>
  309:  2: a
  310:  3: b
  311: 
  312: /abc$/IE
  313: Capturing subpattern count = 0
  314: Options: dollar_endonly
  315: First char = 'a'
  316: Need char = 'c'
  317:     abc
  318:  0: abc
  319:     *** Failers
  320: No match
  321:     abc\n
  322: No match
  323:     abc\ndef
  324: No match
  325: 
  326: /(a)(b)(c)(d)(e)\6/
  327: Failed: reference to non-existent subpattern at offset 17
  328: 
  329: /the quick brown fox/I
  330: Capturing subpattern count = 0
  331: No options
  332: First char = 't'
  333: Need char = 'x'
  334:     the quick brown fox
  335:  0: the quick brown fox
  336:     this is a line with the quick brown fox
  337:  0: the quick brown fox
  338: 
  339: /the quick brown fox/IA
  340: Capturing subpattern count = 0
  341: Options: anchored
  342: No first char
  343: No need char
  344:     the quick brown fox
  345:  0: the quick brown fox
  346:     *** Failers
  347: No match
  348:     this is a line with the quick brown fox
  349: No match
  350: 
  351: /ab(?z)cd/
  352: Failed: unrecognized character after (? or (?- at offset 4
  353: 
  354: /^abc|def/I
  355: Capturing subpattern count = 0
  356: No options
  357: No first char
  358: No need char
  359:     abcdef
  360:  0: abc
  361:     abcdef\B
  362:  0: def
  363: 
  364: /.*((abc)$|(def))/I
  365: Capturing subpattern count = 3
  366: No options
  367: First char at start or follows newline
  368: No need char
  369:     defabc
  370:  0: defabc
  371:  1: abc
  372:  2: abc
  373:     \Zdefabc
  374:  0: def
  375:  1: def
  376:  2: <unset>
  377:  3: def
  378: 
  379: /)/
  380: Failed: unmatched parentheses at offset 0
  381: 
  382: /a[]b/
  383: Failed: missing terminating ] for character class at offset 4
  384: 
  385: /[^aeiou ]{3,}/I
  386: Capturing subpattern count = 0
  387: No options
  388: No first char
  389: No need char
  390:     co-processors, and for
  391:  0: -pr
  392: 
  393: /<.*>/I
  394: Capturing subpattern count = 0
  395: No options
  396: First char = '<'
  397: Need char = '>'
  398:     abc<def>ghi<klm>nop
  399:  0: <def>ghi<klm>
  400: 
  401: /<.*?>/I
  402: Capturing subpattern count = 0
  403: No options
  404: First char = '<'
  405: Need char = '>'
  406:     abc<def>ghi<klm>nop
  407:  0: <def>
  408: 
  409: /<.*>/IU
  410: Capturing subpattern count = 0
  411: Options: ungreedy
  412: First char = '<'
  413: Need char = '>'
  414:     abc<def>ghi<klm>nop
  415:  0: <def>
  416: 
  417: /(?U)<.*>/I
  418: Capturing subpattern count = 0
  419: Options: ungreedy
  420: First char = '<'
  421: Need char = '>'
  422:     abc<def>ghi<klm>nop
  423:  0: <def>
  424: 
  425: /<.*?>/IU
  426: Capturing subpattern count = 0
  427: Options: ungreedy
  428: First char = '<'
  429: Need char = '>'
  430:     abc<def>ghi<klm>nop
  431:  0: <def>ghi<klm>
  432: 
  433: /={3,}/IU
  434: Capturing subpattern count = 0
  435: Options: ungreedy
  436: First char = '='
  437: Need char = '='
  438:     abc========def
  439:  0: ===
  440: 
  441: /(?U)={3,}?/I
  442: Capturing subpattern count = 0
  443: Options: ungreedy
  444: First char = '='
  445: Need char = '='
  446:     abc========def
  447:  0: ========
  448: 
  449: /(?<!bar|cattle)foo/I
  450: Capturing subpattern count = 0
  451: No options
  452: First char = 'f'
  453: Need char = 'o'
  454:     foo
  455:  0: foo
  456:     catfoo
  457:  0: foo
  458:     *** Failers
  459: No match
  460:     the barfoo
  461: No match
  462:     and cattlefoo
  463: No match
  464: 
  465: /(?<=a+)b/
  466: Failed: lookbehind assertion is not fixed length at offset 6
  467: 
  468: /(?<=aaa|b{0,3})b/
  469: Failed: lookbehind assertion is not fixed length at offset 14
  470: 
  471: /(?<!(foo)a\1)bar/
  472: Failed: lookbehind assertion is not fixed length at offset 12
  473: 
  474: /(?i)abc/I
  475: Capturing subpattern count = 0
  476: Options: caseless
  477: First char = 'a' (caseless)
  478: Need char = 'c' (caseless)
  479: 
  480: /(a|(?m)a)/I
  481: Capturing subpattern count = 1
  482: No options
  483: First char = 'a'
  484: No need char
  485: 
  486: /(?i)^1234/I
  487: Capturing subpattern count = 0
  488: Options: anchored caseless
  489: No first char
  490: No need char
  491: 
  492: /(^b|(?i)^d)/I
  493: Capturing subpattern count = 1
  494: Options: anchored
  495: No first char
  496: No need char
  497: 
  498: /(?s).*/I
  499: Capturing subpattern count = 0
  500: Options: anchored dotall
  501: No first char
  502: No need char
  503: 
  504: /[abcd]/IS
  505: Capturing subpattern count = 0
  506: No options
  507: No first char
  508: No need char
  509: Subject length lower bound = 1
  510: Starting byte set: a b c d 
  511: 
  512: /(?i)[abcd]/IS
  513: Capturing subpattern count = 0
  514: Options: caseless
  515: No first char
  516: No need char
  517: Subject length lower bound = 1
  518: Starting byte set: A B C D a b c d 
  519: 
  520: /(?m)[xy]|(b|c)/IS
  521: Capturing subpattern count = 1
  522: Options: multiline
  523: No first char
  524: No need char
  525: Subject length lower bound = 1
  526: Starting byte set: b c x y 
  527: 
  528: /(^a|^b)/Im
  529: Capturing subpattern count = 1
  530: Options: multiline
  531: First char at start or follows newline
  532: No need char
  533: 
  534: /(?i)(^a|^b)/Im
  535: Capturing subpattern count = 1
  536: Options: caseless multiline
  537: First char at start or follows newline
  538: No need char
  539: 
  540: /(a)(?(1)a|b|c)/
  541: Failed: conditional group contains more than two branches at offset 13
  542: 
  543: /(?(?=a)a|b|c)/
  544: Failed: conditional group contains more than two branches at offset 12
  545: 
  546: /(?(1a)/
  547: Failed: missing ) at offset 6
  548: 
  549: /(?(1a))/
  550: Failed: reference to non-existent subpattern at offset 6
  551: 
  552: /(?(?i))/
  553: Failed: assertion expected after (?( at offset 3
  554: 
  555: /(?(abc))/
  556: Failed: reference to non-existent subpattern at offset 7
  557: 
  558: /(?(?<ab))/
  559: Failed: syntax error in subpattern name (missing terminator) at offset 7
  560: 
  561: /((?s)blah)\s+\1/I
  562: Capturing subpattern count = 1
  563: Max back reference = 1
  564: No options
  565: First char = 'b'
  566: Need char = 'h'
  567: 
  568: /((?i)blah)\s+\1/I
  569: Capturing subpattern count = 1
  570: Max back reference = 1
  571: No options
  572: First char = 'b' (caseless)
  573: Need char = 'h' (caseless)
  574: 
  575: /((?i)b)/IDZS
  576: ------------------------------------------------------------------
  577:         Bra
  578:         CBra 1
  579:      /i b
  580:         Ket
  581:         Ket
  582:         End
  583: ------------------------------------------------------------------
  584: Capturing subpattern count = 1
  585: No options
  586: First char = 'b' (caseless)
  587: No need char
  588: Subject length lower bound = 1
  589: No set of starting bytes
  590: 
  591: /(a*b|(?i:c*(?-i)d))/IS
  592: Capturing subpattern count = 1
  593: No options
  594: No first char
  595: No need char
  596: Subject length lower bound = 1
  597: Starting byte set: C a b c d 
  598: 
  599: /a$/I
  600: Capturing subpattern count = 0
  601: No options
  602: First char = 'a'
  603: No need char
  604:     a
  605:  0: a
  606:     a\n
  607:  0: a
  608:     *** Failers
  609: No match
  610:     \Za
  611: No match
  612:     \Za\n
  613: No match
  614: 
  615: /a$/Im
  616: Capturing subpattern count = 0
  617: Options: multiline
  618: First char = 'a'
  619: No need char
  620:     a
  621:  0: a
  622:     a\n
  623:  0: a
  624:     \Za\n
  625:  0: a
  626:     *** Failers
  627: No match
  628:     \Za
  629: No match
  630: 
  631: /\Aabc/Im
  632: Capturing subpattern count = 0
  633: Options: anchored multiline
  634: No first char
  635: No need char
  636: 
  637: /^abc/Im
  638: Capturing subpattern count = 0
  639: Options: multiline
  640: First char at start or follows newline
  641: Need char = 'c'
  642: 
  643: /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/I
  644: Capturing subpattern count = 5
  645: Options: anchored
  646: No first char
  647: No need char
  648:   aaaaabbbbbcccccdef
  649:  0: aaaaabbbbbcccccdef
  650:  1: aaaaabbbbbcccccdef
  651:  2: aaaaa
  652:  3: b
  653:  4: bbbbccccc
  654:  5: def
  655: 
  656: /(?<=foo)[ab]/IS
  657: Capturing subpattern count = 0
  658: No options
  659: No first char
  660: No need char
  661: Subject length lower bound = 1
  662: Starting byte set: a b 
  663: 
  664: /(?<!foo)(alpha|omega)/IS
  665: Capturing subpattern count = 1
  666: No options
  667: No first char
  668: Need char = 'a'
  669: Subject length lower bound = 5
  670: Starting byte set: a o 
  671: 
  672: /(?!alphabet)[ab]/IS
  673: Capturing subpattern count = 0
  674: No options
  675: No first char
  676: No need char
  677: Subject length lower bound = 1
  678: Starting byte set: a b 
  679: 
  680: /(?<=foo\n)^bar/Im
  681: Capturing subpattern count = 0
  682: Contains explicit CR or LF match
  683: Options: multiline
  684: No first char
  685: Need char = 'r'
  686:     foo\nbarbar
  687:  0: bar
  688:     ***Failers
  689: No match
  690:     rhubarb
  691: No match
  692:     barbell
  693: No match
  694:     abc\nbarton
  695: No match
  696: 
  697: /^(?<=foo\n)bar/Im
  698: Capturing subpattern count = 0
  699: Contains explicit CR or LF match
  700: Options: multiline
  701: First char at start or follows newline
  702: Need char = 'r'
  703:     foo\nbarbar
  704:  0: bar
  705:     ***Failers
  706: No match
  707:     rhubarb
  708: No match
  709:     barbell
  710: No match
  711:     abc\nbarton
  712: No match
  713: 
  714: /(?>^abc)/Im
  715: Capturing subpattern count = 0
  716: Options: multiline
  717: First char at start or follows newline
  718: Need char = 'c'
  719:     abc
  720:  0: abc
  721:     def\nabc
  722:  0: abc
  723:     *** Failers
  724: No match
  725:     defabc
  726: No match
  727: 
  728: /(?<=ab(c+)d)ef/
  729: Failed: lookbehind assertion is not fixed length at offset 11
  730: 
  731: /(?<=ab(?<=c+)d)ef/
  732: Failed: lookbehind assertion is not fixed length at offset 12
  733: 
  734: /(?<=ab(c|de)f)g/
  735: Failed: lookbehind assertion is not fixed length at offset 13
  736: 
  737: /The next three are in testinput2 because they have variable length branches/
  738: 
  739: /(?<=bullock|donkey)-cart/I
  740: Capturing subpattern count = 0
  741: No options
  742: First char = '-'
  743: Need char = 't'
  744:     the bullock-cart
  745:  0: -cart
  746:     a donkey-cart race
  747:  0: -cart
  748:     *** Failers
  749: No match
  750:     cart
  751: No match
  752:     horse-and-cart
  753: No match
  754: 
  755: /(?<=ab(?i)x|y|z)/I
  756: Capturing subpattern count = 0
  757: No options
  758: No first char
  759: No need char
  760: 
  761: /(?>.*)(?<=(abcd)|(xyz))/I
  762: Capturing subpattern count = 2
  763: No options
  764: First char at start or follows newline
  765: No need char
  766:     alphabetabcd
  767:  0: alphabetabcd
  768:  1: abcd
  769:     endingxyz
  770:  0: endingxyz
  771:  1: <unset>
  772:  2: xyz
  773: 
  774: /(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I
  775: Capturing subpattern count = 0
  776: No options
  777: First char = 'Z'
  778: Need char = 'Z'
  779:     abxyZZ
  780:  0: ZZ
  781:     abXyZZ
  782:  0: ZZ
  783:     ZZZ
  784:  0: ZZ
  785:     zZZ
  786:  0: ZZ
  787:     bZZ
  788:  0: ZZ
  789:     BZZ
  790:  0: ZZ
  791:     *** Failers
  792: No match
  793:     ZZ
  794: No match
  795:     abXYZZ
  796: No match
  797:     zzz
  798: No match
  799:     bzz
  800: No match
  801: 
  802: /(?<!(foo)a)bar/I
  803: Capturing subpattern count = 1
  804: No options
  805: First char = 'b'
  806: Need char = 'r'
  807:     bar
  808:  0: bar
  809:     foobbar
  810:  0: bar
  811:     *** Failers
  812: No match
  813:     fooabar
  814: No match
  815: 
  816: /This one is here because Perl 5.005_02 doesn't fail it/I
  817: Capturing subpattern count = 0
  818: No options
  819: First char = 'T'
  820: Need char = 't'
  821: 
  822: /^(a)?(?(1)a|b)+$/I
  823: Capturing subpattern count = 1
  824: Options: anchored
  825: No first char
  826: No need char
  827:     *** Failers
  828: No match
  829:     a
  830: No match
  831: 
  832: /This one is here because Perl behaves differently; see also the following/I
  833: Capturing subpattern count = 0
  834: No options
  835: First char = 'T'
  836: Need char = 'g'
  837: 
  838: /^(a\1?){4}$/I
  839: Capturing subpattern count = 1
  840: Max back reference = 1
  841: Options: anchored
  842: No first char
  843: No need char
  844:     aaaa
  845: No match
  846:     aaaaaa
  847: No match
  848:     
  849: /Perl does not fail these two for the final subjects. Neither did PCRE until/
  850: /release 8.01. The problem is in backtracking into a subpattern that contains/
  851: No match
  852: /a recursive reference to itself. PCRE has now made these into atomic patterns./
  853: No match
  854: 
  855: /^(xa|=?\1a){2}$/
  856:     xa=xaa
  857:  0: xa=xaa
  858:  1: =xaa
  859:     ** Failers
  860: No match
  861:     xa=xaaa
  862: No match
  863: 
  864: /^(xa|=?\1a)+$/
  865:     xa=xaa
  866:  0: xa=xaa
  867:  1: =xaa
  868:     ** Failers
  869: No match
  870:     xa=xaaa
  871: No match
  872: 
  873: /These are syntax tests from Perl 5.005/I
  874: Capturing subpattern count = 0
  875: No options
  876: First char = 'T'
  877: Need char = '5'
  878: 
  879: /a[b-a]/
  880: Failed: range out of order in character class at offset 4
  881: 
  882: /a[]b/
  883: Failed: missing terminating ] for character class at offset 4
  884: 
  885: /a[/
  886: Failed: missing terminating ] for character class at offset 2
  887: 
  888: /*a/
  889: Failed: nothing to repeat at offset 0
  890: 
  891: /(*)b/
  892: Failed: nothing to repeat at offset 1
  893: 
  894: /abc)/
  895: Failed: unmatched parentheses at offset 3
  896: 
  897: /(abc/
  898: Failed: missing ) at offset 4
  899: 
  900: /a**/
  901: Failed: nothing to repeat at offset 2
  902: 
  903: /)(/
  904: Failed: unmatched parentheses at offset 0
  905: 
  906: /\1/
  907: Failed: reference to non-existent subpattern at offset 2
  908: 
  909: /\2/
  910: Failed: reference to non-existent subpattern at offset 2
  911: 
  912: /(a)|\2/
  913: Failed: reference to non-existent subpattern at offset 6
  914: 
  915: /a[b-a]/Ii
  916: Failed: range out of order in character class at offset 4
  917: 
  918: /a[]b/Ii
  919: Failed: missing terminating ] for character class at offset 4
  920: 
  921: /a[/Ii
  922: Failed: missing terminating ] for character class at offset 2
  923: 
  924: /*a/Ii
  925: Failed: nothing to repeat at offset 0
  926: 
  927: /(*)b/Ii
  928: Failed: nothing to repeat at offset 1
  929: 
  930: /abc)/Ii
  931: Failed: unmatched parentheses at offset 3
  932: 
  933: /(abc/Ii
  934: Failed: missing ) at offset 4
  935: 
  936: /a**/Ii
  937: Failed: nothing to repeat at offset 2
  938: 
  939: /)(/Ii
  940: Failed: unmatched parentheses at offset 0
  941: 
  942: /:(?:/
  943: Failed: missing ) at offset 4
  944: 
  945: /(?<%)b/
  946: Failed: unrecognized character after (?< at offset 3
  947: 
  948: /a(?{)b/
  949: Failed: unrecognized character after (? or (?- at offset 3
  950: 
  951: /a(?{{})b/
  952: Failed: unrecognized character after (? or (?- at offset 3
  953: 
  954: /a(?{}})b/
  955: Failed: unrecognized character after (? or (?- at offset 3
  956: 
  957: /a(?{"{"})b/
  958: Failed: unrecognized character after (? or (?- at offset 3
  959: 
  960: /a(?{"{"}})b/
  961: Failed: unrecognized character after (? or (?- at offset 3
  962: 
  963: /(?(1?)a|b)/
  964: Failed: malformed number or name after (?( at offset 4
  965: 
  966: /[a[:xyz:/
  967: Failed: missing terminating ] for character class at offset 8
  968: 
  969: /(?<=x+)y/
  970: Failed: lookbehind assertion is not fixed length at offset 6
  971: 
  972: /a{37,17}/
  973: Failed: numbers out of order in {} quantifier at offset 7
  974: 
  975: /abc/\
  976: Failed: \ at end of pattern at offset 4
  977: 
  978: /abc/\i
  979: Failed: \ at end of pattern at offset 4
  980: 
  981: /(a)bc(d)/I
  982: Capturing subpattern count = 2
  983: No options
  984: First char = 'a'
  985: Need char = 'd'
  986:     abcd
  987:  0: abcd
  988:  1: a
  989:  2: d
  990:     abcd\C2
  991:  0: abcd
  992:  1: a
  993:  2: d
  994:  2C d (1)
  995:     abcd\C5
  996:  0: abcd
  997:  1: a
  998:  2: d
  999: copy substring 5 failed -7
 1000: 
 1001: /(.{20})/I
 1002: Capturing subpattern count = 1
 1003: No options
 1004: No first char
 1005: No need char
 1006:     abcdefghijklmnopqrstuvwxyz
 1007:  0: abcdefghijklmnopqrst
 1008:  1: abcdefghijklmnopqrst
 1009:     abcdefghijklmnopqrstuvwxyz\C1
 1010:  0: abcdefghijklmnopqrst
 1011:  1: abcdefghijklmnopqrst
 1012:  1C abcdefghijklmnopqrst (20)
 1013:     abcdefghijklmnopqrstuvwxyz\G1
 1014:  0: abcdefghijklmnopqrst
 1015:  1: abcdefghijklmnopqrst
 1016:  1G abcdefghijklmnopqrst (20)
 1017: 
 1018: /(.{15})/I
 1019: Capturing subpattern count = 1
 1020: No options
 1021: No first char
 1022: No need char
 1023:     abcdefghijklmnopqrstuvwxyz
 1024:  0: abcdefghijklmno
 1025:  1: abcdefghijklmno
 1026:     abcdefghijklmnopqrstuvwxyz\C1\G1
 1027:  0: abcdefghijklmno
 1028:  1: abcdefghijklmno
 1029:  1C abcdefghijklmno (15)
 1030:  1G abcdefghijklmno (15)
 1031: 
 1032: /(.{16})/I
 1033: Capturing subpattern count = 1
 1034: No options
 1035: No first char
 1036: No need char
 1037:     abcdefghijklmnopqrstuvwxyz
 1038:  0: abcdefghijklmnop
 1039:  1: abcdefghijklmnop
 1040:     abcdefghijklmnopqrstuvwxyz\C1\G1\L
 1041:  0: abcdefghijklmnop
 1042:  1: abcdefghijklmnop
 1043:  1C abcdefghijklmnop (16)
 1044:  1G abcdefghijklmnop (16)
 1045:  0L abcdefghijklmnop
 1046:  1L abcdefghijklmnop
 1047: 
 1048: /^(a|(bc))de(f)/I
 1049: Capturing subpattern count = 3
 1050: Options: anchored
 1051: No first char
 1052: No need char
 1053:     adef\G1\G2\G3\G4\L
 1054:  0: adef
 1055:  1: a
 1056:  2: <unset>
 1057:  3: f
 1058:  1G a (1)
 1059:  2G  (0)
 1060:  3G f (1)
 1061: get substring 4 failed -7
 1062:  0L adef
 1063:  1L a
 1064:  2L 
 1065:  3L f
 1066:     bcdef\G1\G2\G3\G4\L
 1067:  0: bcdef
 1068:  1: bc
 1069:  2: bc
 1070:  3: f
 1071:  1G bc (2)
 1072:  2G bc (2)
 1073:  3G f (1)
 1074: get substring 4 failed -7
 1075:  0L bcdef
 1076:  1L bc
 1077:  2L bc
 1078:  3L f
 1079:     adefghijk\C0
 1080:  0: adef
 1081:  1: a
 1082:  2: <unset>
 1083:  3: f
 1084:  0C adef (4)
 1085: 
 1086: /^abc\00def/I
 1087: Capturing subpattern count = 0
 1088: Options: anchored
 1089: No first char
 1090: No need char
 1091:     abc\00def\L\C0
 1092:  0: abc\x00def
 1093:  0C abc\x00def (7)
 1094:  0L abc
 1095: 
 1096: /word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+
 1097: )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+
 1098: )?)?)?)?)?)?)?)?)?otherword/I
 1099: Capturing subpattern count = 8
 1100: Contains explicit CR or LF match
 1101: No options
 1102: First char = 'w'
 1103: Need char = 'd'
 1104: 
 1105: /.*X/IDZ
 1106: ------------------------------------------------------------------
 1107:         Bra
 1108:         Any*
 1109:         X
 1110:         Ket
 1111:         End
 1112: ------------------------------------------------------------------
 1113: Capturing subpattern count = 0
 1114: No options
 1115: First char at start or follows newline
 1116: Need char = 'X'
 1117: 
 1118: /.*X/IDZs
 1119: ------------------------------------------------------------------
 1120:         Bra
 1121:         AllAny*
 1122:         X
 1123:         Ket
 1124:         End
 1125: ------------------------------------------------------------------
 1126: Capturing subpattern count = 0
 1127: Options: anchored dotall
 1128: No first char
 1129: Need char = 'X'
 1130: 
 1131: /(.*X|^B)/IDZ
 1132: ------------------------------------------------------------------
 1133:         Bra
 1134:         CBra 1
 1135:         Any*
 1136:         X
 1137:         Alt
 1138:         ^
 1139:         B
 1140:         Ket
 1141:         Ket
 1142:         End
 1143: ------------------------------------------------------------------
 1144: Capturing subpattern count = 1
 1145: No options
 1146: First char at start or follows newline
 1147: No need char
 1148: 
 1149: /(.*X|^B)/IDZs
 1150: ------------------------------------------------------------------
 1151:         Bra
 1152:         CBra 1
 1153:         AllAny*
 1154:         X
 1155:         Alt
 1156:         ^
 1157:         B
 1158:         Ket
 1159:         Ket
 1160:         End
 1161: ------------------------------------------------------------------
 1162: Capturing subpattern count = 1
 1163: Options: anchored dotall
 1164: No first char
 1165: No need char
 1166: 
 1167: /(?s)(.*X|^B)/IDZ
 1168: ------------------------------------------------------------------
 1169:         Bra
 1170:         CBra 1
 1171:         AllAny*
 1172:         X
 1173:         Alt
 1174:         ^
 1175:         B
 1176:         Ket
 1177:         Ket
 1178:         End
 1179: ------------------------------------------------------------------
 1180: Capturing subpattern count = 1
 1181: Options: anchored dotall
 1182: No first char
 1183: No need char
 1184: 
 1185: /(?s:.*X|^B)/IDZ
 1186: ------------------------------------------------------------------
 1187:         Bra
 1188:         Bra
 1189:         AllAny*
 1190:         X
 1191:         Alt
 1192:         ^
 1193:         B
 1194:         Ket
 1195:         Ket
 1196:         End
 1197: ------------------------------------------------------------------
 1198: Capturing subpattern count = 0
 1199: Options: anchored
 1200: No first char
 1201: No need char
 1202: 
 1203: /\Biss\B/I+
 1204: Capturing subpattern count = 0
 1205: No options
 1206: First char = 'i'
 1207: Need char = 's'
 1208:     Mississippi
 1209:  0: iss
 1210:  0+ issippi
 1211: 
 1212: /iss/IG+
 1213: Capturing subpattern count = 0
 1214: No options
 1215: First char = 'i'
 1216: Need char = 's'
 1217:     Mississippi
 1218:  0: iss
 1219:  0+ issippi
 1220:  0: iss
 1221:  0+ ippi
 1222: 
 1223: /\Biss\B/IG+
 1224: Capturing subpattern count = 0
 1225: No options
 1226: First char = 'i'
 1227: Need char = 's'
 1228:     Mississippi
 1229:  0: iss
 1230:  0+ issippi
 1231: 
 1232: /\Biss\B/Ig+
 1233: Capturing subpattern count = 0
 1234: No options
 1235: First char = 'i'
 1236: Need char = 's'
 1237:     Mississippi
 1238:  0: iss
 1239:  0+ issippi
 1240:  0: iss
 1241:  0+ ippi
 1242:     *** Failers
 1243: No match
 1244:     Mississippi\A
 1245: No match
 1246: 
 1247: /(?<=[Ms])iss/Ig+
 1248: Capturing subpattern count = 0
 1249: No options
 1250: First char = 'i'
 1251: Need char = 's'
 1252:     Mississippi
 1253:  0: iss
 1254:  0+ issippi
 1255:  0: iss
 1256:  0+ ippi
 1257: 
 1258: /(?<=[Ms])iss/IG+
 1259: Capturing subpattern count = 0
 1260: No options
 1261: First char = 'i'
 1262: Need char = 's'
 1263:     Mississippi
 1264:  0: iss
 1265:  0+ issippi
 1266: 
 1267: /^iss/Ig+
 1268: Capturing subpattern count = 0
 1269: Options: anchored
 1270: No first char
 1271: No need char
 1272:     ississippi
 1273:  0: iss
 1274:  0+ issippi
 1275: 
 1276: /.*iss/Ig+
 1277: Capturing subpattern count = 0
 1278: No options
 1279: First char at start or follows newline
 1280: Need char = 's'
 1281:     abciss\nxyzisspqr
 1282:  0: abciss
 1283:  0+ \x0axyzisspqr
 1284:  0: xyziss
 1285:  0+ pqr
 1286: 
 1287: /.i./I+g
 1288: Capturing subpattern count = 0
 1289: No options
 1290: No first char
 1291: Need char = 'i'
 1292:     Mississippi
 1293:  0: Mis
 1294:  0+ sissippi
 1295:  0: sis
 1296:  0+ sippi
 1297:  0: sip
 1298:  0+ pi
 1299:     Mississippi\A
 1300:  0: Mis
 1301:  0+ sissippi
 1302:  0: sis
 1303:  0+ sippi
 1304:  0: sip
 1305:  0+ pi
 1306:     Missouri river
 1307:  0: Mis
 1308:  0+ souri river
 1309:  0: ri 
 1310:  0+ river
 1311:  0: riv
 1312:  0+ er
 1313:     Missouri river\A
 1314:  0: Mis
 1315:  0+ souri river
 1316: 
 1317: /^.is/I+g
 1318: Capturing subpattern count = 0
 1319: Options: anchored
 1320: No first char
 1321: No need char
 1322:     Mississippi
 1323:  0: Mis
 1324:  0+ sissippi
 1325: 
 1326: /^ab\n/Ig+
 1327: Capturing subpattern count = 0
 1328: Contains explicit CR or LF match
 1329: Options: anchored
 1330: No first char
 1331: No need char
 1332:     ab\nab\ncd
 1333:  0: ab\x0a
 1334:  0+ ab\x0acd
 1335: 
 1336: /^ab\n/Img+
 1337: Capturing subpattern count = 0
 1338: Contains explicit CR or LF match
 1339: Options: multiline
 1340: First char at start or follows newline
 1341: Need char = \x0a
 1342:     ab\nab\ncd
 1343:  0: ab\x0a
 1344:  0+ ab\x0acd
 1345:  0: ab\x0a
 1346:  0+ cd
 1347: 
 1348: /abc/I
 1349: Capturing subpattern count = 0
 1350: No options
 1351: First char = 'a'
 1352: Need char = 'c'
 1353: 
 1354: /abc|bac/I
 1355: Capturing subpattern count = 0
 1356: No options
 1357: No first char
 1358: Need char = 'c'
 1359: 
 1360: /(abc|bac)/I
 1361: Capturing subpattern count = 1
 1362: No options
 1363: No first char
 1364: Need char = 'c'
 1365: 
 1366: /(abc|(c|dc))/I
 1367: Capturing subpattern count = 2
 1368: No options
 1369: No first char
 1370: Need char = 'c'
 1371: 
 1372: /(abc|(d|de)c)/I
 1373: Capturing subpattern count = 2
 1374: No options
 1375: No first char
 1376: Need char = 'c'
 1377: 
 1378: /a*/I
 1379: Capturing subpattern count = 0
 1380: No options
 1381: No first char
 1382: No need char
 1383: 
 1384: /a+/I
 1385: Capturing subpattern count = 0
 1386: No options
 1387: First char = 'a'
 1388: No need char
 1389: 
 1390: /(baa|a+)/I
 1391: Capturing subpattern count = 1
 1392: No options
 1393: No first char
 1394: Need char = 'a'
 1395: 
 1396: /a{0,3}/I
 1397: Capturing subpattern count = 0
 1398: No options
 1399: No first char
 1400: No need char
 1401: 
 1402: /baa{3,}/I
 1403: Capturing subpattern count = 0
 1404: No options
 1405: First char = 'b'
 1406: Need char = 'a'
 1407: 
 1408: /"([^\\"]+|\\.)*"/I
 1409: Capturing subpattern count = 1
 1410: No options
 1411: First char = '"'
 1412: Need char = '"'
 1413: 
 1414: /(abc|ab[cd])/I
 1415: Capturing subpattern count = 1
 1416: No options
 1417: First char = 'a'
 1418: No need char
 1419: 
 1420: /(a|.)/I
 1421: Capturing subpattern count = 1
 1422: No options
 1423: No first char
 1424: No need char
 1425: 
 1426: /a|ba|\w/I
 1427: Capturing subpattern count = 0
 1428: No options
 1429: No first char
 1430: No need char
 1431: 
 1432: /abc(?=pqr)/I
 1433: Capturing subpattern count = 0
 1434: No options
 1435: First char = 'a'
 1436: Need char = 'r'
 1437: 
 1438: /...(?<=abc)/I
 1439: Capturing subpattern count = 0
 1440: No options
 1441: No first char
 1442: No need char
 1443: 
 1444: /abc(?!pqr)/I
 1445: Capturing subpattern count = 0
 1446: No options
 1447: First char = 'a'
 1448: Need char = 'c'
 1449: 
 1450: /ab./I
 1451: Capturing subpattern count = 0
 1452: No options
 1453: First char = 'a'
 1454: Need char = 'b'
 1455: 
 1456: /ab[xyz]/I
 1457: Capturing subpattern count = 0
 1458: No options
 1459: First char = 'a'
 1460: Need char = 'b'
 1461: 
 1462: /abc*/I
 1463: Capturing subpattern count = 0
 1464: No options
 1465: First char = 'a'
 1466: Need char = 'b'
 1467: 
 1468: /ab.c*/I
 1469: Capturing subpattern count = 0
 1470: No options
 1471: First char = 'a'
 1472: Need char = 'b'
 1473: 
 1474: /a.c*/I
 1475: Capturing subpattern count = 0
 1476: No options
 1477: First char = 'a'
 1478: No need char
 1479: 
 1480: /.c*/I
 1481: Capturing subpattern count = 0
 1482: No options
 1483: No first char
 1484: No need char
 1485: 
 1486: /ac*/I
 1487: Capturing subpattern count = 0
 1488: No options
 1489: First char = 'a'
 1490: No need char
 1491: 
 1492: /(a.c*|b.c*)/I
 1493: Capturing subpattern count = 1
 1494: No options
 1495: No first char
 1496: No need char
 1497: 
 1498: /a.c*|aba/I
 1499: Capturing subpattern count = 0
 1500: No options
 1501: First char = 'a'
 1502: No need char
 1503: 
 1504: /.+a/I
 1505: Capturing subpattern count = 0
 1506: No options
 1507: No first char
 1508: Need char = 'a'
 1509: 
 1510: /(?=abcda)a.*/I
 1511: Capturing subpattern count = 0
 1512: No options
 1513: First char = 'a'
 1514: Need char = 'a'
 1515: 
 1516: /(?=a)a.*/I
 1517: Capturing subpattern count = 0
 1518: No options
 1519: First char = 'a'
 1520: No need char
 1521: 
 1522: /a(b)*/I
 1523: Capturing subpattern count = 1
 1524: No options
 1525: First char = 'a'
 1526: No need char
 1527: 
 1528: /a\d*/I
 1529: Capturing subpattern count = 0
 1530: No options
 1531: First char = 'a'
 1532: No need char
 1533: 
 1534: /ab\d*/I
 1535: Capturing subpattern count = 0
 1536: No options
 1537: First char = 'a'
 1538: Need char = 'b'
 1539: 
 1540: /a(\d)*/I
 1541: Capturing subpattern count = 1
 1542: No options
 1543: First char = 'a'
 1544: No need char
 1545: 
 1546: /abcde{0,0}/I
 1547: Capturing subpattern count = 0
 1548: No options
 1549: First char = 'a'
 1550: Need char = 'd'
 1551: 
 1552: /ab\d+/I
 1553: Capturing subpattern count = 0
 1554: No options
 1555: First char = 'a'
 1556: Need char = 'b'
 1557: 
 1558: /a(?(1)b)(.)/I
 1559: Capturing subpattern count = 1
 1560: No options
 1561: First char = 'a'
 1562: No need char
 1563: 
 1564: /a(?(1)bag|big)(.)/I
 1565: Capturing subpattern count = 1
 1566: No options
 1567: First char = 'a'
 1568: Need char = 'g'
 1569: 
 1570: /a(?(1)bag|big)*(.)/I
 1571: Capturing subpattern count = 1
 1572: No options
 1573: First char = 'a'
 1574: No need char
 1575: 
 1576: /a(?(1)bag|big)+(.)/I
 1577: Capturing subpattern count = 1
 1578: No options
 1579: First char = 'a'
 1580: Need char = 'g'
 1581: 
 1582: /a(?(1)b..|b..)(.)/I
 1583: Capturing subpattern count = 1
 1584: No options
 1585: First char = 'a'
 1586: Need char = 'b'
 1587: 
 1588: /ab\d{0}e/I
 1589: Capturing subpattern count = 0
 1590: No options
 1591: First char = 'a'
 1592: Need char = 'e'
 1593: 
 1594: /a?b?/I
 1595: Capturing subpattern count = 0
 1596: No options
 1597: No first char
 1598: No need char
 1599:     a
 1600:  0: a
 1601:     b
 1602:  0: b
 1603:     ab
 1604:  0: ab
 1605:     \
 1606:  0: 
 1607:     *** Failers
 1608:  0: 
 1609:     \N
 1610: No match
 1611: 
 1612: /|-/I
 1613: Capturing subpattern count = 0
 1614: No options
 1615: No first char
 1616: No need char
 1617:     abcd
 1618:  0: 
 1619:     -abc
 1620:  0: 
 1621:     \Nab-c
 1622:  0: -
 1623:     *** Failers
 1624:  0: 
 1625:     \Nabc
 1626: No match
 1627: 
 1628: /^.?abcd/IS
 1629: Capturing subpattern count = 0
 1630: Options: anchored
 1631: No first char
 1632: Need char = 'd'
 1633: Subject length lower bound = 4
 1634: No set of starting bytes
 1635: 
 1636: /\(             # ( at start
 1637:   (?:           # Non-capturing bracket
 1638:   (?>[^()]+)    # Either a sequence of non-brackets (no backtracking)
 1639:   |             # Or
 1640:   (?R)          # Recurse - i.e. nested bracketed string
 1641:   )*            # Zero or more contents
 1642:   \)            # Closing )
 1643:   /Ix
 1644: Capturing subpattern count = 0
 1645: Options: extended
 1646: First char = '('
 1647: Need char = ')'
 1648:     (abcd)
 1649:  0: (abcd)
 1650:     (abcd)xyz
 1651:  0: (abcd)
 1652:     xyz(abcd)
 1653:  0: (abcd)
 1654:     (ab(xy)cd)pqr
 1655:  0: (ab(xy)cd)
 1656:     (ab(xycd)pqr
 1657:  0: (xycd)
 1658:     () abc ()
 1659:  0: ()
 1660:     12(abcde(fsh)xyz(foo(bar))lmno)89
 1661:  0: (abcde(fsh)xyz(foo(bar))lmno)
 1662:     *** Failers
 1663: No match
 1664:     abcd
 1665: No match
 1666:     abcd)
 1667: No match
 1668:     (abcd
 1669: No match
 1670: 
 1671: /\(  ( (?>[^()]+) | (?R) )* \) /Ixg
 1672: Capturing subpattern count = 1
 1673: Options: extended
 1674: First char = '('
 1675: Need char = ')'
 1676:     (ab(xy)cd)pqr
 1677:  0: (ab(xy)cd)
 1678:  1: cd
 1679:     1(abcd)(x(y)z)pqr
 1680:  0: (abcd)
 1681:  1: abcd
 1682:  0: (x(y)z)
 1683:  1: z
 1684: 
 1685: /\(  (?: (?>[^()]+) | (?R) ) \) /Ix
 1686: Capturing subpattern count = 0
 1687: Options: extended
 1688: First char = '('
 1689: Need char = ')'
 1690:     (abcd)
 1691:  0: (abcd)
 1692:     (ab(xy)cd)
 1693:  0: (xy)
 1694:     (a(b(c)d)e)
 1695:  0: (c)
 1696:     ((ab))
 1697:  0: ((ab))
 1698:     *** Failers
 1699: No match
 1700:     ()
 1701: No match
 1702: 
 1703: /\(  (?: (?>[^()]+) | (?R) )? \) /Ix
 1704: Capturing subpattern count = 0
 1705: Options: extended
 1706: First char = '('
 1707: Need char = ')'
 1708:     ()
 1709:  0: ()
 1710:     12(abcde(fsh)xyz(foo(bar))lmno)89
 1711:  0: (fsh)
 1712: 
 1713: /\(  ( (?>[^()]+) | (?R) )* \) /Ix
 1714: Capturing subpattern count = 1
 1715: Options: extended
 1716: First char = '('
 1717: Need char = ')'
 1718:     (ab(xy)cd)
 1719:  0: (ab(xy)cd)
 1720:  1: cd
 1721: 
 1722: /\( ( ( (?>[^()]+) | (?R) )* ) \) /Ix
 1723: Capturing subpattern count = 2
 1724: Options: extended
 1725: First char = '('
 1726: Need char = ')'
 1727:     (ab(xy)cd)
 1728:  0: (ab(xy)cd)
 1729:  1: ab(xy)cd
 1730:  2: cd
 1731: 
 1732: /\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /Ix
 1733: Capturing subpattern count = 3
 1734: Options: extended
 1735: First char = '('
 1736: Need char = ')'
 1737:     (ab(xy)cd)
 1738:  0: (ab(xy)cd)
 1739:  1: <unset>
 1740:  2: ab(xy)cd
 1741:  3: cd
 1742:     (123ab(xy)cd)
 1743:  0: (123ab(xy)cd)
 1744:  1: 123
 1745:  2: ab(xy)cd
 1746:  3: cd
 1747: 
 1748: /\( ( (123)? ( (?>[^()]+) | (?R) )* ) \) /Ix
 1749: Capturing subpattern count = 3
 1750: Options: extended
 1751: First char = '('
 1752: Need char = ')'
 1753:     (ab(xy)cd)
 1754:  0: (ab(xy)cd)
 1755:  1: ab(xy)cd
 1756:  2: <unset>
 1757:  3: cd
 1758:     (123ab(xy)cd)
 1759:  0: (123ab(xy)cd)
 1760:  1: 123ab(xy)cd
 1761:  2: 123
 1762:  3: cd
 1763: 
 1764: /\( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \) /Ix
 1765: Capturing subpattern count = 11
 1766: Options: extended
 1767: First char = '('
 1768: Need char = ')'
 1769:     (ab(xy)cd)
 1770:  0: (ab(xy)cd)
 1771:  1: ab(xy)cd
 1772:  2: ab(xy)cd
 1773:  3: ab(xy)cd
 1774:  4: ab(xy)cd
 1775:  5: ab(xy)cd
 1776:  6: ab(xy)cd
 1777:  7: ab(xy)cd
 1778:  8: ab(xy)cd
 1779:  9: ab(xy)cd
 1780: 10: ab(xy)cd
 1781: 11: cd
 1782: 
 1783: /\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /Ix
 1784: Capturing subpattern count = 3
 1785: Options: extended
 1786: First char = '('
 1787: Need char = ')'
 1788:     (abcd(xyz<p>qrs)123)
 1789:  0: (abcd(xyz<p>qrs)123)
 1790:  1: abcd(xyz<p>qrs)123
 1791:  2: 123
 1792: 
 1793: /\( ( ( (?>[^()]+) | ((?R)) )* ) \) /Ix
 1794: Capturing subpattern count = 3
 1795: Options: extended
 1796: First char = '('
 1797: Need char = ')'
 1798:     (ab(cd)ef)
 1799:  0: (ab(cd)ef)
 1800:  1: ab(cd)ef
 1801:  2: ef
 1802:  3: (cd)
 1803:     (ab(cd(ef)gh)ij)
 1804:  0: (ab(cd(ef)gh)ij)
 1805:  1: ab(cd(ef)gh)ij
 1806:  2: ij
 1807:  3: (cd(ef)gh)
 1808: 
 1809: /^[[:alnum:]]/DZ
 1810: ------------------------------------------------------------------
 1811:         Bra
 1812:         ^
 1813:         [0-9A-Za-z]
 1814:         Ket
 1815:         End
 1816: ------------------------------------------------------------------
 1817: Capturing subpattern count = 0
 1818: Options: anchored
 1819: No first char
 1820: No need char
 1821: 
 1822: /^[[:^alnum:]]/DZ
 1823: ------------------------------------------------------------------
 1824:         Bra
 1825:         ^
 1826:         [\x00-/:-@[-`{-\xff] (neg)
 1827:         Ket
 1828:         End
 1829: ------------------------------------------------------------------
 1830: Capturing subpattern count = 0
 1831: Options: anchored
 1832: No first char
 1833: No need char
 1834: 
 1835: /^[[:alpha:]]/DZ
 1836: ------------------------------------------------------------------
 1837:         Bra
 1838:         ^
 1839:         [A-Za-z]
 1840:         Ket
 1841:         End
 1842: ------------------------------------------------------------------
 1843: Capturing subpattern count = 0
 1844: Options: anchored
 1845: No first char
 1846: No need char
 1847: 
 1848: /^[[:^alpha:]]/DZ
 1849: ------------------------------------------------------------------
 1850:         Bra
 1851:         ^
 1852:         [\x00-@[-`{-\xff] (neg)
 1853:         Ket
 1854:         End
 1855: ------------------------------------------------------------------
 1856: Capturing subpattern count = 0
 1857: Options: anchored
 1858: No first char
 1859: No need char
 1860: 
 1861: /[_[:alpha:]]/IS
 1862: Capturing subpattern count = 0
 1863: No options
 1864: No first char
 1865: No need char
 1866: Subject length lower bound = 1
 1867: Starting byte set: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
 1868:   _ a b c d e f g h i j k l m n o p q r s t u v w x y z 
 1869: 
 1870: /^[[:ascii:]]/DZ
 1871: ------------------------------------------------------------------
 1872:         Bra
 1873:         ^
 1874:         [\x00-\x7f]
 1875:         Ket
 1876:         End
 1877: ------------------------------------------------------------------
 1878: Capturing subpattern count = 0
 1879: Options: anchored
 1880: No first char
 1881: No need char
 1882: 
 1883: /^[[:^ascii:]]/DZ
 1884: ------------------------------------------------------------------
 1885:         Bra
 1886:         ^
 1887:         [\x80-\xff] (neg)
 1888:         Ket
 1889:         End
 1890: ------------------------------------------------------------------
 1891: Capturing subpattern count = 0
 1892: Options: anchored
 1893: No first char
 1894: No need char
 1895: 
 1896: /^[[:blank:]]/DZ
 1897: ------------------------------------------------------------------
 1898:         Bra
 1899:         ^
 1900:         [\x09 ]
 1901:         Ket
 1902:         End
 1903: ------------------------------------------------------------------
 1904: Capturing subpattern count = 0
 1905: Options: anchored
 1906: No first char
 1907: No need char
 1908: 
 1909: /^[[:^blank:]]/DZ
 1910: ------------------------------------------------------------------
 1911:         Bra
 1912:         ^
 1913:         [\x00-\x08\x0a-\x1f!-\xff] (neg)
 1914:         Ket
 1915:         End
 1916: ------------------------------------------------------------------
 1917: Capturing subpattern count = 0
 1918: Options: anchored
 1919: No first char
 1920: No need char
 1921: 
 1922: /[\n\x0b\x0c\x0d[:blank:]]/IS
 1923: Capturing subpattern count = 0
 1924: Contains explicit CR or LF match
 1925: No options
 1926: No first char
 1927: No need char
 1928: Subject length lower bound = 1
 1929: Starting byte set: \x09 \x0a \x0b \x0c \x0d \x20 
 1930: 
 1931: /^[[:cntrl:]]/DZ
 1932: ------------------------------------------------------------------
 1933:         Bra
 1934:         ^
 1935:         [\x00-\x1f\x7f]
 1936:         Ket
 1937:         End
 1938: ------------------------------------------------------------------
 1939: Capturing subpattern count = 0
 1940: Options: anchored
 1941: No first char
 1942: No need char
 1943: 
 1944: /^[[:digit:]]/DZ
 1945: ------------------------------------------------------------------
 1946:         Bra
 1947:         ^
 1948:         [0-9]
 1949:         Ket
 1950:         End
 1951: ------------------------------------------------------------------
 1952: Capturing subpattern count = 0
 1953: Options: anchored
 1954: No first char
 1955: No need char
 1956: 
 1957: /^[[:graph:]]/DZ
 1958: ------------------------------------------------------------------
 1959:         Bra
 1960:         ^
 1961:         [!-~]
 1962:         Ket
 1963:         End
 1964: ------------------------------------------------------------------
 1965: Capturing subpattern count = 0
 1966: Options: anchored
 1967: No first char
 1968: No need char
 1969: 
 1970: /^[[:lower:]]/DZ
 1971: ------------------------------------------------------------------
 1972:         Bra
 1973:         ^
 1974:         [a-z]
 1975:         Ket
 1976:         End
 1977: ------------------------------------------------------------------
 1978: Capturing subpattern count = 0
 1979: Options: anchored
 1980: No first char
 1981: No need char
 1982: 
 1983: /^[[:print:]]/DZ
 1984: ------------------------------------------------------------------
 1985:         Bra
 1986:         ^
 1987:         [ -~]
 1988:         Ket
 1989:         End
 1990: ------------------------------------------------------------------
 1991: Capturing subpattern count = 0
 1992: Options: anchored
 1993: No first char
 1994: No need char
 1995: 
 1996: /^[[:punct:]]/DZ
 1997: ------------------------------------------------------------------
 1998:         Bra
 1999:         ^
 2000:         [!-/:-@[-`{-~]
 2001:         Ket
 2002:         End
 2003: ------------------------------------------------------------------
 2004: Capturing subpattern count = 0
 2005: Options: anchored
 2006: No first char
 2007: No need char
 2008: 
 2009: /^[[:space:]]/DZ
 2010: ------------------------------------------------------------------
 2011:         Bra
 2012:         ^
 2013:         [\x09-\x0d ]
 2014:         Ket
 2015:         End
 2016: ------------------------------------------------------------------
 2017: Capturing subpattern count = 0
 2018: Options: anchored
 2019: No first char
 2020: No need char
 2021: 
 2022: /^[[:upper:]]/DZ
 2023: ------------------------------------------------------------------
 2024:         Bra
 2025:         ^
 2026:         [A-Z]
 2027:         Ket
 2028:         End
 2029: ------------------------------------------------------------------
 2030: Capturing subpattern count = 0
 2031: Options: anchored
 2032: No first char
 2033: No need char
 2034: 
 2035: /^[[:xdigit:]]/DZ
 2036: ------------------------------------------------------------------
 2037:         Bra
 2038:         ^
 2039:         [0-9A-Fa-f]
 2040:         Ket
 2041:         End
 2042: ------------------------------------------------------------------
 2043: Capturing subpattern count = 0
 2044: Options: anchored
 2045: No first char
 2046: No need char
 2047: 
 2048: /^[[:word:]]/DZ
 2049: ------------------------------------------------------------------
 2050:         Bra
 2051:         ^
 2052:         [0-9A-Z_a-z]
 2053:         Ket
 2054:         End
 2055: ------------------------------------------------------------------
 2056: Capturing subpattern count = 0
 2057: Options: anchored
 2058: No first char
 2059: No need char
 2060: 
 2061: /^[[:^cntrl:]]/DZ
 2062: ------------------------------------------------------------------
 2063:         Bra
 2064:         ^
 2065:         [ -~\x80-\xff] (neg)
 2066:         Ket
 2067:         End
 2068: ------------------------------------------------------------------
 2069: Capturing subpattern count = 0
 2070: Options: anchored
 2071: No first char
 2072: No need char
 2073: 
 2074: /^[12[:^digit:]]/DZ
 2075: ------------------------------------------------------------------
 2076:         Bra
 2077:         ^
 2078:         [\x00-/12:-\xff] (neg)
 2079:         Ket
 2080:         End
 2081: ------------------------------------------------------------------
 2082: Capturing subpattern count = 0
 2083: Options: anchored
 2084: No first char
 2085: No need char
 2086: 
 2087: /^[[:^blank:]]/DZ
 2088: ------------------------------------------------------------------
 2089:         Bra
 2090:         ^
 2091:         [\x00-\x08\x0a-\x1f!-\xff] (neg)
 2092:         Ket
 2093:         End
 2094: ------------------------------------------------------------------
 2095: Capturing subpattern count = 0
 2096: Options: anchored
 2097: No first char
 2098: No need char
 2099: 
 2100: /[01[:alpha:]%]/DZ
 2101: ------------------------------------------------------------------
 2102:         Bra
 2103:         [%01A-Za-z]
 2104:         Ket
 2105:         End
 2106: ------------------------------------------------------------------
 2107: Capturing subpattern count = 0
 2108: No options
 2109: No first char
 2110: No need char
 2111: 
 2112: /[[.ch.]]/I
 2113: Failed: POSIX collating elements are not supported at offset 1
 2114: 
 2115: /[[=ch=]]/I
 2116: Failed: POSIX collating elements are not supported at offset 1
 2117: 
 2118: /[[:rhubarb:]]/I
 2119: Failed: unknown POSIX class name at offset 3
 2120: 
 2121: /[[:upper:]]/Ii
 2122: Capturing subpattern count = 0
 2123: Options: caseless
 2124: No first char
 2125: No need char
 2126:     A
 2127:  0: A
 2128:     a
 2129:  0: a
 2130: 
 2131: /[[:lower:]]/Ii
 2132: Capturing subpattern count = 0
 2133: Options: caseless
 2134: No first char
 2135: No need char
 2136:     A
 2137:  0: A
 2138:     a
 2139:  0: a
 2140: 
 2141: /((?-i)[[:lower:]])[[:lower:]]/Ii
 2142: Capturing subpattern count = 1
 2143: Options: caseless
 2144: No first char
 2145: No need char
 2146:     ab
 2147:  0: ab
 2148:  1: a
 2149:     aB
 2150:  0: aB
 2151:  1: a
 2152:     *** Failers
 2153:  0: ai
 2154:  1: a
 2155:     Ab
 2156: No match
 2157:     AB
 2158: No match
 2159: 
 2160: /[\200-\110]/I
 2161: Failed: range out of order in character class at offset 9
 2162: 
 2163: /^(?(0)f|b)oo/I
 2164: Failed: invalid condition (?(0) at offset 6
 2165: 
 2166: /This one's here because of the large output vector needed/I
 2167: Capturing subpattern count = 0
 2168: No options
 2169: First char = 'T'
 2170: Need char = 'd'
 2171: 
 2172: /(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\w+)\s+(\270)/I
 2173: Capturing subpattern count = 271
 2174: Max back reference = 270
 2175: No options
 2176: No first char
 2177: No need char
 2178:     \O900 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC
 2179:  0: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC
 2180:  1: 1 
 2181:  2: 2 
 2182:  3: 3 
 2183:  4: 4 
 2184:  5: 5 
 2185:  6: 6 
 2186:  7: 7 
 2187:  8: 8 
 2188:  9: 9 
 2189: 10: 10 
 2190: 11: 11 
 2191: 12: 12 
 2192: 13: 13 
 2193: 14: 14 
 2194: 15: 15 
 2195: 16: 16 
 2196: 17: 17 
 2197: 18: 18 
 2198: 19: 19 
 2199: 20: 20 
 2200: 21: 21 
 2201: 22: 22 
 2202: 23: 23 
 2203: 24: 24 
 2204: 25: 25 
 2205: 26: 26 
 2206: 27: 27 
 2207: 28: 28 
 2208: 29: 29 
 2209: 30: 30 
 2210: 31: 31 
 2211: 32: 32 
 2212: 33: 33 
 2213: 34: 34 
 2214: 35: 35 
 2215: 36: 36 
 2216: 37: 37 
 2217: 38: 38 
 2218: 39: 39 
 2219: 40: 40 
 2220: 41: 41 
 2221: 42: 42 
 2222: 43: 43 
 2223: 44: 44 
 2224: 45: 45 
 2225: 46: 46 
 2226: 47: 47 
 2227: 48: 48 
 2228: 49: 49 
 2229: 50: 50 
 2230: 51: 51 
 2231: 52: 52 
 2232: 53: 53 
 2233: 54: 54 
 2234: 55: 55 
 2235: 56: 56 
 2236: 57: 57 
 2237: 58: 58 
 2238: 59: 59 
 2239: 60: 60 
 2240: 61: 61 
 2241: 62: 62 
 2242: 63: 63 
 2243: 64: 64 
 2244: 65: 65 
 2245: 66: 66 
 2246: 67: 67 
 2247: 68: 68 
 2248: 69: 69 
 2249: 70: 70 
 2250: 71: 71 
 2251: 72: 72 
 2252: 73: 73 
 2253: 74: 74 
 2254: 75: 75 
 2255: 76: 76 
 2256: 77: 77 
 2257: 78: 78 
 2258: 79: 79 
 2259: 80: 80 
 2260: 81: 81 
 2261: 82: 82 
 2262: 83: 83 
 2263: 84: 84 
 2264: 85: 85 
 2265: 86: 86 
 2266: 87: 87 
 2267: 88: 88 
 2268: 89: 89 
 2269: 90: 90 
 2270: 91: 91 
 2271: 92: 92 
 2272: 93: 93 
 2273: 94: 94 
 2274: 95: 95 
 2275: 96: 96 
 2276: 97: 97 
 2277: 98: 98 
 2278: 99: 99 
 2279: 100: 100 
 2280: 101: 101 
 2281: 102: 102 
 2282: 103: 103 
 2283: 104: 104 
 2284: 105: 105 
 2285: 106: 106 
 2286: 107: 107 
 2287: 108: 108 
 2288: 109: 109 
 2289: 110: 110 
 2290: 111: 111 
 2291: 112: 112 
 2292: 113: 113 
 2293: 114: 114 
 2294: 115: 115 
 2295: 116: 116 
 2296: 117: 117 
 2297: 118: 118 
 2298: 119: 119 
 2299: 120: 120 
 2300: 121: 121 
 2301: 122: 122 
 2302: 123: 123 
 2303: 124: 124 
 2304: 125: 125 
 2305: 126: 126 
 2306: 127: 127 
 2307: 128: 128 
 2308: 129: 129 
 2309: 130: 130 
 2310: 131: 131 
 2311: 132: 132 
 2312: 133: 133 
 2313: 134: 134 
 2314: 135: 135 
 2315: 136: 136 
 2316: 137: 137 
 2317: 138: 138 
 2318: 139: 139 
 2319: 140: 140 
 2320: 141: 141 
 2321: 142: 142 
 2322: 143: 143 
 2323: 144: 144 
 2324: 145: 145 
 2325: 146: 146 
 2326: 147: 147 
 2327: 148: 148 
 2328: 149: 149 
 2329: 150: 150 
 2330: 151: 151 
 2331: 152: 152 
 2332: 153: 153 
 2333: 154: 154 
 2334: 155: 155 
 2335: 156: 156 
 2336: 157: 157 
 2337: 158: 158 
 2338: 159: 159 
 2339: 160: 160 
 2340: 161: 161 
 2341: 162: 162 
 2342: 163: 163 
 2343: 164: 164 
 2344: 165: 165 
 2345: 166: 166 
 2346: 167: 167 
 2347: 168: 168 
 2348: 169: 169 
 2349: 170: 170 
 2350: 171: 171 
 2351: 172: 172 
 2352: 173: 173 
 2353: 174: 174 
 2354: 175: 175 
 2355: 176: 176 
 2356: 177: 177 
 2357: 178: 178 
 2358: 179: 179 
 2359: 180: 180 
 2360: 181: 181 
 2361: 182: 182 
 2362: 183: 183 
 2363: 184: 184 
 2364: 185: 185 
 2365: 186: 186 
 2366: 187: 187 
 2367: 188: 188 
 2368: 189: 189 
 2369: 190: 190 
 2370: 191: 191 
 2371: 192: 192 
 2372: 193: 193 
 2373: 194: 194 
 2374: 195: 195 
 2375: 196: 196 
 2376: 197: 197 
 2377: 198: 198 
 2378: 199: 199 
 2379: 200: 200 
 2380: 201: 201 
 2381: 202: 202 
 2382: 203: 203 
 2383: 204: 204 
 2384: 205: 205 
 2385: 206: 206 
 2386: 207: 207 
 2387: 208: 208 
 2388: 209: 209 
 2389: 210: 210 
 2390: 211: 211 
 2391: 212: 212 
 2392: 213: 213 
 2393: 214: 214 
 2394: 215: 215 
 2395: 216: 216 
 2396: 217: 217 
 2397: 218: 218 
 2398: 219: 219 
 2399: 220: 220 
 2400: 221: 221 
 2401: 222: 222 
 2402: 223: 223 
 2403: 224: 224 
 2404: 225: 225 
 2405: 226: 226 
 2406: 227: 227 
 2407: 228: 228 
 2408: 229: 229 
 2409: 230: 230 
 2410: 231: 231 
 2411: 232: 232 
 2412: 233: 233 
 2413: 234: 234 
 2414: 235: 235 
 2415: 236: 236 
 2416: 237: 237 
 2417: 238: 238 
 2418: 239: 239 
 2419: 240: 240 
 2420: 241: 241 
 2421: 242: 242 
 2422: 243: 243 
 2423: 244: 244 
 2424: 245: 245 
 2425: 246: 246 
 2426: 247: 247 
 2427: 248: 248 
 2428: 249: 249 
 2429: 250: 250 
 2430: 251: 251 
 2431: 252: 252 
 2432: 253: 253 
 2433: 254: 254 
 2434: 255: 255 
 2435: 256: 256 
 2436: 257: 257 
 2437: 258: 258 
 2438: 259: 259 
 2439: 260: 260 
 2440: 261: 261 
 2441: 262: 262 
 2442: 263: 263 
 2443: 264: 264 
 2444: 265: 265 
 2445: 266: 266 
 2446: 267: 267 
 2447: 268: 268 
 2448: 269: 269 
 2449: 270: ABC
 2450: 271: ABC
 2451: 
 2452: /This one's here because Perl does this differently and PCRE can't at present/I
 2453: Capturing subpattern count = 0
 2454: No options
 2455: First char = 'T'
 2456: Need char = 't'
 2457: 
 2458: /(main(O)?)+/I
 2459: Capturing subpattern count = 2
 2460: No options
 2461: First char = 'm'
 2462: Need char = 'n'
 2463:     mainmain
 2464:  0: mainmain
 2465:  1: main
 2466:     mainOmain
 2467:  0: mainOmain
 2468:  1: main
 2469:  2: O
 2470: 
 2471: /These are all cases where Perl does it differently (nested captures)/I
 2472: Capturing subpattern count = 1
 2473: No options
 2474: First char = 'T'
 2475: Need char = 's'
 2476: 
 2477: /^(a(b)?)+$/I
 2478: Capturing subpattern count = 2
 2479: Options: anchored
 2480: No first char
 2481: No need char
 2482:     aba
 2483:  0: aba
 2484:  1: a
 2485:  2: b
 2486: 
 2487: /^(aa(bb)?)+$/I
 2488: Capturing subpattern count = 2
 2489: Options: anchored
 2490: No first char
 2491: No need char
 2492:     aabbaa
 2493:  0: aabbaa
 2494:  1: aa
 2495:  2: bb
 2496: 
 2497: /^(aa|aa(bb))+$/I
 2498: Capturing subpattern count = 2
 2499: Options: anchored
 2500: No first char
 2501: No need char
 2502:     aabbaa
 2503:  0: aabbaa
 2504:  1: aa
 2505:  2: bb
 2506: 
 2507: /^(aa(bb)??)+$/I
 2508: Capturing subpattern count = 2
 2509: Options: anchored
 2510: No first char
 2511: No need char
 2512:     aabbaa
 2513:  0: aabbaa
 2514:  1: aa
 2515:  2: bb
 2516: 
 2517: /^(?:aa(bb)?)+$/I
 2518: Capturing subpattern count = 1
 2519: Options: anchored
 2520: No first char
 2521: No need char
 2522:     aabbaa
 2523:  0: aabbaa
 2524:  1: bb
 2525: 
 2526: /^(aa(b(b))?)+$/I
 2527: Capturing subpattern count = 3
 2528: Options: anchored
 2529: No first char
 2530: No need char
 2531:     aabbaa
 2532:  0: aabbaa
 2533:  1: aa
 2534:  2: bb
 2535:  3: b
 2536: 
 2537: /^(?:aa(b(b))?)+$/I
 2538: Capturing subpattern count = 2
 2539: Options: anchored
 2540: No first char
 2541: No need char
 2542:     aabbaa
 2543:  0: aabbaa
 2544:  1: bb
 2545:  2: b
 2546: 
 2547: /^(?:aa(b(?:b))?)+$/I
 2548: Capturing subpattern count = 1
 2549: Options: anchored
 2550: No first char
 2551: No need char
 2552:     aabbaa
 2553:  0: aabbaa
 2554:  1: bb
 2555: 
 2556: /^(?:aa(bb(?:b))?)+$/I
 2557: Capturing subpattern count = 1
 2558: Options: anchored
 2559: No first char
 2560: No need char
 2561:     aabbbaa
 2562:  0: aabbbaa
 2563:  1: bbb
 2564: 
 2565: /^(?:aa(b(?:bb))?)+$/I
 2566: Capturing subpattern count = 1
 2567: Options: anchored
 2568: No first char
 2569: No need char
 2570:     aabbbaa
 2571:  0: aabbbaa
 2572:  1: bbb
 2573: 
 2574: /^(?:aa(?:b(b))?)+$/I
 2575: Capturing subpattern count = 1
 2576: Options: anchored
 2577: No first char
 2578: No need char
 2579:     aabbaa
 2580:  0: aabbaa
 2581:  1: b
 2582: 
 2583: /^(?:aa(?:b(bb))?)+$/I
 2584: Capturing subpattern count = 1
 2585: Options: anchored
 2586: No first char
 2587: No need char
 2588:     aabbbaa
 2589:  0: aabbbaa
 2590:  1: bb
 2591: 
 2592: /^(aa(b(bb))?)+$/I
 2593: Capturing subpattern count = 3
 2594: Options: anchored
 2595: No first char
 2596: No need char
 2597:     aabbbaa
 2598:  0: aabbbaa
 2599:  1: aa
 2600:  2: bbb
 2601:  3: bb
 2602: 
 2603: /^(aa(bb(bb))?)+$/I
 2604: Capturing subpattern count = 3
 2605: Options: anchored
 2606: No first char
 2607: No need char
 2608:     aabbbbaa
 2609:  0: aabbbbaa
 2610:  1: aa
 2611:  2: bbbb
 2612:  3: bb
 2613: 
 2614: /--------------------------------------------------------------------/I
 2615: Capturing subpattern count = 0
 2616: No options
 2617: First char = '-'
 2618: Need char = '-'
 2619: 
 2620: /#/IxDZ
 2621: ------------------------------------------------------------------
 2622:         Bra
 2623:         Ket
 2624:         End
 2625: ------------------------------------------------------------------
 2626: Capturing subpattern count = 0
 2627: Options: extended
 2628: No first char
 2629: No need char
 2630: 
 2631: /a#/IxDZ
 2632: ------------------------------------------------------------------
 2633:         Bra
 2634:         a
 2635:         Ket
 2636:         End
 2637: ------------------------------------------------------------------
 2638: Capturing subpattern count = 0
 2639: Options: extended
 2640: First char = 'a'
 2641: No need char
 2642: 
 2643: /[\s]/DZ
 2644: ------------------------------------------------------------------
 2645:         Bra
 2646:         [\x09\x0a\x0c\x0d ]
 2647:         Ket
 2648:         End
 2649: ------------------------------------------------------------------
 2650: Capturing subpattern count = 0
 2651: No options
 2652: No first char
 2653: No need char
 2654: 
 2655: /[\S]/DZ
 2656: ------------------------------------------------------------------
 2657:         Bra
 2658:         [\x00-\x08\x0b\x0e-\x1f!-\xff] (neg)
 2659:         Ket
 2660:         End
 2661: ------------------------------------------------------------------
 2662: Capturing subpattern count = 0
 2663: No options
 2664: No first char
 2665: No need char
 2666: 
 2667: /a(?i)b/DZ
 2668: ------------------------------------------------------------------
 2669:         Bra
 2670:         a
 2671:      /i b
 2672:         Ket
 2673:         End
 2674: ------------------------------------------------------------------
 2675: Capturing subpattern count = 0
 2676: No options
 2677: First char = 'a'
 2678: Need char = 'b' (caseless)
 2679:     ab
 2680:  0: ab
 2681:     aB
 2682:  0: aB
 2683:     *** Failers
 2684: No match
 2685:     AB
 2686: No match
 2687: 
 2688: /(a(?i)b)/DZ
 2689: ------------------------------------------------------------------
 2690:         Bra
 2691:         CBra 1
 2692:         a
 2693:      /i b
 2694:         Ket
 2695:         Ket
 2696:         End
 2697: ------------------------------------------------------------------
 2698: Capturing subpattern count = 1
 2699: No options
 2700: First char = 'a'
 2701: Need char = 'b' (caseless)
 2702:     ab
 2703:  0: ab
 2704:  1: ab
 2705:     aB
 2706:  0: aB
 2707:  1: aB
 2708:     *** Failers
 2709: No match
 2710:     AB
 2711: No match
 2712: 
 2713: /   (?i)abc/IxDZ
 2714: ------------------------------------------------------------------
 2715:         Bra
 2716:      /i abc
 2717:         Ket
 2718:         End
 2719: ------------------------------------------------------------------
 2720: Capturing subpattern count = 0
 2721: Options: caseless extended
 2722: First char = 'a' (caseless)
 2723: Need char = 'c' (caseless)
 2724: 
 2725: /#this is a comment
 2726:   (?i)abc/IxDZ
 2727: ------------------------------------------------------------------
 2728:         Bra
 2729:      /i abc
 2730:         Ket
 2731:         End
 2732: ------------------------------------------------------------------
 2733: Capturing subpattern count = 0
 2734: Options: caseless extended
 2735: First char = 'a' (caseless)
 2736: Need char = 'c' (caseless)
 2737: 
 2738: /123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ
 2739: ------------------------------------------------------------------
 2740:         Bra
 2741:         123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
 2742:         Ket
 2743:         End
 2744: ------------------------------------------------------------------
 2745: Capturing subpattern count = 0
 2746: No options
 2747: First char = '1'
 2748: Need char = '0'
 2749: 
 2750: /\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ
 2751: ------------------------------------------------------------------
 2752:         Bra
 2753:         123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
 2754:         Ket
 2755:         End
 2756: ------------------------------------------------------------------
 2757: Capturing subpattern count = 0
 2758: No options
 2759: First char = '1'
 2760: Need char = '0'
 2761: 
 2762: /\Q\E/DZ
 2763: ------------------------------------------------------------------
 2764:         Bra
 2765:         Ket
 2766:         End
 2767: ------------------------------------------------------------------
 2768: Capturing subpattern count = 0
 2769: No options
 2770: No first char
 2771: No need char
 2772:     \
 2773:  0: 
 2774: 
 2775: /\Q\Ex/DZ
 2776: ------------------------------------------------------------------
 2777:         Bra
 2778:         x
 2779:         Ket
 2780:         End
 2781: ------------------------------------------------------------------
 2782: Capturing subpattern count = 0
 2783: No options
 2784: First char = 'x'
 2785: No need char
 2786: 
 2787: / \Q\E/DZ
 2788: ------------------------------------------------------------------
 2789:         Bra
 2790:          
 2791:         Ket
 2792:         End
 2793: ------------------------------------------------------------------
 2794: Capturing subpattern count = 0
 2795: No options
 2796: First char = ' '
 2797: No need char
 2798: 
 2799: /a\Q\E/DZ
 2800: ------------------------------------------------------------------
 2801:         Bra
 2802:         a
 2803:         Ket
 2804:         End
 2805: ------------------------------------------------------------------
 2806: Capturing subpattern count = 0
 2807: No options
 2808: First char = 'a'
 2809: No need char
 2810:   abc
 2811:  0: a
 2812:   bca
 2813:  0: a
 2814:   bac
 2815:  0: a
 2816: 
 2817: /a\Q\Eb/DZ
 2818: ------------------------------------------------------------------
 2819:         Bra
 2820:         ab
 2821:         Ket
 2822:         End
 2823: ------------------------------------------------------------------
 2824: Capturing subpattern count = 0
 2825: No options
 2826: First char = 'a'
 2827: Need char = 'b'
 2828:   abc
 2829:  0: ab
 2830: 
 2831: /\Q\Eabc/DZ
 2832: ------------------------------------------------------------------
 2833:         Bra
 2834:         abc
 2835:         Ket
 2836:         End
 2837: ------------------------------------------------------------------
 2838: Capturing subpattern count = 0
 2839: No options
 2840: First char = 'a'
 2841: Need char = 'c'
 2842: 
 2843: /x*+\w/DZ
 2844: ------------------------------------------------------------------
 2845:         Bra
 2846:         x*+
 2847:         \w
 2848:         Ket
 2849:         End
 2850: ------------------------------------------------------------------
 2851: Capturing subpattern count = 0
 2852: No options
 2853: No first char
 2854: No need char
 2855:     *** Failers
 2856:  0: F
 2857:     xxxxx
 2858: No match
 2859: 
 2860: /x?+/DZ
 2861: ------------------------------------------------------------------
 2862:         Bra
 2863:         x?+
 2864:         Ket
 2865:         End
 2866: ------------------------------------------------------------------
 2867: Capturing subpattern count = 0
 2868: No options
 2869: No first char
 2870: No need char
 2871: 
 2872: /x++/DZ
 2873: ------------------------------------------------------------------
 2874:         Bra
 2875:         x++
 2876:         Ket
 2877:         End
 2878: ------------------------------------------------------------------
 2879: Capturing subpattern count = 0
 2880: No options
 2881: First char = 'x'
 2882: No need char
 2883: 
 2884: /x{1,3}+/DZ
 2885: ------------------------------------------------------------------
 2886:         Bra
 2887:         Once
 2888:         x
 2889:         x{0,2}
 2890:         Ket
 2891:         Ket
 2892:         End
 2893: ------------------------------------------------------------------
 2894: Capturing subpattern count = 0
 2895: No options
 2896: First char = 'x'
 2897: No need char
 2898: 
 2899: /(x)*+/DZ
 2900: ------------------------------------------------------------------
 2901:         Bra
 2902:         Braposzero
 2903:         CBraPos 1
 2904:         x
 2905:         KetRpos
 2906:         Ket
 2907:         End
 2908: ------------------------------------------------------------------
 2909: Capturing subpattern count = 1
 2910: No options
 2911: No first char
 2912: No need char
 2913: 
 2914: /^(\w++|\s++)*$/I
 2915: Capturing subpattern count = 1
 2916: Options: anchored
 2917: No first char
 2918: No need char
 2919:     now is the time for all good men to come to the aid of the party
 2920:  0: now is the time for all good men to come to the aid of the party
 2921:  1: party
 2922:     *** Failers
 2923: No match
 2924:     this is not a line with only words and spaces!
 2925: No match
 2926: 
 2927: /(\d++)(\w)/I
 2928: Capturing subpattern count = 2
 2929: No options
 2930: No first char
 2931: No need char
 2932:     12345a
 2933:  0: 12345a
 2934:  1: 12345
 2935:  2: a
 2936:     *** Failers
 2937: No match
 2938:     12345+
 2939: No match
 2940: 
 2941: /a++b/I
 2942: Capturing subpattern count = 0
 2943: No options
 2944: First char = 'a'
 2945: Need char = 'b'
 2946:     aaab
 2947:  0: aaab
 2948: 
 2949: /(a++b)/I
 2950: Capturing subpattern count = 1
 2951: No options
 2952: First char = 'a'
 2953: Need char = 'b'
 2954:     aaab
 2955:  0: aaab
 2956:  1: aaab
 2957: 
 2958: /(a++)b/I
 2959: Capturing subpattern count = 1
 2960: No options
 2961: First char = 'a'
 2962: Need char = 'b'
 2963:     aaab
 2964:  0: aaab
 2965:  1: aaa
 2966: 
 2967: /([^()]++|\([^()]*\))+/I
 2968: Capturing subpattern count = 1
 2969: No options
 2970: No first char
 2971: No need char
 2972:     ((abc(ade)ufh()()x
 2973:  0: abc(ade)ufh()()x
 2974:  1: x
 2975: 
 2976: /\(([^()]++|\([^()]+\))+\)/I
 2977: Capturing subpattern count = 1
 2978: No options
 2979: First char = '('
 2980: Need char = ')'
 2981:     (abc)
 2982:  0: (abc)
 2983:  1: abc
 2984:     (abc(def)xyz)
 2985:  0: (abc(def)xyz)
 2986:  1: xyz
 2987:     *** Failers
 2988: No match
 2989:     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 2990: No match
 2991: 
 2992: /(abc){1,3}+/DZ
 2993: ------------------------------------------------------------------
 2994:         Bra
 2995:         Once
 2996:         CBra 1
 2997:         abc
 2998:         Ket
 2999:         Brazero
 3000:         Bra
 3001:         CBra 1
 3002:         abc
 3003:         Ket
 3004:         Brazero
 3005:         CBra 1
 3006:         abc
 3007:         Ket
 3008:         Ket
 3009:         Ket
 3010:         Ket
 3011:         End
 3012: ------------------------------------------------------------------
 3013: Capturing subpattern count = 1
 3014: No options
 3015: First char = 'a'
 3016: Need char = 'c'
 3017: 
 3018: /a+?+/I
 3019: Failed: nothing to repeat at offset 3
 3020: 
 3021: /a{2,3}?+b/I
 3022: Failed: nothing to repeat at offset 7
 3023: 
 3024: /(?U)a+?+/I
 3025: Failed: nothing to repeat at offset 7
 3026: 
 3027: /a{2,3}?+b/IU
 3028: Failed: nothing to repeat at offset 7
 3029: 
 3030: /x(?U)a++b/DZ
 3031: ------------------------------------------------------------------
 3032:         Bra
 3033:         x
 3034:         a++
 3035:         b
 3036:         Ket
 3037:         End
 3038: ------------------------------------------------------------------
 3039: Capturing subpattern count = 0
 3040: No options
 3041: First char = 'x'
 3042: Need char = 'b'
 3043:     xaaaab
 3044:  0: xaaaab
 3045: 
 3046: /(?U)xa++b/DZ
 3047: ------------------------------------------------------------------
 3048:         Bra
 3049:         x
 3050:         a++
 3051:         b
 3052:         Ket
 3053:         End
 3054: ------------------------------------------------------------------
 3055: Capturing subpattern count = 0
 3056: Options: ungreedy
 3057: First char = 'x'
 3058: Need char = 'b'
 3059:     xaaaab
 3060:  0: xaaaab
 3061: 
 3062: /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/DZ
 3063: ------------------------------------------------------------------
 3064:         Bra
 3065:         ^
 3066:         CBra 1
 3067:         CBra 2
 3068:         a+
 3069:         Ket
 3070:         CBra 3
 3071:         [ab]+?
 3072:         Ket
 3073:         CBra 4
 3074:         [bc]+
 3075:         Ket
 3076:         CBra 5
 3077:         \w*
 3078:         Ket
 3079:         Ket
 3080:         Ket
 3081:         End
 3082: ------------------------------------------------------------------
 3083: Capturing subpattern count = 5
 3084: Options: anchored
 3085: No first char
 3086: No need char
 3087: 
 3088: /^x(?U)a+b/DZ
 3089: ------------------------------------------------------------------
 3090:         Bra
 3091:         ^
 3092:         x
 3093:         a++
 3094:         b
 3095:         Ket
 3096:         End
 3097: ------------------------------------------------------------------
 3098: Capturing subpattern count = 0
 3099: Options: anchored
 3100: No first char
 3101: Need char = 'b'
 3102: 
 3103: /^x(?U)(a+)b/DZ
 3104: ------------------------------------------------------------------
 3105:         Bra
 3106:         ^
 3107:         x
 3108:         CBra 1
 3109:         a+?
 3110:         Ket
 3111:         b
 3112:         Ket
 3113:         End
 3114: ------------------------------------------------------------------
 3115: Capturing subpattern count = 1
 3116: Options: anchored
 3117: No first char
 3118: Need char = 'b'
 3119: 
 3120: /[.x.]/I
 3121: Failed: POSIX collating elements are not supported at offset 0
 3122: 
 3123: /[=x=]/I
 3124: Failed: POSIX collating elements are not supported at offset 0
 3125: 
 3126: /[:x:]/I
 3127: Failed: POSIX named classes are supported only within a class at offset 0
 3128: 
 3129: /\l/I
 3130: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
 3131: 
 3132: /\L/I
 3133: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
 3134: 
 3135: /\N{name}/I
 3136: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
 3137: 
 3138: /\u/I
 3139: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
 3140: 
 3141: /\U/I
 3142: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
 3143: 
 3144: /[/I
 3145: Failed: missing terminating ] for character class at offset 1
 3146: 
 3147: /[a-/I
 3148: Failed: missing terminating ] for character class at offset 3
 3149: 
 3150: /[[:space:]/I
 3151: Failed: missing terminating ] for character class at offset 10
 3152: 
 3153: /[\s]/IDZ
 3154: ------------------------------------------------------------------
 3155:         Bra
 3156:         [\x09\x0a\x0c\x0d ]
 3157:         Ket
 3158:         End
 3159: ------------------------------------------------------------------
 3160: Capturing subpattern count = 0
 3161: No options
 3162: No first char
 3163: No need char
 3164: 
 3165: /[[:space:]]/IDZ
 3166: ------------------------------------------------------------------
 3167:         Bra
 3168:         [\x09-\x0d ]
 3169:         Ket
 3170:         End
 3171: ------------------------------------------------------------------
 3172: Capturing subpattern count = 0
 3173: No options
 3174: No first char
 3175: No need char
 3176: 
 3177: /[[:space:]abcde]/IDZ
 3178: ------------------------------------------------------------------
 3179:         Bra
 3180:         [\x09-\x0d a-e]
 3181:         Ket
 3182:         End
 3183: ------------------------------------------------------------------
 3184: Capturing subpattern count = 0
 3185: No options
 3186: No first char
 3187: No need char
 3188: 
 3189: /< (?: (?(R) \d++  | [^<>]*+) | (?R)) * >/Ix
 3190: Capturing subpattern count = 0
 3191: Options: extended
 3192: First char = '<'
 3193: Need char = '>'
 3194:     <>
 3195:  0: <>
 3196:     <abcd>
 3197:  0: <abcd>
 3198:     <abc <123> hij>
 3199:  0: <abc <123> hij>
 3200:     <abc <def> hij>
 3201:  0: <def>
 3202:     <abc<>def>
 3203:  0: <abc<>def>
 3204:     <abc<>
 3205:  0: <>
 3206:     *** Failers
 3207: No match
 3208:     <abc
 3209: No match
 3210: 
 3211: |8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ
 3212: ------------------------------------------------------------------
 3213:         Bra
 3214:         8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X
 3215:         \b
 3216:         Ket
 3217:         End
 3218: ------------------------------------------------------------------
 3219: Capturing subpattern count = 0
 3220: No options
 3221: First char = '8'
 3222: Need char = 'X'
 3223: 
 3224: |\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ
 3225: ------------------------------------------------------------------
 3226:         Bra
 3227:         $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X
 3228:         \b
 3229:         Ket
 3230:         End
 3231: ------------------------------------------------------------------
 3232: Capturing subpattern count = 0
 3233: No options
 3234: First char = '$'
 3235: Need char = 'X'
 3236: 
 3237: /(.*)\d+\1/I
 3238: Capturing subpattern count = 1
 3239: Max back reference = 1
 3240: No options
 3241: No first char
 3242: No need char
 3243: 
 3244: /(.*)\d+/I
 3245: Capturing subpattern count = 1
 3246: No options
 3247: First char at start or follows newline
 3248: No need char
 3249: 
 3250: /(.*)\d+\1/Is
 3251: Capturing subpattern count = 1
 3252: Max back reference = 1
 3253: Options: dotall
 3254: No first char
 3255: No need char
 3256: 
 3257: /(.*)\d+/Is
 3258: Capturing subpattern count = 1
 3259: Options: anchored dotall
 3260: No first char
 3261: No need char
 3262: 
 3263: /(.*(xyz))\d+\2/I
 3264: Capturing subpattern count = 2
 3265: Max back reference = 2
 3266: No options
 3267: First char at start or follows newline
 3268: Need char = 'z'
 3269: 
 3270: /((.*))\d+\1/I
 3271: Capturing subpattern count = 2
 3272: Max back reference = 1
 3273: No options
 3274: No first char
 3275: No need char
 3276:     abc123bc
 3277:  0: bc123bc
 3278:  1: bc
 3279:  2: bc
 3280: 
 3281: /a[b]/I
 3282: Capturing subpattern count = 0
 3283: No options
 3284: First char = 'a'
 3285: Need char = 'b'
 3286: 
 3287: /(?=a).*/I
 3288: Capturing subpattern count = 0
 3289: No options
 3290: First char = 'a'
 3291: No need char
 3292: 
 3293: /(?=abc).xyz/IiI
 3294: Capturing subpattern count = 0
 3295: Options: caseless
 3296: First char = 'a' (caseless)
 3297: Need char = 'z' (caseless)
 3298: 
 3299: /(?=abc)(?i).xyz/I
 3300: Capturing subpattern count = 0
 3301: No options
 3302: First char = 'a'
 3303: Need char = 'z' (caseless)
 3304: 
 3305: /(?=a)(?=b)/I
 3306: Capturing subpattern count = 0
 3307: No options
 3308: First char = 'a'
 3309: No need char
 3310: 
 3311: /(?=.)a/I
 3312: Capturing subpattern count = 0
 3313: No options
 3314: First char = 'a'
 3315: No need char
 3316: 
 3317: /((?=abcda)a)/I
 3318: Capturing subpattern count = 1
 3319: No options
 3320: First char = 'a'
 3321: Need char = 'a'
 3322: 
 3323: /((?=abcda)ab)/I
 3324: Capturing subpattern count = 1
 3325: No options
 3326: First char = 'a'
 3327: Need char = 'b'
 3328: 
 3329: /()a/I
 3330: Capturing subpattern count = 1
 3331: No options
 3332: No first char
 3333: Need char = 'a'
 3334: 
 3335: /(?(1)ab|ac)(.)/I
 3336: Capturing subpattern count = 1
 3337: No options
 3338: First char = 'a'
 3339: No need char
 3340: 
 3341: /(?(1)abz|acz)(.)/I
 3342: Capturing subpattern count = 1
 3343: No options
 3344: First char = 'a'
 3345: Need char = 'z'
 3346: 
 3347: /(?(1)abz)(.)/I
 3348: Capturing subpattern count = 1
 3349: No options
 3350: No first char
 3351: No need char
 3352: 
 3353: /(?(1)abz)(1)23/I
 3354: Capturing subpattern count = 1
 3355: No options
 3356: No first char
 3357: Need char = '3'
 3358: 
 3359: /(a)+/I
 3360: Capturing subpattern count = 1
 3361: No options
 3362: First char = 'a'
 3363: No need char
 3364: 
 3365: /(a){2,3}/I
 3366: Capturing subpattern count = 1
 3367: No options
 3368: First char = 'a'
 3369: Need char = 'a'
 3370: 
 3371: /(a)*/I
 3372: Capturing subpattern count = 1
 3373: No options
 3374: No first char
 3375: No need char
 3376: 
 3377: /[a]/I
 3378: Capturing subpattern count = 0
 3379: No options
 3380: First char = 'a'
 3381: No need char
 3382: 
 3383: /[ab]/I
 3384: Capturing subpattern count = 0
 3385: No options
 3386: No first char
 3387: No need char
 3388: 
 3389: /[ab]/IS
 3390: Capturing subpattern count = 0
 3391: No options
 3392: No first char
 3393: No need char
 3394: Subject length lower bound = 1
 3395: Starting byte set: a b 
 3396: 
 3397: /[^a]/I
 3398: Capturing subpattern count = 0
 3399: No options
 3400: No first char
 3401: No need char
 3402: 
 3403: /\d456/I
 3404: Capturing subpattern count = 0
 3405: No options
 3406: No first char
 3407: Need char = '6'
 3408: 
 3409: /\d456/IS
 3410: Capturing subpattern count = 0
 3411: No options
 3412: No first char
 3413: Need char = '6'
 3414: Subject length lower bound = 4
 3415: Starting byte set: 0 1 2 3 4 5 6 7 8 9 
 3416: 
 3417: /a^b/I
 3418: Capturing subpattern count = 0
 3419: No options
 3420: First char = 'a'
 3421: Need char = 'b'
 3422: 
 3423: /^a/Im
 3424: Capturing subpattern count = 0
 3425: Options: multiline
 3426: First char at start or follows newline
 3427: Need char = 'a'
 3428:   abcde
 3429:  0: a
 3430:   xy\nabc
 3431:  0: a
 3432:   *** Failers
 3433: No match
 3434:   xyabc
 3435: No match
 3436: 
 3437: /c|abc/I
 3438: Capturing subpattern count = 0
 3439: No options
 3440: No first char
 3441: Need char = 'c'
 3442: 
 3443: /(?i)[ab]/IS
 3444: Capturing subpattern count = 0
 3445: Options: caseless
 3446: No first char
 3447: No need char
 3448: Subject length lower bound = 1
 3449: Starting byte set: A B a b 
 3450: 
 3451: /[ab](?i)cd/IS
 3452: Capturing subpattern count = 0
 3453: No options
 3454: No first char
 3455: Need char = 'd' (caseless)
 3456: Subject length lower bound = 3
 3457: Starting byte set: a b 
 3458: 
 3459: /abc(?C)def/I
 3460: Capturing subpattern count = 0
 3461: No options
 3462: First char = 'a'
 3463: Need char = 'f'
 3464:     abcdef
 3465: --->abcdef
 3466:   0 ^  ^       d
 3467:  0: abcdef
 3468:     1234abcdef
 3469: --->1234abcdef
 3470:   0     ^  ^       d
 3471:  0: abcdef
 3472:     *** Failers
 3473: No match
 3474:     abcxyz
 3475: No match
 3476:     abcxyzf
 3477: --->abcxyzf
 3478:   0 ^  ^        d
 3479: No match
 3480: 
 3481: /abc(?C)de(?C1)f/I
 3482: Capturing subpattern count = 0
 3483: No options
 3484: First char = 'a'
 3485: Need char = 'f'
 3486:     123abcdef
 3487: --->123abcdef
 3488:   0    ^  ^       d
 3489:   1    ^    ^     f
 3490:  0: abcdef
 3491: 
 3492: /(?C1)\dabc(?C2)def/IS
 3493: Capturing subpattern count = 0
 3494: No options
 3495: No first char
 3496: Need char = 'f'
 3497: Subject length lower bound = 7
 3498: Starting byte set: 0 1 2 3 4 5 6 7 8 9 
 3499:     1234abcdef
 3500: --->1234abcdef
 3501:   1 ^              \d
 3502:   1  ^             \d
 3503:   1   ^            \d
 3504:   1    ^           \d
 3505:   2    ^   ^       d
 3506:  0: 4abcdef
 3507:     *** Failers
 3508: No match
 3509:     abcdef
 3510: No match
 3511: 
 3512: /(?C1)\dabc(?C2)def/ISS
 3513: Capturing subpattern count = 0
 3514: No options
 3515: No first char
 3516: Need char = 'f'
 3517:     1234abcdef
 3518: --->1234abcdef
 3519:   1 ^              \d
 3520:   1  ^             \d
 3521:   1   ^            \d
 3522:   1    ^           \d
 3523:   2    ^   ^       d
 3524:  0: 4abcdef
 3525:     *** Failers
 3526: No match
 3527:     abcdef
 3528: --->abcdef
 3529:   1 ^          \d
 3530:   1  ^         \d
 3531:   1   ^        \d
 3532:   1    ^       \d
 3533:   1     ^      \d
 3534:   1      ^     \d
 3535: No match
 3536: 
 3537: /(?C255)ab/I
 3538: Capturing subpattern count = 0
 3539: No options
 3540: First char = 'a'
 3541: Need char = 'b'
 3542: 
 3543: /(?C256)ab/I
 3544: Failed: number after (?C is > 255 at offset 6
 3545: 
 3546: /(?Cab)xx/I
 3547: Failed: closing ) for (?C expected at offset 3
 3548: 
 3549: /(?C12vr)x/I
 3550: Failed: closing ) for (?C expected at offset 5
 3551: 
 3552: /abc(?C)def/I
 3553: Capturing subpattern count = 0
 3554: No options
 3555: First char = 'a'
 3556: Need char = 'f'
 3557:     *** Failers
 3558: No match
 3559:     \x83\x0\x61bcdef
 3560: --->\x83\x00abcdef
 3561:   0         ^  ^       d
 3562:  0: abcdef
 3563: 
 3564: /(abc)(?C)de(?C1)f/I
 3565: Capturing subpattern count = 1
 3566: No options
 3567: First char = 'a'
 3568: Need char = 'f'
 3569:     123abcdef
 3570: --->123abcdef
 3571:   0    ^  ^       d
 3572:   1    ^    ^     f
 3573:  0: abcdef
 3574:  1: abc
 3575:     123abcdef\C+
 3576: Callout 0: last capture = 1
 3577:  0: <unset>
 3578:  1: abc
 3579: --->123abcdef
 3580:        ^  ^       d
 3581: Callout 1: last capture = 1
 3582:  0: <unset>
 3583:  1: abc
 3584: --->123abcdef
 3585:        ^    ^     f
 3586:  0: abcdef
 3587:  1: abc
 3588:     123abcdef\C-
 3589:  0: abcdef
 3590:  1: abc
 3591:     *** Failers
 3592: No match
 3593:     123abcdef\C!1
 3594: --->123abcdef
 3595:   0    ^  ^       d
 3596:   1    ^    ^     f
 3597: No match
 3598: 
 3599: /(?C0)(abc(?C1))*/I
 3600: Capturing subpattern count = 1
 3601: No options
 3602: No first char
 3603: No need char
 3604:     abcabcabc
 3605: --->abcabcabc
 3606:   0 ^             (abc(?C1))*
 3607:   1 ^  ^          )
 3608:   1 ^     ^       )
 3609:   1 ^        ^    )
 3610:  0: abcabcabc
 3611:  1: abc
 3612:     abcabc\C!1!3
 3613: --->abcabc
 3614:   0 ^          (abc(?C1))*
 3615:   1 ^  ^       )
 3616:   1 ^     ^    )
 3617:  0: abcabc
 3618:  1: abc
 3619:     *** Failers
 3620: --->*** Failers
 3621:   0 ^               (abc(?C1))*
 3622:  0: 
 3623:     abcabcabc\C!1!3
 3624: --->abcabcabc
 3625:   0 ^             (abc(?C1))*
 3626:   1 ^  ^          )
 3627:   1 ^     ^       )
 3628:   1 ^        ^    )
 3629:  0: abcabc
 3630:  1: abc
 3631: 
 3632: /(\d{3}(?C))*/I
 3633: Capturing subpattern count = 1
 3634: No options
 3635: No first char
 3636: No need char
 3637:     123\C+
 3638: Callout 0: last capture = -1
 3639:  0: <unset>
 3640: --->123
 3641:     ^  ^    )
 3642:  0: 123
 3643:  1: 123
 3644:     123456\C+
 3645: Callout 0: last capture = -1
 3646:  0: <unset>
 3647: --->123456
 3648:     ^  ^       )
 3649: Callout 0: last capture = 1
 3650:  0: <unset>
 3651:  1: 123
 3652: --->123456
 3653:     ^     ^    )
 3654:  0: 123456
 3655:  1: 456
 3656:     123456789\C+
 3657: Callout 0: last capture = -1
 3658:  0: <unset>
 3659: --->123456789
 3660:     ^  ^          )
 3661: Callout 0: last capture = 1
 3662:  0: <unset>
 3663:  1: 123
 3664: --->123456789
 3665:     ^     ^       )
 3666: Callout 0: last capture = 1
 3667:  0: <unset>
 3668:  1: 456
 3669: --->123456789
 3670:     ^        ^    )
 3671:  0: 123456789
 3672:  1: 789
 3673: 
 3674: /((xyz)(?C)p|(?C1)xyzabc)/I
 3675: Capturing subpattern count = 2
 3676: No options
 3677: First char = 'x'
 3678: No need char
 3679:     xyzabc\C+
 3680: Callout 0: last capture = 2
 3681:  0: <unset>
 3682:  1: <unset>
 3683:  2: xyz
 3684: --->xyzabc
 3685:     ^  ^       p
 3686: Callout 1: last capture = -1
 3687:  0: <unset>
 3688: --->xyzabc
 3689:     ^          x
 3690:  0: xyzabc
 3691:  1: xyzabc
 3692: 
 3693: /(X)((xyz)(?C)p|(?C1)xyzabc)/I
 3694: Capturing subpattern count = 3
 3695: No options
 3696: First char = 'X'
 3697: Need char = 'x'
 3698:     Xxyzabc\C+
 3699: Callout 0: last capture = 3
 3700:  0: <unset>
 3701:  1: X
 3702:  2: <unset>
 3703:  3: xyz
 3704: --->Xxyzabc
 3705:     ^   ^       p
 3706: Callout 1: last capture = 1
 3707:  0: <unset>
 3708:  1: X
 3709: --->Xxyzabc
 3710:     ^^          x
 3711:  0: Xxyzabc
 3712:  1: X
 3713:  2: xyzabc
 3714: 
 3715: /(?=(abc))(?C)abcdef/I
 3716: Capturing subpattern count = 1
 3717: No options
 3718: First char = 'a'
 3719: Need char = 'f'
 3720:     abcdef\C+
 3721: Callout 0: last capture = 1
 3722:  0: <unset>
 3723:  1: abc
 3724: --->abcdef
 3725:     ^          a
 3726:  0: abcdef
 3727:  1: abc
 3728: 
 3729: /(?!(abc)(?C1)d)(?C2)abcxyz/I
 3730: Capturing subpattern count = 1
 3731: No options
 3732: First char = 'a'
 3733: Need char = 'z'
 3734:     abcxyz\C+
 3735: Callout 1: last capture = 1
 3736:  0: <unset>
 3737:  1: abc
 3738: --->abcxyz
 3739:     ^  ^       d
 3740: Callout 2: last capture = -1
 3741:  0: <unset>
 3742: --->abcxyz
 3743:     ^          a
 3744:  0: abcxyz
 3745: 
 3746: /(?<=(abc)(?C))xyz/I
 3747: Capturing subpattern count = 1
 3748: No options
 3749: First char = 'x'
 3750: Need char = 'z'
 3751:    abcxyz\C+
 3752: Callout 0: last capture = 1
 3753:  0: <unset>
 3754:  1: abc
 3755: --->abcxyz
 3756:        ^       )
 3757:  0: xyz
 3758:  1: abc
 3759: 
 3760: /a(b+)(c*)(?C1)/I
 3761: Capturing subpattern count = 2
 3762: No options
 3763: First char = 'a'
 3764: Need char = 'b'
 3765:     abbbbbccc\C*1
 3766: --->abbbbbccc
 3767:   1 ^        ^    
 3768: Callout data = 1
 3769:   1 ^       ^     
 3770: Callout data = 1
 3771:   1 ^      ^      
 3772: Callout data = 1
 3773:   1 ^     ^       
 3774: Callout data = 1
 3775:   1 ^    ^        
 3776: Callout data = 1
 3777:   1 ^   ^         
 3778: Callout data = 1
 3779:   1 ^  ^          
 3780: Callout data = 1
 3781:   1 ^ ^           
 3782: Callout data = 1
 3783: No match
 3784: 
 3785: /a(b+?)(c*?)(?C1)/I
 3786: Capturing subpattern count = 2
 3787: No options
 3788: First char = 'a'
 3789: Need char = 'b'
 3790:     abbbbbccc\C*1
 3791: --->abbbbbccc
 3792:   1 ^ ^           
 3793: Callout data = 1
 3794:   1 ^  ^          
 3795: Callout data = 1
 3796:   1 ^   ^         
 3797: Callout data = 1
 3798:   1 ^    ^        
 3799: Callout data = 1
 3800:   1 ^     ^       
 3801: Callout data = 1
 3802:   1 ^      ^      
 3803: Callout data = 1
 3804:   1 ^       ^     
 3805: Callout data = 1
 3806:   1 ^        ^    
 3807: Callout data = 1
 3808: No match
 3809: 
 3810: /(?C)abc/I
 3811: Capturing subpattern count = 0
 3812: No options
 3813: First char = 'a'
 3814: Need char = 'c'
 3815: 
 3816: /(?C)^abc/I
 3817: Capturing subpattern count = 0
 3818: Options: anchored
 3819: No first char
 3820: No need char
 3821: 
 3822: /(?C)a|b/IS
 3823: Capturing subpattern count = 0
 3824: No options
 3825: No first char
 3826: No need char
 3827: Subject length lower bound = 1
 3828: Starting byte set: a b 
 3829: 
 3830: /(?R)/I
 3831: Failed: recursive call could loop indefinitely at offset 3
 3832: 
 3833: /(a|(?R))/I
 3834: Failed: recursive call could loop indefinitely at offset 6
 3835: 
 3836: /(ab|(bc|(de|(?R))))/I
 3837: Failed: recursive call could loop indefinitely at offset 15
 3838: 
 3839: /x(ab|(bc|(de|(?R))))/I
 3840: Capturing subpattern count = 3
 3841: No options
 3842: First char = 'x'
 3843: No need char
 3844:     xab
 3845:  0: xab
 3846:  1: ab
 3847:     xbc
 3848:  0: xbc
 3849:  1: bc
 3850:  2: bc
 3851:     xde
 3852:  0: xde
 3853:  1: de
 3854:  2: de
 3855:  3: de
 3856:     xxab
 3857:  0: xxab
 3858:  1: xab
 3859:  2: xab
 3860:  3: xab
 3861:     xxxab
 3862:  0: xxxab
 3863:  1: xxab
 3864:  2: xxab
 3865:  3: xxab
 3866:     *** Failers
 3867: No match
 3868:     xyab
 3869: No match
 3870: 
 3871: /(ab|(bc|(de|(?1))))/I
 3872: Failed: recursive call could loop indefinitely at offset 15
 3873: 
 3874: /x(ab|(bc|(de|(?1)x)x)x)/I
 3875: Failed: recursive call could loop indefinitely at offset 16
 3876: 
 3877: /^([^()]|\((?1)*\))*$/I
 3878: Capturing subpattern count = 1
 3879: Options: anchored
 3880: No first char
 3881: No need char
 3882:     abc
 3883:  0: abc
 3884:  1: c
 3885:     a(b)c
 3886:  0: a(b)c
 3887:  1: c
 3888:     a(b(c))d
 3889:  0: a(b(c))d
 3890:  1: d
 3891:     *** Failers)
 3892: No match
 3893:     a(b(c)d
 3894: No match
 3895: 
 3896: /^>abc>([^()]|\((?1)*\))*<xyz<$/I
 3897: Capturing subpattern count = 1
 3898: Options: anchored
 3899: No first char
 3900: Need char = '<'
 3901:    >abc>123<xyz<
 3902:  0: >abc>123<xyz<
 3903:  1: 3
 3904:    >abc>1(2)3<xyz<
 3905:  0: >abc>1(2)3<xyz<
 3906:  1: 3
 3907:    >abc>(1(2)3)<xyz<
 3908:  0: >abc>(1(2)3)<xyz<
 3909:  1: (1(2)3)
 3910: 
 3911: /(a(?1)b)/DZ
 3912: ------------------------------------------------------------------
 3913:         Bra
 3914:         CBra 1
 3915:         a
 3916:         Recurse
 3917:         b
 3918:         Ket
 3919:         Ket
 3920:         End
 3921: ------------------------------------------------------------------
 3922: Capturing subpattern count = 1
 3923: No options
 3924: First char = 'a'
 3925: Need char = 'b'
 3926: 
 3927: /(a(?1)+b)/DZ
 3928: ------------------------------------------------------------------
 3929:         Bra
 3930:         CBra 1
 3931:         a
 3932:         Once
 3933:         Recurse
 3934:         KetRmax
 3935:         b
 3936:         Ket
 3937:         Ket
 3938:         End
 3939: ------------------------------------------------------------------
 3940: Capturing subpattern count = 1
 3941: No options
 3942: First char = 'a'
 3943: Need char = 'b'
 3944: 
 3945: /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I
 3946: Capturing subpattern count = 2
 3947: Options: anchored
 3948: No first char
 3949: No need char
 3950:     12
 3951:  0: 12
 3952:  1: 12
 3953:     (((2+2)*-3)-7)
 3954:  0: (((2+2)*-3)-7)
 3955:  1: (((2+2)*-3)-7)
 3956:  2: -
 3957:     -12
 3958:  0: -12
 3959:  1: -12
 3960:     *** Failers
 3961: No match
 3962:     ((2+2)*-3)-7)
 3963: No match
 3964: 
 3965: /^(x(y|(?1){2})z)/I
 3966: Capturing subpattern count = 2
 3967: Options: anchored
 3968: No first char
 3969: No need char
 3970:     xyz
 3971:  0: xyz
 3972:  1: xyz
 3973:  2: y
 3974:     xxyzxyzz
 3975:  0: xxyzxyzz
 3976:  1: xxyzxyzz
 3977:  2: xyzxyz
 3978:     *** Failers
 3979: No match
 3980:     xxyzz
 3981: No match
 3982:     xxyzxyzxyzz
 3983: No match
 3984: 
 3985: /((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/Ix
 3986: Capturing subpattern count = 2
 3987: Options: extended
 3988: First char = '<'
 3989: Need char = '>'
 3990:     <>
 3991:  0: <>
 3992:  1: <>
 3993:  2: <>
 3994:     <abcd>
 3995:  0: <abcd>
 3996:  1: <abcd>
 3997:  2: <abcd>
 3998:     <abc <123> hij>
 3999:  0: <abc <123> hij>
 4000:  1: <abc <123> hij>
 4001:  2: <abc <123> hij>
 4002:     <abc <def> hij>
 4003:  0: <def>
 4004:  1: <def>
 4005:  2: <def>
 4006:     <abc<>def>
 4007:  0: <abc<>def>
 4008:  1: <abc<>def>
 4009:  2: <abc<>def>
 4010:     <abc<>
 4011:  0: <>
 4012:  1: <>
 4013:  2: <>
 4014:     *** Failers
 4015: No match
 4016:     <abc
 4017: No match
 4018: 
 4019: /(?1)/I
 4020: Failed: reference to non-existent subpattern at offset 3
 4021: 
 4022: /((?2)(abc)/I
 4023: Failed: missing ) at offset 10
 4024: 
 4025: /^(abc)def(?1)/I
 4026: Capturing subpattern count = 1
 4027: Options: anchored
 4028: No first char
 4029: No need char
 4030:     abcdefabc
 4031:  0: abcdefabc
 4032:  1: abc
 4033: 
 4034: /^(a|b|c)=(?1)+/I
 4035: Capturing subpattern count = 1
 4036: Options: anchored
 4037: No first char
 4038: No need char
 4039:     a=a
 4040:  0: a=a
 4041:  1: a
 4042:     a=b
 4043:  0: a=b
 4044:  1: a
 4045:     a=bc
 4046:  0: a=bc
 4047:  1: a
 4048: 
 4049: /^(a|b|c)=((?1))+/I
 4050: Capturing subpattern count = 2
 4051: Options: anchored
 4052: No first char
 4053: No need char
 4054:     a=a
 4055:  0: a=a
 4056:  1: a
 4057:  2: a
 4058:     a=b
 4059:  0: a=b
 4060:  1: a
 4061:  2: b
 4062:     a=bc
 4063:  0: a=bc
 4064:  1: a
 4065:  2: c
 4066: 
 4067: /a(?P<name1>b|c)d(?P<longername2>e)/DZ
 4068: ------------------------------------------------------------------
 4069:         Bra
 4070:         a
 4071:         CBra 1
 4072:         b
 4073:         Alt
 4074:         c
 4075:         Ket
 4076:         d
 4077:         CBra 2
 4078:         e
 4079:         Ket
 4080:         Ket
 4081:         End
 4082: ------------------------------------------------------------------
 4083: Capturing subpattern count = 2
 4084: Named capturing subpatterns:
 4085:   longername2   2
 4086:   name1         1
 4087: No options
 4088: First char = 'a'
 4089: Need char = 'e'
 4090:     abde
 4091:  0: abde
 4092:  1: b
 4093:  2: e
 4094:     acde
 4095:  0: acde
 4096:  1: c
 4097:  2: e
 4098: 
 4099: /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/DZ
 4100: ------------------------------------------------------------------
 4101:         Bra
 4102:         Bra
 4103:         a
 4104:         CBra 1
 4105:         c
 4106:         CBra 2
 4107:         d
 4108:         Ket
 4109:         Ket
 4110:         Ket
 4111:         CBra 3
 4112:         a
 4113:         Ket
 4114:         Ket
 4115:         End
 4116: ------------------------------------------------------------------
 4117: Capturing subpattern count = 3
 4118: Named capturing subpatterns:
 4119:   a   3
 4120:   c   1
 4121:   d   2
 4122: No options
 4123: First char = 'a'
 4124: Need char = 'a'
 4125: 
 4126: /(?P<a>a)...(?P=a)bbb(?P>a)d/DZ
 4127: ------------------------------------------------------------------
 4128:         Bra
 4129:         CBra 1
 4130:         a
 4131:         Ket
 4132:         Any
 4133:         Any
 4134:         Any
 4135:         \1
 4136:         bbb
 4137:         Recurse
 4138:         d
 4139:         Ket
 4140:         End
 4141: ------------------------------------------------------------------
 4142: Capturing subpattern count = 1
 4143: Max back reference = 1
 4144: Named capturing subpatterns:
 4145:   a   1
 4146: No options
 4147: First char = 'a'
 4148: Need char = 'd'
 4149: 
 4150: /^\W*(?:(?P<one>(?P<two>.)\W*(?P>one)\W*(?P=two)|)|(?P<three>(?P<four>.)\W*(?P>three)\W*(?P=four)|\W*.\W*))\W*$/Ii
 4151: Capturing subpattern count = 4
 4152: Max back reference = 4
 4153: Named capturing subpatterns:
 4154:   four    4
 4155:   one     1
 4156:   three   3
 4157:   two     2
 4158: Options: anchored caseless
 4159: No first char
 4160: No need char
 4161:     1221
 4162:  0: 1221
 4163:  1: 1221
 4164:  2: 1
 4165:     Satan, oscillate my metallic sonatas!
 4166:  0: Satan, oscillate my metallic sonatas!
 4167:  1: <unset>
 4168:  2: <unset>
 4169:  3: Satan, oscillate my metallic sonatas
 4170:  4: S
 4171:     A man, a plan, a canal: Panama!
 4172:  0: A man, a plan, a canal: Panama!
 4173:  1: <unset>
 4174:  2: <unset>
 4175:  3: A man, a plan, a canal: Panama
 4176:  4: A
 4177:     Able was I ere I saw Elba.
 4178:  0: Able was I ere I saw Elba.
 4179:  1: <unset>
 4180:  2: <unset>
 4181:  3: Able was I ere I saw Elba
 4182:  4: A
 4183:     *** Failers
 4184: No match
 4185:     The quick brown fox
 4186: No match
 4187: 
 4188: /((?(R)a|b))\1(?1)?/I
 4189: Capturing subpattern count = 1
 4190: Max back reference = 1
 4191: No options
 4192: No first char
 4193: No need char
 4194:   bb
 4195:  0: bb
 4196:  1: b
 4197:   bbaa
 4198:  0: bba
 4199:  1: b
 4200: 
 4201: /(.*)a/Is
 4202: Capturing subpattern count = 1
 4203: Options: anchored dotall
 4204: No first char
 4205: Need char = 'a'
 4206: 
 4207: /(.*)a\1/Is
 4208: Capturing subpattern count = 1
 4209: Max back reference = 1
 4210: Options: dotall
 4211: No first char
 4212: Need char = 'a'
 4213: 
 4214: /(.*)a(b)\2/Is
 4215: Capturing subpattern count = 2
 4216: Max back reference = 2
 4217: Options: anchored dotall
 4218: No first char
 4219: Need char = 'b'
 4220: 
 4221: /((.*)a|(.*)b)z/Is
 4222: Capturing subpattern count = 3
 4223: Options: anchored dotall
 4224: No first char
 4225: Need char = 'z'
 4226: 
 4227: /((.*)a|(.*)b)z\1/Is
 4228: Capturing subpattern count = 3
 4229: Max back reference = 1
 4230: Options: dotall
 4231: No first char
 4232: Need char = 'z'
 4233: 
 4234: /((.*)a|(.*)b)z\2/Is
 4235: Capturing subpattern count = 3
 4236: Max back reference = 2
 4237: Options: dotall
 4238: No first char
 4239: Need char = 'z'
 4240: 
 4241: /((.*)a|(.*)b)z\3/Is
 4242: Capturing subpattern count = 3
 4243: Max back reference = 3
 4244: Options: dotall
 4245: No first char
 4246: Need char = 'z'
 4247: 
 4248: /((.*)a|^(.*)b)z\3/Is
 4249: Capturing subpattern count = 3
 4250: Max back reference = 3
 4251: Options: anchored dotall
 4252: No first char
 4253: Need char = 'z'
 4254: 
 4255: /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is
 4256: Capturing subpattern count = 31
 4257: Options: anchored dotall
 4258: No first char
 4259: No need char
 4260: 
 4261: /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is
 4262: Capturing subpattern count = 31
 4263: Max back reference = 31
 4264: Options: dotall
 4265: No first char
 4266: No need char
 4267: 
 4268: /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is
 4269: Capturing subpattern count = 32
 4270: Max back reference = 32
 4271: Options: dotall
 4272: No first char
 4273: No need char
 4274: 
 4275: /(a)(bc)/INDZ
 4276: ------------------------------------------------------------------
 4277:         Bra
 4278:         Bra
 4279:         a
 4280:         Ket
 4281:         Bra
 4282:         bc
 4283:         Ket
 4284:         Ket
 4285:         End
 4286: ------------------------------------------------------------------
 4287: Capturing subpattern count = 0
 4288: Options: no_auto_capture
 4289: First char = 'a'
 4290: Need char = 'c'
 4291:   abc
 4292:  0: abc
 4293: 
 4294: /(?P<one>a)(bc)/INDZ
 4295: ------------------------------------------------------------------
 4296:         Bra
 4297:         CBra 1
 4298:         a
 4299:         Ket
 4300:         Bra
 4301:         bc
 4302:         Ket
 4303:         Ket
 4304:         End
 4305: ------------------------------------------------------------------
 4306: Capturing subpattern count = 1
 4307: Named capturing subpatterns:
 4308:   one   1
 4309: Options: no_auto_capture
 4310: First char = 'a'
 4311: Need char = 'c'
 4312:   abc
 4313:  0: abc
 4314:  1: a
 4315: 
 4316: /(a)(?P<named>bc)/INDZ
 4317: ------------------------------------------------------------------
 4318:         Bra
 4319:         Bra
 4320:         a
 4321:         Ket
 4322:         CBra 1
 4323:         bc
 4324:         Ket
 4325:         Ket
 4326:         End
 4327: ------------------------------------------------------------------
 4328: Capturing subpattern count = 1
 4329: Named capturing subpatterns:
 4330:   named   1
 4331: Options: no_auto_capture
 4332: First char = 'a'
 4333: Need char = 'c'
 4334: 
 4335: /(a+)*zz/I
 4336: Capturing subpattern count = 1
 4337: No options
 4338: No first char
 4339: Need char = 'z'
 4340:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M
 4341: Minimum match() limit = 8
 4342: Minimum match() recursion limit = 6
 4343:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz
 4344:  1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 4345:   aaaaaaaaaaaaaz\M
 4346: Minimum match() limit = 32768
 4347: Minimum match() recursion limit = 42
 4348: No match
 4349: 
 4350: /(aaa(?C1)bbb|ab)/I
 4351: Capturing subpattern count = 1
 4352: No options
 4353: First char = 'a'
 4354: Need char = 'b'
 4355:    aaabbb
 4356: --->aaabbb
 4357:   1 ^  ^       b
 4358:  0: aaabbb
 4359:  1: aaabbb
 4360:    aaabbb\C*0
 4361: --->aaabbb
 4362:   1 ^  ^       b
 4363:  0: aaabbb
 4364:  1: aaabbb
 4365:    aaabbb\C*1
 4366: --->aaabbb
 4367:   1 ^  ^       b
 4368: Callout data = 1
 4369:  0: ab
 4370:  1: ab
 4371:    aaabbb\C*-1
 4372: --->aaabbb
 4373:   1 ^  ^       b
 4374: Callout data = -1
 4375: No match
 4376: 
 4377: /ab(?P<one>cd)ef(?P<two>gh)/I
 4378: Capturing subpattern count = 2
 4379: Named capturing subpatterns:
 4380:   one   1
 4381:   two   2
 4382: No options
 4383: First char = 'a'
 4384: Need char = 'h'
 4385:     abcdefgh
 4386:  0: abcdefgh
 4387:  1: cd
 4388:  2: gh
 4389:     abcdefgh\C1\Gtwo
 4390:  0: abcdefgh
 4391:  1: cd
 4392:  2: gh
 4393:  1C cd (2)
 4394:   G gh (2) two
 4395:     abcdefgh\Cone\Ctwo
 4396:  0: abcdefgh
 4397:  1: cd
 4398:  2: gh
 4399:   C cd (2) one
 4400:   C gh (2) two
 4401:     abcdefgh\Cthree
 4402: no parentheses with name "three"
 4403:  0: abcdefgh
 4404:  1: cd
 4405:  2: gh
 4406: copy substring three failed -7
 4407: 
 4408: /(?P<Tes>)(?P<Test>)/DZ
 4409: ------------------------------------------------------------------
 4410:         Bra
 4411:         CBra 1
 4412:         Ket
 4413:         CBra 2
 4414:         Ket
 4415:         Ket
 4416:         End
 4417: ------------------------------------------------------------------
 4418: Capturing subpattern count = 2
 4419: Named capturing subpatterns:
 4420:   Tes    1
 4421:   Test   2
 4422: No options
 4423: No first char
 4424: No need char
 4425: 
 4426: /(?P<Test>)(?P<Tes>)/DZ
 4427: ------------------------------------------------------------------
 4428:         Bra
 4429:         CBra 1
 4430:         Ket
 4431:         CBra 2
 4432:         Ket
 4433:         Ket
 4434:         End
 4435: ------------------------------------------------------------------
 4436: Capturing subpattern count = 2
 4437: Named capturing subpatterns:
 4438:   Tes    2
 4439:   Test   1
 4440: No options
 4441: No first char
 4442: No need char
 4443: 
 4444: /(?P<Z>zz)(?P<A>aa)/I
 4445: Capturing subpattern count = 2
 4446: Named capturing subpatterns:
 4447:   A   2
 4448:   Z   1
 4449: No options
 4450: First char = 'z'
 4451: Need char = 'a'
 4452:     zzaa\CZ
 4453:  0: zzaa
 4454:  1: zz
 4455:  2: aa
 4456:   C zz (2) Z
 4457:     zzaa\CA
 4458:  0: zzaa
 4459:  1: zz
 4460:  2: aa
 4461:   C aa (2) A
 4462: 
 4463: /(?P<x>eks)(?P<x>eccs)/I
 4464: Failed: two named subpatterns have the same name at offset 15
 4465: 
 4466: /(?P<abc>abc(?P<def>def)(?P<abc>xyz))/I
 4467: Failed: two named subpatterns have the same name at offset 30
 4468: 
 4469: "\[((?P<elem>\d+)(,(?P>elem))*)\]"I
 4470: Capturing subpattern count = 3
 4471: Named capturing subpatterns:
 4472:   elem   2
 4473: No options
 4474: First char = '['
 4475: Need char = ']'
 4476:     [10,20,30,5,5,4,4,2,43,23,4234]
 4477:  0: [10,20,30,5,5,4,4,2,43,23,4234]
 4478:  1: 10,20,30,5,5,4,4,2,43,23,4234
 4479:  2: 10
 4480:  3: ,4234
 4481:     *** Failers
 4482: No match
 4483:     []
 4484: No match
 4485: 
 4486: "\[((?P<elem>\d+)(,(?P>elem))*)?\]"I
 4487: Capturing subpattern count = 3
 4488: Named capturing subpatterns:
 4489:   elem   2
 4490: No options
 4491: First char = '['
 4492: Need char = ']'
 4493:     [10,20,30,5,5,4,4,2,43,23,4234]
 4494:  0: [10,20,30,5,5,4,4,2,43,23,4234]
 4495:  1: 10,20,30,5,5,4,4,2,43,23,4234
 4496:  2: 10
 4497:  3: ,4234
 4498:     []
 4499:  0: []
 4500: 
 4501: /(a(b(?2)c))?/DZ
 4502: ------------------------------------------------------------------
 4503:         Bra
 4504:         Brazero
 4505:         CBra 1
 4506:         a
 4507:         CBra 2
 4508:         b
 4509:         Recurse
 4510:         c
 4511:         Ket
 4512:         Ket
 4513:         Ket
 4514:         End
 4515: ------------------------------------------------------------------
 4516: Capturing subpattern count = 2
 4517: No options
 4518: No first char
 4519: No need char
 4520: 
 4521: /(a(b(?2)c))*/DZ
 4522: ------------------------------------------------------------------
 4523:         Bra
 4524:         Brazero
 4525:         CBra 1
 4526:         a
 4527:         CBra 2
 4528:         b
 4529:         Recurse
 4530:         c
 4531:         Ket
 4532:         KetRmax
 4533:         Ket
 4534:         End
 4535: ------------------------------------------------------------------
 4536: Capturing subpattern count = 2
 4537: No options
 4538: No first char
 4539: No need char
 4540: 
 4541: /(a(b(?2)c)){0,2}/DZ
 4542: ------------------------------------------------------------------
 4543:         Bra
 4544:         Brazero
 4545:         Bra
 4546:         CBra 1
 4547:         a
 4548:         CBra 2
 4549:         b
 4550:         Recurse
 4551:         c
 4552:         Ket
 4553:         Ket
 4554:         Brazero
 4555:         CBra 1
 4556:         a
 4557:         CBra 2
 4558:         b
 4559:         Recurse
 4560:         c
 4561:         Ket
 4562:         Ket
 4563:         Ket
 4564:         Ket
 4565:         End
 4566: ------------------------------------------------------------------
 4567: Capturing subpattern count = 2
 4568: No options
 4569: No first char
 4570: No need char
 4571: 
 4572: /[ab]{1}+/DZ
 4573: ------------------------------------------------------------------
 4574:         Bra
 4575:         Once
 4576:         [ab]{1,1}
 4577:         Ket
 4578:         Ket
 4579:         End
 4580: ------------------------------------------------------------------
 4581: Capturing subpattern count = 0
 4582: No options
 4583: No first char
 4584: No need char
 4585: 
 4586: /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/Ii
 4587: Capturing subpattern count = 3
 4588: Options: caseless
 4589: No first char
 4590: Need char = 'g' (caseless)
 4591:      Baby Bjorn Active Carrier - With free SHIPPING!!
 4592:  0: Baby Bjorn Active Carrier - With free SHIPPING!!
 4593:  1: Baby Bjorn Active Carrier - With free SHIPPING!!
 4594: 
 4595: /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/IiS
 4596: Capturing subpattern count = 3
 4597: Options: caseless
 4598: No first char
 4599: Need char = 'g' (caseless)
 4600: Subject length lower bound = 8
 4601: No set of starting bytes
 4602:      Baby Bjorn Active Carrier - With free SHIPPING!!
 4603:  0: Baby Bjorn Active Carrier - With free SHIPPING!!
 4604:  1: Baby Bjorn Active Carrier - With free SHIPPING!!
 4605: 
 4606: /a*.*b/ISDZ
 4607: ------------------------------------------------------------------
 4608:         Bra
 4609:         a*
 4610:         Any*
 4611:         b
 4612:         Ket
 4613:         End
 4614: ------------------------------------------------------------------
 4615: Capturing subpattern count = 0
 4616: No options
 4617: No first char
 4618: Need char = 'b'
 4619: Subject length lower bound = 1
 4620: No set of starting bytes
 4621: 
 4622: /(a|b)*.?c/ISDZ
 4623: ------------------------------------------------------------------
 4624:         Bra
 4625:         Brazero
 4626:         CBra 1
 4627:         a
 4628:         Alt
 4629:         b
 4630:         KetRmax
 4631:         Any?
 4632:         c
 4633:         Ket
 4634:         End
 4635: ------------------------------------------------------------------
 4636: Capturing subpattern count = 1
 4637: No options
 4638: No first char
 4639: Need char = 'c'
 4640: Subject length lower bound = 1
 4641: No set of starting bytes
 4642: 
 4643: /abc(?C255)de(?C)f/DZ
 4644: ------------------------------------------------------------------
 4645:         Bra
 4646:         abc
 4647:         Callout 255 10 1
 4648:         de
 4649:         Callout 0 16 1
 4650:         f
 4651:         Ket
 4652:         End
 4653: ------------------------------------------------------------------
 4654: Capturing subpattern count = 0
 4655: No options
 4656: First char = 'a'
 4657: Need char = 'f'
 4658: 
 4659: /abcde/ICDZ
 4660: ------------------------------------------------------------------
 4661:         Bra
 4662:         Callout 255 0 1
 4663:         a
 4664:         Callout 255 1 1
 4665:         b
 4666:         Callout 255 2 1
 4667:         c
 4668:         Callout 255 3 1
 4669:         d
 4670:         Callout 255 4 1
 4671:         e
 4672:         Callout 255 5 0
 4673:         Ket
 4674:         End
 4675: ------------------------------------------------------------------
 4676: Capturing subpattern count = 0
 4677: Options:
 4678: First char = 'a'
 4679: Need char = 'e'
 4680:   abcde
 4681: --->abcde
 4682:  +0 ^         a
 4683:  +1 ^^        b
 4684:  +2 ^ ^       c
 4685:  +3 ^  ^      d
 4686:  +4 ^   ^     e
 4687:  +5 ^    ^    
 4688:  0: abcde
 4689:   abcdfe
 4690: --->abcdfe
 4691:  +0 ^          a
 4692:  +1 ^^         b
 4693:  +2 ^ ^        c
 4694:  +3 ^  ^       d
 4695:  +4 ^   ^      e
 4696: No match
 4697: 
 4698: /a*b/ICDZS
 4699: ------------------------------------------------------------------
 4700:         Bra
 4701:         Callout 255 0 2
 4702:         a*+
 4703:         Callout 255 2 1
 4704:         b
 4705:         Callout 255 3 0
 4706:         Ket
 4707:         End
 4708: ------------------------------------------------------------------
 4709: Capturing subpattern count = 0
 4710: Options:
 4711: No first char
 4712: Need char = 'b'
 4713: Subject length lower bound = 1
 4714: Starting byte set: a b 
 4715:   ab
 4716: --->ab
 4717:  +0 ^      a*
 4718:  +2 ^^     b
 4719:  +3 ^ ^    
 4720:  0: ab
 4721:   aaaab
 4722: --->aaaab
 4723:  +0 ^         a*
 4724:  +2 ^   ^     b
 4725:  +3 ^    ^    
 4726:  0: aaaab
 4727:   aaaacb
 4728: --->aaaacb
 4729:  +0 ^          a*
 4730:  +2 ^   ^      b
 4731:  +0  ^         a*
 4732:  +2  ^  ^      b
 4733:  +0   ^        a*
 4734:  +2   ^ ^      b
 4735:  +0    ^       a*
 4736:  +2    ^^      b
 4737:  +0      ^     a*
 4738:  +2      ^     b
 4739:  +3      ^^    
 4740:  0: b
 4741: 
 4742: /a*b/ICDZSS
 4743: ------------------------------------------------------------------
 4744:         Bra
 4745:         Callout 255 0 2
 4746:         a*+
 4747:         Callout 255 2 1
 4748:         b
 4749:         Callout 255 3 0
 4750:         Ket
 4751:         End
 4752: ------------------------------------------------------------------
 4753: Capturing subpattern count = 0
 4754: Options:
 4755: No first char
 4756: Need char = 'b'
 4757:   ab
 4758: --->ab
 4759:  +0 ^      a*
 4760:  +2 ^^     b
 4761:  +3 ^ ^    
 4762:  0: ab
 4763:   aaaab
 4764: --->aaaab
 4765:  +0 ^         a*
 4766:  +2 ^   ^     b
 4767:  +3 ^    ^    
 4768:  0: aaaab
 4769:   aaaacb
 4770: --->aaaacb
 4771:  +0 ^          a*
 4772:  +2 ^   ^      b
 4773:  +0  ^         a*
 4774:  +2  ^  ^      b
 4775:  +0   ^        a*
 4776:  +2   ^ ^      b
 4777:  +0    ^       a*
 4778:  +2    ^^      b
 4779:  +0     ^      a*
 4780:  +2     ^      b
 4781:  +0      ^     a*
 4782:  +2      ^     b
 4783:  +3      ^^    
 4784:  0: b
 4785: 
 4786: /a+b/ICDZ
 4787: ------------------------------------------------------------------
 4788:         Bra
 4789:         Callout 255 0 2
 4790:         a++
 4791:         Callout 255 2 1
 4792:         b
 4793:         Callout 255 3 0
 4794:         Ket
 4795:         End
 4796: ------------------------------------------------------------------
 4797: Capturing subpattern count = 0
 4798: Options:
 4799: First char = 'a'
 4800: Need char = 'b'
 4801:   ab
 4802: --->ab
 4803:  +0 ^      a+
 4804:  +2 ^^     b
 4805:  +3 ^ ^    
 4806:  0: ab
 4807:   aaaab
 4808: --->aaaab
 4809:  +0 ^         a+
 4810:  +2 ^   ^     b
 4811:  +3 ^    ^    
 4812:  0: aaaab
 4813:   aaaacb
 4814: --->aaaacb
 4815:  +0 ^          a+
 4816:  +2 ^   ^      b
 4817:  +0  ^         a+
 4818:  +2  ^  ^      b
 4819:  +0   ^        a+
 4820:  +2   ^ ^      b
 4821:  +0    ^       a+
 4822:  +2    ^^      b
 4823: No match
 4824: 
 4825: /(abc|def)x/ICDZS
 4826: ------------------------------------------------------------------
 4827:         Bra
 4828:         Callout 255 0 9
 4829:         CBra 1
 4830:         Callout 255 1 1
 4831:         a
 4832:         Callout 255 2 1
 4833:         b
 4834:         Callout 255 3 1
 4835:         c
 4836:         Callout 255 4 0
 4837:         Alt
 4838:         Callout 255 5 1
 4839:         d
 4840:         Callout 255 6 1
 4841:         e
 4842:         Callout 255 7 1
 4843:         f
 4844:         Callout 255 8 0
 4845:         Ket
 4846:         Callout 255 9 1
 4847:         x
 4848:         Callout 255 10 0
 4849:         Ket
 4850:         End
 4851: ------------------------------------------------------------------
 4852: Capturing subpattern count = 1
 4853: Options:
 4854: No first char
 4855: Need char = 'x'
 4856: Subject length lower bound = 4
 4857: Starting byte set: a d 
 4858:   abcx
 4859: --->abcx
 4860:  +0 ^        (abc|def)
 4861:  +1 ^        a
 4862:  +2 ^^       b
 4863:  +3 ^ ^      c
 4864:  +4 ^  ^     |
 4865:  +9 ^  ^     x
 4866: +10 ^   ^    
 4867:  0: abcx
 4868:  1: abc
 4869:   defx
 4870: --->defx
 4871:  +0 ^        (abc|def)
 4872:  +1 ^        a
 4873:  +5 ^        d
 4874:  +6 ^^       e
 4875:  +7 ^ ^      f
 4876:  +8 ^  ^     )
 4877:  +9 ^  ^     x
 4878: +10 ^   ^    
 4879:  0: defx
 4880:  1: def
 4881:   ** Failers 
 4882: No match
 4883:   abcdefzx
 4884: --->abcdefzx
 4885:  +0 ^            (abc|def)
 4886:  +1 ^            a
 4887:  +2 ^^           b
 4888:  +3 ^ ^          c
 4889:  +4 ^  ^         |
 4890:  +9 ^  ^         x
 4891:  +5 ^            d
 4892:  +0    ^         (abc|def)
 4893:  +1    ^         a
 4894:  +5    ^         d
 4895:  +6    ^^        e
 4896:  +7    ^ ^       f
 4897:  +8    ^  ^      )
 4898:  +9    ^  ^      x
 4899: No match
 4900: 
 4901: /(abc|def)x/ICDZSS
 4902: ------------------------------------------------------------------
 4903:         Bra
 4904:         Callout 255 0 9
 4905:         CBra 1
 4906:         Callout 255 1 1
 4907:         a
 4908:         Callout 255 2 1
 4909:         b
 4910:         Callout 255 3 1
 4911:         c
 4912:         Callout 255 4 0
 4913:         Alt
 4914:         Callout 255 5 1
 4915:         d
 4916:         Callout 255 6 1
 4917:         e
 4918:         Callout 255 7 1
 4919:         f
 4920:         Callout 255 8 0
 4921:         Ket
 4922:         Callout 255 9 1
 4923:         x
 4924:         Callout 255 10 0
 4925:         Ket
 4926:         End
 4927: ------------------------------------------------------------------
 4928: Capturing subpattern count = 1
 4929: Options:
 4930: No first char
 4931: Need char = 'x'
 4932:   abcx
 4933: --->abcx
 4934:  +0 ^        (abc|def)
 4935:  +1 ^        a
 4936:  +2 ^^       b
 4937:  +3 ^ ^      c
 4938:  +4 ^  ^     |
 4939:  +9 ^  ^     x
 4940: +10 ^   ^    
 4941:  0: abcx
 4942:  1: abc
 4943:   defx
 4944: --->defx
 4945:  +0 ^        (abc|def)
 4946:  +1 ^        a
 4947:  +5 ^        d
 4948:  +6 ^^       e
 4949:  +7 ^ ^      f
 4950:  +8 ^  ^     )
 4951:  +9 ^  ^     x
 4952: +10 ^   ^    
 4953:  0: defx
 4954:  1: def
 4955:   ** Failers 
 4956: No match
 4957:   abcdefzx
 4958: --->abcdefzx
 4959:  +0 ^            (abc|def)
 4960:  +1 ^            a
 4961:  +2 ^^           b
 4962:  +3 ^ ^          c
 4963:  +4 ^  ^         |
 4964:  +9 ^  ^         x
 4965:  +5 ^            d
 4966:  +0  ^           (abc|def)
 4967:  +1  ^           a
 4968:  +5  ^           d
 4969:  +0   ^          (abc|def)
 4970:  +1   ^          a
 4971:  +5   ^          d
 4972:  +0    ^         (abc|def)
 4973:  +1    ^         a
 4974:  +5    ^         d
 4975:  +6    ^^        e
 4976:  +7    ^ ^       f
 4977:  +8    ^  ^      )
 4978:  +9    ^  ^      x
 4979:  +0     ^        (abc|def)
 4980:  +1     ^        a
 4981:  +5     ^        d
 4982:  +0      ^       (abc|def)
 4983:  +1      ^       a
 4984:  +5      ^       d
 4985:  +0       ^      (abc|def)
 4986:  +1       ^      a
 4987:  +5       ^      d
 4988:  +0        ^     (abc|def)
 4989:  +1        ^     a
 4990:  +5        ^     d
 4991: No match
 4992: 
 4993: /(ab|cd){3,4}/IC
 4994: Capturing subpattern count = 1
 4995: Options:
 4996: No first char
 4997: No need char
 4998:   ababab
 4999: --->ababab
 5000:  +0 ^          (ab|cd){3,4}
 5001:  +1 ^          a
 5002:  +2 ^^         b
 5003:  +3 ^ ^        |
 5004:  +1 ^ ^        a
 5005:  +2 ^  ^       b
 5006:  +3 ^   ^      |
 5007:  +1 ^   ^      a
 5008:  +2 ^    ^     b
 5009:  +3 ^     ^    |
 5010:  +1 ^     ^    a
 5011:  +4 ^     ^    c
 5012: +12 ^     ^    
 5013:  0: ababab
 5014:  1: ab
 5015:   abcdabcd
 5016: --->abcdabcd
 5017:  +0 ^            (ab|cd){3,4}
 5018:  +1 ^            a
 5019:  +2 ^^           b
 5020:  +3 ^ ^          |
 5021:  +1 ^ ^          a
 5022:  +4 ^ ^          c
 5023:  +5 ^  ^         d
 5024:  +6 ^   ^        )
 5025:  +1 ^   ^        a
 5026:  +2 ^    ^       b
 5027:  +3 ^     ^      |
 5028:  +1 ^     ^      a
 5029:  +4 ^     ^      c
 5030:  +5 ^      ^     d
 5031:  +6 ^       ^    )
 5032: +12 ^       ^    
 5033:  0: abcdabcd
 5034:  1: cd
 5035:   abcdcdcdcdcd
 5036: --->abcdcdcdcdcd
 5037:  +0 ^                (ab|cd){3,4}
 5038:  +1 ^                a
 5039:  +2 ^^               b
 5040:  +3 ^ ^              |
 5041:  +1 ^ ^              a
 5042:  +4 ^ ^              c
 5043:  +5 ^  ^             d
 5044:  +6 ^   ^            )
 5045:  +1 ^   ^            a
 5046:  +4 ^   ^            c
 5047:  +5 ^    ^           d
 5048:  +6 ^     ^          )
 5049:  +1 ^     ^          a
 5050:  +4 ^     ^          c
 5051:  +5 ^      ^         d
 5052:  +6 ^       ^        )
 5053: +12 ^       ^        
 5054:  0: abcdcdcd
 5055:  1: cd
 5056: 
 5057: /([ab]{,4}c|xy)/ICDZS
 5058: ------------------------------------------------------------------
 5059:         Bra
 5060:         Callout 255 0 14
 5061:         CBra 1
 5062:         Callout 255 1 4
 5063:         [ab]
 5064:         Callout 255 5 1
 5065:         {
 5066:         Callout 255 6 1
 5067:         ,
 5068:         Callout 255 7 1
 5069:         4
 5070:         Callout 255 8 1
 5071:         }
 5072:         Callout 255 9 1
 5073:         c
 5074:         Callout 255 10 0
 5075:         Alt
 5076:         Callout 255 11 1
 5077:         x
 5078:         Callout 255 12 1
 5079:         y
 5080:         Callout 255 13 0
 5081:         Ket
 5082:         Callout 255 14 0
 5083:         Ket
 5084:         End
 5085: ------------------------------------------------------------------
 5086: Capturing subpattern count = 1
 5087: Options:
 5088: No first char
 5089: No need char
 5090: Subject length lower bound = 2
 5091: Starting byte set: a b x 
 5092:     Note: that { does NOT introduce a quantifier
 5093: --->Note: that { does NOT introduce a quantifier
 5094:  +0         ^                                        ([ab]{,4}c|xy)
 5095:  +1         ^                                        [ab]
 5096:  +5         ^^                                       {
 5097: +11         ^                                        x
 5098:  +0                                 ^                ([ab]{,4}c|xy)
 5099:  +1                                 ^                [ab]
 5100:  +5                                 ^^               {
 5101: +11                                 ^                x
 5102:  +0                                     ^            ([ab]{,4}c|xy)
 5103:  +1                                     ^            [ab]
 5104:  +5                                     ^^           {
 5105: +11                                     ^            x
 5106: No match
 5107: 
 5108: /([ab]{,4}c|xy)/ICDZSS
 5109: ------------------------------------------------------------------
 5110:         Bra
 5111:         Callout 255 0 14
 5112:         CBra 1
 5113:         Callout 255 1 4
 5114:         [ab]
 5115:         Callout 255 5 1
 5116:         {
 5117:         Callout 255 6 1
 5118:         ,
 5119:         Callout 255 7 1
 5120:         4
 5121:         Callout 255 8 1
 5122:         }
 5123:         Callout 255 9 1
 5124:         c
 5125:         Callout 255 10 0
 5126:         Alt
 5127:         Callout 255 11 1
 5128:         x
 5129:         Callout 255 12 1
 5130:         y
 5131:         Callout 255 13 0
 5132:         Ket
 5133:         Callout 255 14 0
 5134:         Ket
 5135:         End
 5136: ------------------------------------------------------------------
 5137: Capturing subpattern count = 1
 5138: Options:
 5139: No first char
 5140: No need char
 5141:     Note: that { does NOT introduce a quantifier
 5142: --->Note: that { does NOT introduce a quantifier
 5143:  +0 ^                                                ([ab]{,4}c|xy)
 5144:  +1 ^                                                [ab]
 5145: +11 ^                                                x
 5146:  +0  ^                                               ([ab]{,4}c|xy)
 5147:  +1  ^                                               [ab]
 5148: +11  ^                                               x
 5149:  +0   ^                                              ([ab]{,4}c|xy)
 5150:  +1   ^                                              [ab]
 5151: +11   ^                                              x
 5152:  +0    ^                                             ([ab]{,4}c|xy)
 5153:  +1    ^                                             [ab]
 5154: +11    ^                                             x
 5155:  +0     ^                                            ([ab]{,4}c|xy)
 5156:  +1     ^                                            [ab]
 5157: +11     ^                                            x
 5158:  +0      ^                                           ([ab]{,4}c|xy)
 5159:  +1      ^                                           [ab]
 5160: +11      ^                                           x
 5161:  +0       ^                                          ([ab]{,4}c|xy)
 5162:  +1       ^                                          [ab]
 5163: +11       ^                                          x
 5164:  +0        ^                                         ([ab]{,4}c|xy)
 5165:  +1        ^                                         [ab]
 5166: +11        ^                                         x
 5167:  +0         ^                                        ([ab]{,4}c|xy)
 5168:  +1         ^                                        [ab]
 5169:  +5         ^^                                       {
 5170: +11         ^                                        x
 5171:  +0          ^                                       ([ab]{,4}c|xy)
 5172:  +1          ^                                       [ab]
 5173: +11          ^                                       x
 5174:  +0           ^                                      ([ab]{,4}c|xy)
 5175:  +1           ^                                      [ab]
 5176: +11           ^                                      x
 5177:  +0            ^                                     ([ab]{,4}c|xy)
 5178:  +1            ^                                     [ab]
 5179: +11            ^                                     x
 5180:  +0             ^                                    ([ab]{,4}c|xy)
 5181:  +1             ^                                    [ab]
 5182: +11             ^                                    x
 5183:  +0              ^                                   ([ab]{,4}c|xy)
 5184:  +1              ^                                   [ab]
 5185: +11              ^                                   x
 5186:  +0               ^                                  ([ab]{,4}c|xy)
 5187:  +1               ^                                  [ab]
 5188: +11               ^                                  x
 5189:  +0                ^                                 ([ab]{,4}c|xy)
 5190:  +1                ^                                 [ab]
 5191: +11                ^                                 x
 5192:  +0                 ^                                ([ab]{,4}c|xy)
 5193:  +1                 ^                                [ab]
 5194: +11                 ^                                x
 5195:  +0                  ^                               ([ab]{,4}c|xy)
 5196:  +1                  ^                               [ab]
 5197: +11                  ^                               x
 5198:  +0                   ^                              ([ab]{,4}c|xy)
 5199:  +1                   ^                              [ab]
 5200: +11                   ^                              x
 5201:  +0                    ^                             ([ab]{,4}c|xy)
 5202:  +1                    ^                             [ab]
 5203: +11                    ^                             x
 5204:  +0                     ^                            ([ab]{,4}c|xy)
 5205:  +1                     ^                            [ab]
 5206: +11                     ^                            x
 5207:  +0                      ^                           ([ab]{,4}c|xy)
 5208:  +1                      ^                           [ab]
 5209: +11                      ^                           x
 5210:  +0                       ^                          ([ab]{,4}c|xy)
 5211:  +1                       ^                          [ab]
 5212: +11                       ^                          x
 5213:  +0                        ^                         ([ab]{,4}c|xy)
 5214:  +1                        ^                         [ab]
 5215: +11                        ^                         x
 5216:  +0                         ^                        ([ab]{,4}c|xy)
 5217:  +1                         ^                        [ab]
 5218: +11                         ^                        x
 5219:  +0                          ^                       ([ab]{,4}c|xy)
 5220:  +1                          ^                       [ab]
 5221: +11                          ^                       x
 5222:  +0                           ^                      ([ab]{,4}c|xy)
 5223:  +1                           ^                      [ab]
 5224: +11                           ^                      x
 5225:  +0                            ^                     ([ab]{,4}c|xy)
 5226:  +1                            ^                     [ab]
 5227: +11                            ^                     x
 5228:  +0                             ^                    ([ab]{,4}c|xy)
 5229:  +1                             ^                    [ab]
 5230: +11                             ^                    x
 5231:  +0                              ^                   ([ab]{,4}c|xy)
 5232:  +1                              ^                   [ab]
 5233: +11                              ^                   x
 5234:  +0                               ^                  ([ab]{,4}c|xy)
 5235:  +1                               ^                  [ab]
 5236: +11                               ^                  x
 5237:  +0                                ^                 ([ab]{,4}c|xy)
 5238:  +1                                ^                 [ab]
 5239: +11                                ^                 x
 5240:  +0                                 ^                ([ab]{,4}c|xy)
 5241:  +1                                 ^                [ab]
 5242:  +5                                 ^^               {
 5243: +11                                 ^                x
 5244:  +0                                  ^               ([ab]{,4}c|xy)
 5245:  +1                                  ^               [ab]
 5246: +11                                  ^               x
 5247:  +0                                   ^              ([ab]{,4}c|xy)
 5248:  +1                                   ^              [ab]
 5249: +11                                   ^              x
 5250:  +0                                    ^             ([ab]{,4}c|xy)
 5251:  +1                                    ^             [ab]
 5252: +11                                    ^             x
 5253:  +0                                     ^            ([ab]{,4}c|xy)
 5254:  +1                                     ^            [ab]
 5255:  +5                                     ^^           {
 5256: +11                                     ^            x
 5257:  +0                                      ^           ([ab]{,4}c|xy)
 5258:  +1                                      ^           [ab]
 5259: +11                                      ^           x
 5260:  +0                                       ^          ([ab]{,4}c|xy)
 5261:  +1                                       ^          [ab]
 5262: +11                                       ^          x
 5263:  +0                                        ^         ([ab]{,4}c|xy)
 5264:  +1                                        ^         [ab]
 5265: +11                                        ^         x
 5266:  +0                                         ^        ([ab]{,4}c|xy)
 5267:  +1                                         ^        [ab]
 5268: +11                                         ^        x
 5269:  +0                                          ^       ([ab]{,4}c|xy)
 5270:  +1                                          ^       [ab]
 5271: +11                                          ^       x
 5272:  +0                                           ^      ([ab]{,4}c|xy)
 5273:  +1                                           ^      [ab]
 5274: +11                                           ^      x
 5275:  +0                                            ^     ([ab]{,4}c|xy)
 5276:  +1                                            ^     [ab]
 5277: +11                                            ^     x
 5278:  +0                                             ^    ([ab]{,4}c|xy)
 5279:  +1                                             ^    [ab]
 5280: +11                                             ^    x
 5281: No match
 5282: 
 5283: /([ab]{1,4}c|xy){4,5}?123/ICDZ
 5284: ------------------------------------------------------------------
 5285:         Bra
 5286:         Callout 255 0 21
 5287:         CBra 1
 5288:         Callout 255 1 9
 5289:         [ab]{1,4}
 5290:         Callout 255 10 1
 5291:         c
 5292:         Callout 255 11 0
 5293:         Alt
 5294:         Callout 255 12 1
 5295:         x
 5296:         Callout 255 13 1
 5297:         y
 5298:         Callout 255 14 0
 5299:         Ket
 5300:         CBra 1
 5301:         Callout 255 1 9
 5302:         [ab]{1,4}
 5303:         Callout 255 10 1
 5304:         c
 5305:         Callout 255 11 0
 5306:         Alt
 5307:         Callout 255 12 1
 5308:         x
 5309:         Callout 255 13 1
 5310:         y
 5311:         Callout 255 14 0
 5312:         Ket
 5313:         CBra 1
 5314:         Callout 255 1 9
 5315:         [ab]{1,4}
 5316:         Callout 255 10 1
 5317:         c
 5318:         Callout 255 11 0
 5319:         Alt
 5320:         Callout 255 12 1
 5321:         x
 5322:         Callout 255 13 1
 5323:         y
 5324:         Callout 255 14 0
 5325:         Ket
 5326:         CBra 1
 5327:         Callout 255 1 9
 5328:         [ab]{1,4}
 5329:         Callout 255 10 1
 5330:         c
 5331:         Callout 255 11 0
 5332:         Alt
 5333:         Callout 255 12 1
 5334:         x
 5335:         Callout 255 13 1
 5336:         y
 5337:         Callout 255 14 0
 5338:         Ket
 5339:         Braminzero
 5340:         CBra 1
 5341:         Callout 255 1 9
 5342:         [ab]{1,4}
 5343:         Callout 255 10 1
 5344:         c
 5345:         Callout 255 11 0
 5346:         Alt
 5347:         Callout 255 12 1
 5348:         x
 5349:         Callout 255 13 1
 5350:         y
 5351:         Callout 255 14 0
 5352:         Ket
 5353:         Callout 255 21 1
 5354:         1
 5355:         Callout 255 22 1
 5356:         2
 5357:         Callout 255 23 1
 5358:         3
 5359:         Callout 255 24 0
 5360:         Ket
 5361:         End
 5362: ------------------------------------------------------------------
 5363: Capturing subpattern count = 1
 5364: Options:
 5365: No first char
 5366: Need char = '3'
 5367:     aacaacaacaacaac123
 5368: --->aacaacaacaacaac123
 5369:  +0 ^                      ([ab]{1,4}c|xy){4,5}?
 5370:  +1 ^                      [ab]{1,4}
 5371: +10 ^ ^                    c
 5372: +11 ^  ^                   |
 5373:  +1 ^  ^                   [ab]{1,4}
 5374: +10 ^    ^                 c
 5375: +11 ^     ^                |
 5376:  +1 ^     ^                [ab]{1,4}
 5377: +10 ^       ^              c
 5378: +11 ^        ^             |
 5379:  +1 ^        ^             [ab]{1,4}
 5380: +10 ^          ^           c
 5381: +11 ^           ^          |
 5382: +21 ^           ^          1
 5383:  +1 ^           ^          [ab]{1,4}
 5384: +10 ^             ^        c
 5385: +11 ^              ^       |
 5386: +21 ^              ^       1
 5387: +22 ^               ^      2
 5388: +23 ^                ^     3
 5389: +24 ^                 ^    
 5390:  0: aacaacaacaacaac123
 5391:  1: aac
 5392: 
 5393: /\b.*/I
 5394: Capturing subpattern count = 0
 5395: No options
 5396: No first char
 5397: No need char
 5398:   ab cd\>1
 5399:  0:  cd
 5400: 
 5401: /\b.*/Is
 5402: Capturing subpattern count = 0
 5403: Options: dotall
 5404: No first char
 5405: No need char
 5406:   ab cd\>1
 5407:  0:  cd
 5408: 
 5409: /(?!.bcd).*/I
 5410: Capturing subpattern count = 0
 5411: No options
 5412: No first char
 5413: No need char
 5414:   Xbcd12345
 5415:  0: bcd12345
 5416: 
 5417: /abcde/I
 5418: Capturing subpattern count = 0
 5419: No options
 5420: First char = 'a'
 5421: Need char = 'e'
 5422:     ab\P
 5423: Partial match: ab
 5424:     abc\P
 5425: Partial match: abc
 5426:     abcd\P
 5427: Partial match: abcd
 5428:     abcde\P
 5429:  0: abcde
 5430:     the quick brown abc\P
 5431: Partial match: abc
 5432:     ** Failers\P
 5433: No match
 5434:     the quick brown abxyz fox\P
 5435: No match
 5436: 
 5437: "^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(20)?\d\d$"I
 5438: Capturing subpattern count = 3
 5439: Options: anchored
 5440: No first char
 5441: Need char = '/'
 5442:     13/05/04\P
 5443:  0: 13/05/04
 5444:  1: 13
 5445:  2: 05
 5446:     13/5/2004\P
 5447:  0: 13/5/2004
 5448:  1: 13
 5449:  2: 5
 5450:  3: 20
 5451:     02/05/09\P
 5452:  0: 02/05/09
 5453:  1: 02
 5454:  2: 05
 5455:     1\P
 5456: Partial match: 1
 5457:     1/2\P
 5458: Partial match: 1/2
 5459:     1/2/0\P
 5460: Partial match: 1/2/0
 5461:     1/2/04\P
 5462:  0: 1/2/04
 5463:  1: 1
 5464:  2: 2
 5465:     0\P
 5466: Partial match: 0
 5467:     02/\P
 5468: Partial match: 02/
 5469:     02/0\P
 5470: Partial match: 02/0
 5471:     02/1\P
 5472: Partial match: 02/1
 5473:     ** Failers\P
 5474: No match
 5475:     \P
 5476: No match
 5477:     123\P
 5478: No match
 5479:     33/4/04\P
 5480: No match
 5481:     3/13/04\P
 5482: No match
 5483:     0/1/2003\P
 5484: No match
 5485:     0/\P
 5486: No match
 5487:     02/0/\P
 5488: No match
 5489:     02/13\P
 5490: No match
 5491: 
 5492: /0{0,2}ABC/I
 5493: Capturing subpattern count = 0
 5494: No options
 5495: No first char
 5496: Need char = 'C'
 5497: 
 5498: /\d{3,}ABC/I
 5499: Capturing subpattern count = 0
 5500: No options
 5501: No first char
 5502: Need char = 'C'
 5503: 
 5504: /\d*ABC/I
 5505: Capturing subpattern count = 0
 5506: No options
 5507: No first char
 5508: Need char = 'C'
 5509: 
 5510: /[abc]+DE/I
 5511: Capturing subpattern count = 0
 5512: No options
 5513: No first char
 5514: Need char = 'E'
 5515: 
 5516: /[abc]?123/I
 5517: Capturing subpattern count = 0
 5518: No options
 5519: No first char
 5520: Need char = '3'
 5521:     123\P
 5522:  0: 123
 5523:     a\P
 5524: Partial match: a
 5525:     b\P
 5526: Partial match: b
 5527:     c\P
 5528: Partial match: c
 5529:     c12\P
 5530: Partial match: c12
 5531:     c123\P
 5532:  0: c123
 5533: 
 5534: /^(?:\d){3,5}X/I
 5535: Capturing subpattern count = 0
 5536: Options: anchored
 5537: No first char
 5538: Need char = 'X'
 5539:     1\P
 5540: Partial match: 1
 5541:     123\P
 5542: Partial match: 123
 5543:     123X
 5544:  0: 123X
 5545:     1234\P
 5546: Partial match: 1234
 5547:     1234X
 5548:  0: 1234X
 5549:     12345\P
 5550: Partial match: 12345
 5551:     12345X
 5552:  0: 12345X
 5553:     *** Failers
 5554: No match
 5555:     1X
 5556: No match
 5557:     123456\P
 5558: No match
 5559: 
 5560: /abc/IS>testsavedregex
 5561: Capturing subpattern count = 0
 5562: No options
 5563: First char = 'a'
 5564: Need char = 'c'
 5565: Subject length lower bound = 3
 5566: No set of starting bytes
 5567: Compiled pattern written to testsavedregex
 5568: Study data written to testsavedregex
 5569: <testsavedregex
 5570: Compiled pattern loaded from testsavedregex
 5571: Study data loaded from testsavedregex
 5572:     abc
 5573:  0: abc
 5574:     ** Failers
 5575: No match
 5576:     bca
 5577: No match
 5578: 
 5579: /abc/ISS>testsavedregex
 5580: Capturing subpattern count = 0
 5581: No options
 5582: First char = 'a'
 5583: Need char = 'c'
 5584: Compiled pattern written to testsavedregex
 5585: <testsavedregex
 5586: Compiled pattern loaded from testsavedregex
 5587: No study data
 5588:     abc
 5589:  0: abc
 5590:     ** Failers
 5591: No match
 5592:     bca
 5593: No match
 5594: 
 5595: /abc/IFS>testsavedregex
 5596: Capturing subpattern count = 0
 5597: No options
 5598: First char = 'a'
 5599: Need char = 'c'
 5600: Subject length lower bound = 3
 5601: No set of starting bytes
 5602: Compiled pattern written to testsavedregex
 5603: Study data written to testsavedregex
 5604: <testsavedregex
 5605: Compiled pattern (byte-inverted) loaded from testsavedregex
 5606: Study data loaded from testsavedregex
 5607:     abc
 5608:  0: abc
 5609:     ** Failers
 5610: No match
 5611:     bca
 5612: No match
 5613: 
 5614: /abc/IFSS>testsavedregex
 5615: Capturing subpattern count = 0
 5616: No options
 5617: First char = 'a'
 5618: Need char = 'c'
 5619: Compiled pattern written to testsavedregex
 5620: <testsavedregex
 5621: Compiled pattern (byte-inverted) loaded from testsavedregex
 5622: No study data
 5623:     abc
 5624:  0: abc
 5625:     ** Failers
 5626: No match
 5627:     bca
 5628: No match
 5629: 
 5630: /(a|b)/IS>testsavedregex
 5631: Capturing subpattern count = 1
 5632: No options
 5633: No first char
 5634: No need char
 5635: Subject length lower bound = 1
 5636: Starting byte set: a b 
 5637: Compiled pattern written to testsavedregex
 5638: Study data written to testsavedregex
 5639: <testsavedregex
 5640: Compiled pattern loaded from testsavedregex
 5641: Study data loaded from testsavedregex
 5642:     abc
 5643:  0: a
 5644:  1: a
 5645:     ** Failers
 5646:  0: a
 5647:  1: a
 5648:     def
 5649: No match
 5650: 
 5651: /(a|b)/ISS>testsavedregex
 5652: Capturing subpattern count = 1
 5653: No options
 5654: No first char
 5655: No need char
 5656: Compiled pattern written to testsavedregex
 5657: <testsavedregex
 5658: Compiled pattern loaded from testsavedregex
 5659: No study data
 5660:     abc
 5661:  0: a
 5662:  1: a
 5663:     ** Failers
 5664:  0: a
 5665:  1: a
 5666:     def
 5667: No match
 5668: 
 5669: /(a|b)/ISF>testsavedregex
 5670: Capturing subpattern count = 1
 5671: No options
 5672: No first char
 5673: No need char
 5674: Subject length lower bound = 1
 5675: Starting byte set: a b 
 5676: Compiled pattern written to testsavedregex
 5677: Study data written to testsavedregex
 5678: <testsavedregex
 5679: Compiled pattern (byte-inverted) loaded from testsavedregex
 5680: Study data loaded from testsavedregex
 5681:     abc
 5682:  0: a
 5683:  1: a
 5684:     ** Failers
 5685:  0: a
 5686:  1: a
 5687:     def
 5688: No match
 5689: 
 5690: /(a|b)/ISSF>testsavedregex
 5691: Capturing subpattern count = 1
 5692: No options
 5693: No first char
 5694: No need char
 5695: Compiled pattern written to testsavedregex
 5696: <testsavedregex
 5697: Compiled pattern (byte-inverted) loaded from testsavedregex
 5698: No study data
 5699:     abc
 5700:  0: a
 5701:  1: a
 5702:     ** Failers
 5703:  0: a
 5704:  1: a
 5705:     def
 5706: No match
 5707: 
 5708: ~<(\w+)/?>(.)*</(\1)>~smgI
 5709: Capturing subpattern count = 3
 5710: Max back reference = 1
 5711: Options: multiline dotall
 5712: First char = '<'
 5713: Need char = '>'
 5714:     \J1024<!DOCTYPE seite SYSTEM "http://www.lco.lineas.de/xmlCms.dtd">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\n<bild name="logo_ca.gif" rahmen="no"/></link> <link\nziel="http://www.ey.com/" zielfenster="_blank"><bild\nname="logo_euy.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\n<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\n\n<absatz><link ziel="http://www.atelion.de/"\nzielfenster="_blank"><bild\nname="logo_atelion.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.line-information.de/"\nzielfenster="_blank">\n<bild name="logo_line_information.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\n\n<absatz><link ziel="http://www.incognis.de/"\nzielfenster="_blank"><bild\nname="logo_incognis.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.addcraft.com/"\nzielfenster="_blank"><bild\nname="logo_addcraft.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.comendo.com/"\nzielfenster="_blank"><bild\nname="logo_comendo.gif" rahmen="no"/></link></absatz>\n\n</inhalt>\n</seite>
 5715:  0: <seite>\x0a<dokumenteninformation>\x0a<seitentitel>Partner der LCO</seitentitel>\x0a<sprache>de</sprache>\x0a<seitenbeschreibung>Partner der LINEAS Consulting\x0aGmbH</seitenbeschreibung>\x0a<schluesselworte>LINEAS Consulting GmbH Hamburg\x0aPartnerfirmen</schluesselworte>\x0a<revisit>30 days</revisit>\x0a<robots>index,follow</robots>\x0a<menueinformation>\x0a<aktiv>ja</aktiv>\x0a<menueposition>3</menueposition>\x0a<menuetext>Partner</menuetext>\x0a</menueinformation>\x0a<lastedited>\x0a<autor>LCO</autor>\x0a<firma>LINEAS Consulting</firma>\x0a<datum>15.10.2003</datum>\x0a</lastedited>\x0a</dokumenteninformation>\x0a<inhalt>\x0a\x0a<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\x0aGmbH</absatzueberschrift>\x0a\x0a<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\x0a<bild name="logo_ca.gif" rahmen="no"/></link> <link\x0aziel="http://www.ey.com/" zielfenster="_blank"><bild\x0aname="logo_euy.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\x0a<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.atelion.de/"\x0azielfenster="_blank"><bild\x0aname="logo_atelion.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.line-information.de/"\x0azielfenster="_blank">\x0a<bild name="logo_line_information.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\x0a\x0a<absatz><link ziel="http://www.incognis.de/"\x0azielfenster="_blank"><bild\x0aname="logo_incognis.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.addcraft.com/"\x0azielfenster="_blank"><bild\x0aname="logo_addcraft.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.comendo.com/"\x0azielfenster="_blank"><bild\x0aname="logo_comendo.gif" rahmen="no"/></link></absatz>\x0a\x0a</inhalt>\x0a</seite>
 5716:  1: seite
 5717:  2: \x0a
 5718:  3: seite
 5719: 
 5720: /^a/IF
 5721: Capturing subpattern count = 0
 5722: Options: anchored
 5723: No first char
 5724: No need char
 5725: 
 5726: /line\nbreak/I
 5727: Capturing subpattern count = 0
 5728: Contains explicit CR or LF match
 5729: No options
 5730: First char = 'l'
 5731: Need char = 'k'
 5732:     this is a line\nbreak
 5733:  0: line\x0abreak
 5734:     line one\nthis is a line\nbreak in the second line
 5735:  0: line\x0abreak
 5736: 
 5737: /line\nbreak/If
 5738: Capturing subpattern count = 0
 5739: Contains explicit CR or LF match
 5740: Options: firstline
 5741: First char = 'l'
 5742: Need char = 'k'
 5743:     this is a line\nbreak
 5744:  0: line\x0abreak
 5745:     ** Failers
 5746: No match
 5747:     line one\nthis is a line\nbreak in the second line
 5748: No match
 5749: 
 5750: /line\nbreak/Imf
 5751: Capturing subpattern count = 0
 5752: Contains explicit CR or LF match
 5753: Options: multiline firstline
 5754: First char = 'l'
 5755: Need char = 'k'
 5756:     this is a line\nbreak
 5757:  0: line\x0abreak
 5758:     ** Failers
 5759: No match
 5760:     line one\nthis is a line\nbreak in the second line
 5761: No match
 5762: 
 5763: /(?i)(?-i)AbCd/I
 5764: Capturing subpattern count = 0
 5765: No options
 5766: First char = 'A'
 5767: Need char = 'd'
 5768:     AbCd
 5769:  0: AbCd
 5770:     ** Failers
 5771: No match
 5772:     abcd
 5773: No match
 5774: 
 5775: /a{11111111111111111111}/I
 5776: Failed: number too big in {} quantifier at offset 22
 5777: 
 5778: /(){64294967295}/I
 5779: Failed: number too big in {} quantifier at offset 14
 5780: 
 5781: /(){2,4294967295}/I
 5782: Failed: number too big in {} quantifier at offset 15
 5783: 
 5784: "(?i:a)(?i:b)(?i:c)(?i:d)(?i:e)(?i:f)(?i:g)(?i:h)(?i:i)(?i:j)(k)(?i:l)A\1B"I
 5785: Capturing subpattern count = 1
 5786: Max back reference = 1
 5787: No options
 5788: First char = 'a' (caseless)
 5789: Need char = 'B'
 5790:     abcdefghijklAkB
 5791:  0: abcdefghijklAkB
 5792:  1: k
 5793: 
 5794: "(?P<n0>a)(?P<n1>b)(?P<n2>c)(?P<n3>d)(?P<n4>e)(?P<n5>f)(?P<n6>g)(?P<n7>h)(?P<n8>i)(?P<n9>j)(?P<n10>k)(?P<n11>l)A\11B"I
 5795: Capturing subpattern count = 12
 5796: Max back reference = 11
 5797: Named capturing subpatterns:
 5798:   n0    1
 5799:   n1    2
 5800:   n10  11
 5801:   n11  12
 5802:   n2    3
 5803:   n3    4
 5804:   n4    5
 5805:   n5    6
 5806:   n6    7
 5807:   n7    8
 5808:   n8    9
 5809:   n9   10
 5810: No options
 5811: First char = 'a'
 5812: Need char = 'B'
 5813:     abcdefghijklAkB
 5814:  0: abcdefghijklAkB
 5815:  1: a
 5816:  2: b
 5817:  3: c
 5818:  4: d
 5819:  5: e
 5820:  6: f
 5821:  7: g
 5822:  8: h
 5823:  9: i
 5824: 10: j
 5825: 11: k
 5826: 12: l
 5827: 
 5828: "(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)A\11B"I
 5829: Capturing subpattern count = 12
 5830: Max back reference = 11
 5831: No options
 5832: First char = 'a'
 5833: Need char = 'B'
 5834:     abcdefghijklAkB
 5835:  0: abcdefghijklAkB
 5836:  1: a
 5837:  2: b
 5838:  3: c
 5839:  4: d
 5840:  5: e
 5841:  6: f
 5842:  7: g
 5843:  8: h
 5844:  9: i
 5845: 10: j
 5846: 11: k
 5847: 12: l
 5848: 
 5849: "(?P<name0>a)(?P<name1>a)(?P<name2>a)(?P<name3>a)(?P<name4>a)(?P<name5>a)(?P<name6>a)(?P<name7>a)(?P<name8>a)(?P<name9>a)(?P<name10>a)(?P<name11>a)(?P<name12>a)(?P<name13>a)(?P<name14>a)(?P<name15>a)(?P<name16>a)(?P<name17>a)(?P<name18>a)(?P<name19>a)(?P<name20>a)(?P<name21>a)(?P<name22>a)(?P<name23>a)(?P<name24>a)(?P<name25>a)(?P<name26>a)(?P<name27>a)(?P<name28>a)(?P<name29>a)(?P<name30>a)(?P<name31>a)(?P<name32>a)(?P<name33>a)(?P<name34>a)(?P<name35>a)(?P<name36>a)(?P<name37>a)(?P<name38>a)(?P<name39>a)(?P<name40>a)(?P<name41>a)(?P<name42>a)(?P<name43>a)(?P<name44>a)(?P<name45>a)(?P<name46>a)(?P<name47>a)(?P<name48>a)(?P<name49>a)(?P<name50>a)(?P<name51>a)(?P<name52>a)(?P<name53>a)(?P<name54>a)(?P<name55>a)(?P<name56>a)(?P<name57>a)(?P<name58>a)(?P<name59>a)(?P<name60>a)(?P<name61>a)(?P<name62>a)(?P<name63>a)(?P<name64>a)(?P<name65>a)(?P<name66>a)(?P<name67>a)(?P<name68>a)(?P<name69>a)(?P<name70>a)(?P<name71>a)(?P<name72>a)(?P<name73>a)(?P<name74>a)(?P<name75>a)(?P<name76>a)(?P<name77>a)(?P<name78>a)(?P<name79>a)(?P<name80>a)(?P<name81>a)(?P<name82>a)(?P<name83>a)(?P<name84>a)(?P<name85>a)(?P<name86>a)(?P<name87>a)(?P<name88>a)(?P<name89>a)(?P<name90>a)(?P<name91>a)(?P<name92>a)(?P<name93>a)(?P<name94>a)(?P<name95>a)(?P<name96>a)(?P<name97>a)(?P<name98>a)(?P<name99>a)(?P<name100>a)"I
 5850: Capturing subpattern count = 101
 5851: Named capturing subpatterns:
 5852:   name0     1
 5853:   name1     2
 5854:   name10   11
 5855:   name100 101
 5856:   name11   12
 5857:   name12   13
 5858:   name13   14
 5859:   name14   15
 5860:   name15   16
 5861:   name16   17
 5862:   name17   18
 5863:   name18   19
 5864:   name19   20
 5865:   name2     3
 5866:   name20   21
 5867:   name21   22
 5868:   name22   23
 5869:   name23   24
 5870:   name24   25
 5871:   name25   26
 5872:   name26   27
 5873:   name27   28
 5874:   name28   29
 5875:   name29   30
 5876:   name3     4
 5877:   name30   31
 5878:   name31   32
 5879:   name32   33
 5880:   name33   34
 5881:   name34   35
 5882:   name35   36
 5883:   name36   37
 5884:   name37   38
 5885:   name38   39
 5886:   name39   40
 5887:   name4     5
 5888:   name40   41
 5889:   name41   42
 5890:   name42   43
 5891:   name43   44
 5892:   name44   45
 5893:   name45   46
 5894:   name46   47
 5895:   name47   48
 5896:   name48   49
 5897:   name49   50
 5898:   name5     6
 5899:   name50   51
 5900:   name51   52
 5901:   name52   53
 5902:   name53   54
 5903:   name54   55
 5904:   name55   56
 5905:   name56   57
 5906:   name57   58
 5907:   name58   59
 5908:   name59   60
 5909:   name6     7
 5910:   name60   61
 5911:   name61   62
 5912:   name62   63
 5913:   name63   64
 5914:   name64   65
 5915:   name65   66
 5916:   name66   67
 5917:   name67   68
 5918:   name68   69
 5919:   name69   70
 5920:   name7     8
 5921:   name70   71
 5922:   name71   72
 5923:   name72   73
 5924:   name73   74
 5925:   name74   75
 5926:   name75   76
 5927:   name76   77
 5928:   name77   78
 5929:   name78   79
 5930:   name79   80
 5931:   name8     9
 5932:   name80   81
 5933:   name81   82
 5934:   name82   83
 5935:   name83   84
 5936:   name84   85
 5937:   name85   86
 5938:   name86   87
 5939:   name87   88
 5940:   name88   89
 5941:   name89   90
 5942:   name9    10
 5943:   name90   91
 5944:   name91   92
 5945:   name92   93
 5946:   name93   94
 5947:   name94   95
 5948:   name95   96
 5949:   name96   97
 5950:   name97   98
 5951:   name98   99
 5952:   name99  100
 5953: No options
 5954: First char = 'a'
 5955: Need char = 'a'
 5956:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 5957: Matched, but too many substrings
 5958:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 5959:  1: a
 5960:  2: a
 5961:  3: a
 5962:  4: a
 5963:  5: a
 5964:  6: a
 5965:  7: a
 5966:  8: a
 5967:  9: a
 5968: 10: a
 5969: 11: a
 5970: 12: a
 5971: 13: a
 5972: 14: a
 5973: 
 5974: "(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)"I
 5975: Capturing subpattern count = 101
 5976: No options
 5977: First char = 'a'
 5978: Need char = 'a'
 5979:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 5980: Matched, but too many substrings
 5981:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 5982:  1: a
 5983:  2: a
 5984:  3: a
 5985:  4: a
 5986:  5: a
 5987:  6: a
 5988:  7: a
 5989:  8: a
 5990:  9: a
 5991: 10: a
 5992: 11: a
 5993: 12: a
 5994: 13: a
 5995: 14: a
 5996: 
 5997: /[^()]*(?:\((?R)\)[^()]*)*/I
 5998: Capturing subpattern count = 0
 5999: No options
 6000: No first char
 6001: No need char
 6002:     (this(and)that
 6003:  0: 
 6004:     (this(and)that)
 6005:  0: (this(and)that)
 6006:     (this(and)that)stuff
 6007:  0: (this(and)that)stuff
 6008: 
 6009: /[^()]*(?:\((?>(?R))\)[^()]*)*/I
 6010: Capturing subpattern count = 0
 6011: No options
 6012: No first char
 6013: No need char
 6014:     (this(and)that
 6015:  0: 
 6016:     (this(and)that)
 6017:  0: (this(and)that)
 6018: 
 6019: /[^()]*(?:\((?R)\))*[^()]*/I
 6020: Capturing subpattern count = 0
 6021: No options
 6022: No first char
 6023: No need char
 6024:     (this(and)that
 6025:  0: 
 6026:     (this(and)that)
 6027:  0: (this(and)that)
 6028: 
 6029: /(?:\((?R)\))*[^()]*/I
 6030: Capturing subpattern count = 0
 6031: No options
 6032: No first char
 6033: No need char
 6034:     (this(and)that
 6035:  0: 
 6036:     (this(and)that)
 6037:  0: 
 6038:     ((this))
 6039:  0: ((this))
 6040: 
 6041: /(?:\((?R)\))|[^()]*/I
 6042: Capturing subpattern count = 0
 6043: No options
 6044: No first char
 6045: No need char
 6046:     (this(and)that
 6047:  0: 
 6048:     (this(and)that)
 6049:  0: 
 6050:     (this)
 6051:  0: (this)
 6052:     ((this))
 6053:  0: ((this))
 6054: 
 6055: /\x{0000ff}/I
 6056: Capturing subpattern count = 0
 6057: No options
 6058: First char = \xff
 6059: No need char
 6060: 
 6061: /^((?P<A>a1)|(?P<A>a2)b)/I
 6062: Failed: two named subpatterns have the same name at offset 17
 6063: 
 6064: /^((?P<A>a1)|(?P<A>a2)b)/IJ
 6065: Capturing subpattern count = 3
 6066: Named capturing subpatterns:
 6067:   A   2
 6068:   A   3
 6069: Options: anchored dupnames
 6070: No first char
 6071: No need char
 6072:     a1b\CA
 6073:  0: a1
 6074:  1: a1
 6075:  2: a1
 6076:   C a1 (2) A
 6077:     a2b\CA
 6078:  0: a2b
 6079:  1: a2b
 6080:  2: <unset>
 6081:  3: a2
 6082:   C a2 (2) A
 6083:     ** Failers
 6084: No match
 6085:     a1b\CZ\CA
 6086: no parentheses with name "Z"
 6087:  0: a1
 6088:  1: a1
 6089:  2: a1
 6090: copy substring Z failed -7
 6091:   C a1 (2) A
 6092: 
 6093: /^(?P<A>a)(?P<A>b)/IJ
 6094: Capturing subpattern count = 2
 6095: Named capturing subpatterns:
 6096:   A   1
 6097:   A   2
 6098: Options: anchored dupnames
 6099: No first char
 6100: No need char
 6101:     ab\CA
 6102:  0: ab
 6103:  1: a
 6104:  2: b
 6105:   C a (1) A
 6106: 
 6107: /^(?P<A>a)(?P<A>b)|cd/IJ
 6108: Capturing subpattern count = 2
 6109: Named capturing subpatterns:
 6110:   A   1
 6111:   A   2
 6112: Options: dupnames
 6113: No first char
 6114: No need char
 6115:     ab\CA
 6116:  0: ab
 6117:  1: a
 6118:  2: b
 6119:   C a (1) A
 6120:     cd\CA
 6121:  0: cd
 6122: copy substring A failed -7
 6123: 
 6124: /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ
 6125: Capturing subpattern count = 4
 6126: Named capturing subpatterns:
 6127:   A   1
 6128:   A   2
 6129:   A   3
 6130:   A   4
 6131: Options: dupnames
 6132: No first char
 6133: No need char
 6134:     cdefgh\CA
 6135:  0: cdefgh
 6136:  1: <unset>
 6137:  2: <unset>
 6138:  3: ef
 6139:  4: gh
 6140:   C ef (2) A
 6141: 
 6142: /^((?P<A>a1)|(?P<A>a2)b)/IJ
 6143: Capturing subpattern count = 3
 6144: Named capturing subpatterns:
 6145:   A   2
 6146:   A   3
 6147: Options: anchored dupnames
 6148: No first char
 6149: No need char
 6150:     a1b\GA
 6151:  0: a1
 6152:  1: a1
 6153:  2: a1
 6154:   G a1 (2) A
 6155:     a2b\GA
 6156:  0: a2b
 6157:  1: a2b
 6158:  2: <unset>
 6159:  3: a2
 6160:   G a2 (2) A
 6161:     ** Failers
 6162: No match
 6163:     a1b\GZ\GA
 6164: no parentheses with name "Z"
 6165:  0: a1
 6166:  1: a1
 6167:  2: a1
 6168: get substring Z failed -7
 6169:   G a1 (2) A
 6170: 
 6171: /^(?P<A>a)(?P<A>b)/IJ
 6172: Capturing subpattern count = 2
 6173: Named capturing subpatterns:
 6174:   A   1
 6175:   A   2
 6176: Options: anchored dupnames
 6177: No first char
 6178: No need char
 6179:     ab\GA
 6180:  0: ab
 6181:  1: a
 6182:  2: b
 6183:   G a (1) A
 6184: 
 6185: /^(?P<A>a)(?P<A>b)|cd/IJ
 6186: Capturing subpattern count = 2
 6187: Named capturing subpatterns:
 6188:   A   1
 6189:   A   2
 6190: Options: dupnames
 6191: No first char
 6192: No need char
 6193:     ab\GA
 6194:  0: ab
 6195:  1: a
 6196:  2: b
 6197:   G a (1) A
 6198:     cd\GA
 6199:  0: cd
 6200: get substring A failed -7
 6201: 
 6202: /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ
 6203: Capturing subpattern count = 4
 6204: Named capturing subpatterns:
 6205:   A   1
 6206:   A   2
 6207:   A   3
 6208:   A   4
 6209: Options: dupnames
 6210: No first char
 6211: No need char
 6212:     cdefgh\GA
 6213:  0: cdefgh
 6214:  1: <unset>
 6215:  2: <unset>
 6216:  3: ef
 6217:  4: gh
 6218:   G ef (2) A
 6219: 
 6220: /(?J)^((?P<A>a1)|(?P<A>a2)b)/I
 6221: Capturing subpattern count = 3
 6222: Named capturing subpatterns:
 6223:   A   2
 6224:   A   3
 6225: Options: anchored dupnames
 6226: Duplicate name status changes
 6227: No first char
 6228: No need char
 6229:     a1b\CA
 6230:  0: a1
 6231:  1: a1
 6232:  2: a1
 6233:   C a1 (2) A
 6234:     a2b\CA
 6235:  0: a2b
 6236:  1: a2b
 6237:  2: <unset>
 6238:  3: a2
 6239:   C a2 (2) A
 6240: 
 6241: /^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<A>d)/I
 6242: Failed: two named subpatterns have the same name at offset 37
 6243: 
 6244: / In this next test, J is not set at the outer level; consequently it isn't
 6245: set in the pattern's options; consequently pcre_get_named_substring() produces
 6246: a random value. /Ix
 6247: Capturing subpattern count = 1
 6248: Options: extended
 6249: First char = 'I'
 6250: Need char = 'e'
 6251: 
 6252: /^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<C>d)/I
 6253: Capturing subpattern count = 4
 6254: Named capturing subpatterns:
 6255:   A   1
 6256:   B   2
 6257:   B   3
 6258:   C   4
 6259: Options: anchored
 6260: Duplicate name status changes
 6261: No first char
 6262: No need char
 6263:     a bc d\CA\CB\CC
 6264:  0: a bc d
 6265:  1: a
 6266:  2: b
 6267:  3: c
 6268:  4: d
 6269:   C a (1) A
 6270:   C b (1) B
 6271:   C d (1) C
 6272: 
 6273: /^(?P<A>a)?(?(A)a|b)/I
 6274: Capturing subpattern count = 1
 6275: Named capturing subpatterns:
 6276:   A   1
 6277: Options: anchored
 6278: No first char
 6279: No need char
 6280:     aabc
 6281:  0: aa
 6282:  1: a
 6283:     bc
 6284:  0: b
 6285:     ** Failers
 6286: No match
 6287:     abc
 6288: No match
 6289: 
 6290: /(?:(?(ZZ)a|b)(?P<ZZ>X))+/I
 6291: Capturing subpattern count = 1
 6292: Named capturing subpatterns:
 6293:   ZZ   1
 6294: No options
 6295: No first char
 6296: Need char = 'X'
 6297:     bXaX
 6298:  0: bXaX
 6299:  1: X
 6300: 
 6301: /(?:(?(2y)a|b)(X))+/I
 6302: Failed: reference to non-existent subpattern at offset 9
 6303: 
 6304: /(?:(?(ZA)a|b)(?P<ZZ>X))+/I
 6305: Failed: reference to non-existent subpattern at offset 9
 6306: 
 6307: /(?:(?(ZZ)a|b)(?(ZZ)a|b)(?P<ZZ>X))+/I
 6308: Capturing subpattern count = 1
 6309: Named capturing subpatterns:
 6310:   ZZ   1
 6311: No options
 6312: No first char
 6313: Need char = 'X'
 6314:     bbXaaX
 6315:  0: bbXaaX
 6316:  1: X
 6317: 
 6318: /(?:(?(ZZ)a|\(b\))\\(?P<ZZ>X))+/I
 6319: Capturing subpattern count = 1
 6320: Named capturing subpatterns:
 6321:   ZZ   1
 6322: No options
 6323: No first char
 6324: Need char = 'X'
 6325:     (b)\\Xa\\X
 6326:  0: (b)\Xa\X
 6327:  1: X
 6328: 
 6329: /(?P<ABC/I
 6330: Failed: syntax error in subpattern name (missing terminator) at offset 7
 6331: 
 6332: /(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I
 6333: Capturing subpattern count = 1
 6334: Max back reference = 1
 6335: Named capturing subpatterns:
 6336:   A   1
 6337: No options
 6338: No first char
 6339: No need char
 6340:     bXXaYYaY
 6341:  0: bXXaYYaY
 6342:  1: Y
 6343:     bXYaXXaX
 6344:  0: bX
 6345:  1: X
 6346: 
 6347: /()()()()()()()()()(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I
 6348: Capturing subpattern count = 10
 6349: Max back reference = 10
 6350: Named capturing subpatterns:
 6351:   A  10
 6352: No options
 6353: No first char
 6354: No need char
 6355:     bXXaYYaY
 6356:  0: bXXaYYaY
 6357:  1: 
 6358:  2: 
 6359:  3: 
 6360:  4: 
 6361:  5: 
 6362:  6: 
 6363:  7: 
 6364:  8: 
 6365:  9: 
 6366: 10: Y
 6367: 
 6368: /\s*,\s*/IS
 6369: Capturing subpattern count = 0
 6370: No options
 6371: No first char
 6372: Need char = ','
 6373: Subject length lower bound = 1
 6374: Starting byte set: \x09 \x0a \x0c \x0d \x20 , 
 6375:     \x0b,\x0b
 6376:  0: ,
 6377:     \x0c,\x0d
 6378:  0: \x0c,\x0d
 6379: 
 6380: /^abc/Im
 6381: Capturing subpattern count = 0
 6382: Options: multiline
 6383: First char at start or follows newline
 6384: Need char = 'c'
 6385:     xyz\nabc
 6386:  0: abc
 6387:     xyz\nabc\<lf>
 6388:  0: abc
 6389:     xyz\r\nabc\<lf>
 6390:  0: abc
 6391:     xyz\rabc\<cr>
 6392:  0: abc
 6393:     xyz\r\nabc\<crlf>
 6394:  0: abc
 6395:     ** Failers
 6396: No match
 6397:     xyz\nabc\<cr>
 6398: No match
 6399:     xyz\r\nabc\<cr>
 6400: No match
 6401:     xyz\nabc\<crlf>
 6402: No match
 6403:     xyz\rabc\<crlf>
 6404: No match
 6405:     xyz\rabc\<lf>
 6406: No match
 6407: 
 6408: /abc$/Im<lf>
 6409: Capturing subpattern count = 0
 6410: Options: multiline
 6411: Forced newline sequence: LF
 6412: First char = 'a'
 6413: Need char = 'c'
 6414:     xyzabc
 6415:  0: abc
 6416:     xyzabc\n
 6417:  0: abc
 6418:     xyzabc\npqr
 6419:  0: abc
 6420:     xyzabc\r\<cr>
 6421:  0: abc
 6422:     xyzabc\rpqr\<cr>
 6423:  0: abc
 6424:     xyzabc\r\n\<crlf>
 6425:  0: abc
 6426:     xyzabc\r\npqr\<crlf>
 6427:  0: abc
 6428:     ** Failers
 6429: No match
 6430:     xyzabc\r
 6431: No match
 6432:     xyzabc\rpqr
 6433: No match
 6434:     xyzabc\r\n
 6435: No match
 6436:     xyzabc\r\npqr
 6437: No match
 6438: 
 6439: /^abc/Im<cr>
 6440: Capturing subpattern count = 0
 6441: Options: multiline
 6442: Forced newline sequence: CR
 6443: First char at start or follows newline
 6444: Need char = 'c'
 6445:     xyz\rabcdef
 6446:  0: abc
 6447:     xyz\nabcdef\<lf>
 6448:  0: abc
 6449:     ** Failers
 6450: No match
 6451:     xyz\nabcdef
 6452: No match
 6453: 
 6454: /^abc/Im<lf>
 6455: Capturing subpattern count = 0
 6456: Options: multiline
 6457: Forced newline sequence: LF
 6458: First char at start or follows newline
 6459: Need char = 'c'
 6460:     xyz\nabcdef
 6461:  0: abc
 6462:     xyz\rabcdef\<cr>
 6463:  0: abc
 6464:     ** Failers
 6465: No match
 6466:     xyz\rabcdef
 6467: No match
 6468: 
 6469: /^abc/Im<crlf>
 6470: Capturing subpattern count = 0
 6471: Options: multiline
 6472: Forced newline sequence: CRLF
 6473: First char at start or follows newline
 6474: Need char = 'c'
 6475:     xyz\r\nabcdef
 6476:  0: abc
 6477:     xyz\rabcdef\<cr>
 6478:  0: abc
 6479:     ** Failers
 6480: No match
 6481:     xyz\rabcdef
 6482: No match
 6483: 
 6484: /^abc/Im<bad>
 6485: Unknown newline type at: <bad>
 6486: 
 6487: 
 6488: /abc/I
 6489: Capturing subpattern count = 0
 6490: No options
 6491: First char = 'a'
 6492: Need char = 'c'
 6493:     xyz\rabc\<bad>
 6494: Unknown newline type at: <bad>
 6495:     abc
 6496:  0: abc
 6497: 
 6498: /.*/I<lf>
 6499: Capturing subpattern count = 0
 6500: Options:
 6501: Forced newline sequence: LF
 6502: First char at start or follows newline
 6503: No need char
 6504:     abc\ndef
 6505:  0: abc
 6506:     abc\rdef
 6507:  0: abc\x0ddef
 6508:     abc\r\ndef
 6509:  0: abc\x0d
 6510:     \<cr>abc\ndef
 6511:  0: abc\x0adef
 6512:     \<cr>abc\rdef
 6513:  0: abc
 6514:     \<cr>abc\r\ndef
 6515:  0: abc
 6516:     \<crlf>abc\ndef
 6517:  0: abc\x0adef
 6518:     \<crlf>abc\rdef
 6519:  0: abc\x0ddef
 6520:     \<crlf>abc\r\ndef
 6521:  0: abc
 6522: 
 6523: /\w+(.)(.)?def/Is
 6524: Capturing subpattern count = 2
 6525: Options: dotall
 6526: No first char
 6527: Need char = 'f'
 6528:     abc\ndef
 6529:  0: abc\x0adef
 6530:  1: \x0a
 6531:     abc\rdef
 6532:  0: abc\x0ddef
 6533:  1: \x0d
 6534:     abc\r\ndef
 6535:  0: abc\x0d\x0adef
 6536:  1: \x0d
 6537:  2: \x0a
 6538: 
 6539: +((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)+I
 6540: Capturing subpattern count = 1
 6541: No options
 6542: No first char
 6543: No need char
 6544:    /* this is a C style comment */\M
 6545: Minimum match() limit = 120
 6546: Minimum match() recursion limit = 6
 6547:  0: /* this is a C style comment */
 6548:  1: /* this is a C style comment */
 6549: 
 6550: /(?P<B>25[0-5]|2[0-4]\d|[01]?\d?\d)(?:\.(?P>B)){3}/I
 6551: Capturing subpattern count = 1
 6552: Named capturing subpatterns:
 6553:   B   1
 6554: No options
 6555: No first char
 6556: Need char = '.'
 6557: 
 6558: /()()()()()()()()()()()()()()()()()()()()
 6559:  ()()()()()()()()()()()()()()()()()()()()
 6560:  ()()()()()()()()()()()()()()()()()()()()
 6561:  ()()()()()()()()()()()()()()()()()()()()
 6562:  ()()()()()()()()()()()()()()()()()()()()
 6563:  (.(.))/Ix
 6564: Capturing subpattern count = 102
 6565: Options: extended
 6566: No first char
 6567: No need char
 6568:     XY\O400
 6569:  0: XY
 6570:  1: 
 6571:  2: 
 6572:  3: 
 6573:  4: 
 6574:  5: 
 6575:  6: 
 6576:  7: 
 6577:  8: 
 6578:  9: 
 6579: 10: 
 6580: 11: 
 6581: 12: 
 6582: 13: 
 6583: 14: 
 6584: 15: 
 6585: 16: 
 6586: 17: 
 6587: 18: 
 6588: 19: 
 6589: 20: 
 6590: 21: 
 6591: 22: 
 6592: 23: 
 6593: 24: 
 6594: 25: 
 6595: 26: 
 6596: 27: 
 6597: 28: 
 6598: 29: 
 6599: 30: 
 6600: 31: 
 6601: 32: 
 6602: 33: 
 6603: 34: 
 6604: 35: 
 6605: 36: 
 6606: 37: 
 6607: 38: 
 6608: 39: 
 6609: 40: 
 6610: 41: 
 6611: 42: 
 6612: 43: 
 6613: 44: 
 6614: 45: 
 6615: 46: 
 6616: 47: 
 6617: 48: 
 6618: 49: 
 6619: 50: 
 6620: 51: 
 6621: 52: 
 6622: 53: 
 6623: 54: 
 6624: 55: 
 6625: 56: 
 6626: 57: 
 6627: 58: 
 6628: 59: 
 6629: 60: 
 6630: 61: 
 6631: 62: 
 6632: 63: 
 6633: 64: 
 6634: 65: 
 6635: 66: 
 6636: 67: 
 6637: 68: 
 6638: 69: 
 6639: 70: 
 6640: 71: 
 6641: 72: 
 6642: 73: 
 6643: 74: 
 6644: 75: 
 6645: 76: 
 6646: 77: 
 6647: 78: 
 6648: 79: 
 6649: 80: 
 6650: 81: 
 6651: 82: 
 6652: 83: 
 6653: 84: 
 6654: 85: 
 6655: 86: 
 6656: 87: 
 6657: 88: 
 6658: 89: 
 6659: 90: 
 6660: 91: 
 6661: 92: 
 6662: 93: 
 6663: 94: 
 6664: 95: 
 6665: 96: 
 6666: 97: 
 6667: 98: 
 6668: 99: 
 6669: 100: 
 6670: 101: XY
 6671: 102: Y
 6672: 
 6673: /(a*b|(?i:c*(?-i)d))/IS
 6674: Capturing subpattern count = 1
 6675: No options
 6676: No first char
 6677: No need char
 6678: Subject length lower bound = 1
 6679: Starting byte set: C a b c d 
 6680: 
 6681: /()[ab]xyz/IS
 6682: Capturing subpattern count = 1
 6683: No options
 6684: No first char
 6685: Need char = 'z'
 6686: Subject length lower bound = 4
 6687: Starting byte set: a b 
 6688: 
 6689: /(|)[ab]xyz/IS
 6690: Capturing subpattern count = 1
 6691: No options
 6692: No first char
 6693: Need char = 'z'
 6694: Subject length lower bound = 4
 6695: Starting byte set: a b 
 6696: 
 6697: /(|c)[ab]xyz/IS
 6698: Capturing subpattern count = 1
 6699: No options
 6700: No first char
 6701: Need char = 'z'
 6702: Subject length lower bound = 4
 6703: Starting byte set: a b c 
 6704: 
 6705: /(|c?)[ab]xyz/IS
 6706: Capturing subpattern count = 1
 6707: No options
 6708: No first char
 6709: Need char = 'z'
 6710: Subject length lower bound = 4
 6711: Starting byte set: a b c 
 6712: 
 6713: /(d?|c?)[ab]xyz/IS
 6714: Capturing subpattern count = 1
 6715: No options
 6716: No first char
 6717: Need char = 'z'
 6718: Subject length lower bound = 4
 6719: Starting byte set: a b c d 
 6720: 
 6721: /(d?|c)[ab]xyz/IS
 6722: Capturing subpattern count = 1
 6723: No options
 6724: No first char
 6725: Need char = 'z'
 6726: Subject length lower bound = 4
 6727: Starting byte set: a b c d 
 6728: 
 6729: /^a*b\d/DZ
 6730: ------------------------------------------------------------------
 6731:         Bra
 6732:         ^
 6733:         a*+
 6734:         b
 6735:         \d
 6736:         Ket
 6737:         End
 6738: ------------------------------------------------------------------
 6739: Capturing subpattern count = 0
 6740: Options: anchored
 6741: No first char
 6742: Need char = 'b'
 6743: 
 6744: /^a*+b\d/DZ
 6745: ------------------------------------------------------------------
 6746:         Bra
 6747:         ^
 6748:         a*+
 6749:         b
 6750:         \d
 6751:         Ket
 6752:         End
 6753: ------------------------------------------------------------------
 6754: Capturing subpattern count = 0
 6755: Options: anchored
 6756: No first char
 6757: Need char = 'b'
 6758: 
 6759: /^a*?b\d/DZ
 6760: ------------------------------------------------------------------
 6761:         Bra
 6762:         ^
 6763:         a*+
 6764:         b
 6765:         \d
 6766:         Ket
 6767:         End
 6768: ------------------------------------------------------------------
 6769: Capturing subpattern count = 0
 6770: Options: anchored
 6771: No first char
 6772: Need char = 'b'
 6773: 
 6774: /^a+A\d/DZ
 6775: ------------------------------------------------------------------
 6776:         Bra
 6777:         ^
 6778:         a++
 6779:         A
 6780:         \d
 6781:         Ket
 6782:         End
 6783: ------------------------------------------------------------------
 6784: Capturing subpattern count = 0
 6785: Options: anchored
 6786: No first char
 6787: Need char = 'A'
 6788:     aaaA5
 6789:  0: aaaA5
 6790:     ** Failers
 6791: No match
 6792:     aaaa5
 6793: No match
 6794: 
 6795: /^a*A\d/IiDZ
 6796: ------------------------------------------------------------------
 6797:         Bra
 6798:         ^
 6799:      /i a*
 6800:      /i A
 6801:         \d
 6802:         Ket
 6803:         End
 6804: ------------------------------------------------------------------
 6805: Capturing subpattern count = 0
 6806: Options: anchored caseless
 6807: No first char
 6808: Need char = 'A' (caseless)
 6809:     aaaA5
 6810:  0: aaaA5
 6811:     aaaa5
 6812:  0: aaaa5
 6813: 
 6814: /(a*|b*)[cd]/IS
 6815: Capturing subpattern count = 1
 6816: No options
 6817: No first char
 6818: No need char
 6819: Subject length lower bound = 1
 6820: Starting byte set: a b c d 
 6821: 
 6822: /(a+|b*)[cd]/IS
 6823: Capturing subpattern count = 1
 6824: No options
 6825: No first char
 6826: No need char
 6827: Subject length lower bound = 1
 6828: Starting byte set: a b c d 
 6829: 
 6830: /(a*|b+)[cd]/IS
 6831: Capturing subpattern count = 1
 6832: No options
 6833: No first char
 6834: No need char
 6835: Subject length lower bound = 1
 6836: Starting byte set: a b c d 
 6837: 
 6838: /(a+|b+)[cd]/IS
 6839: Capturing subpattern count = 1
 6840: No options
 6841: No first char
 6842: No need char
 6843: Subject length lower bound = 2
 6844: Starting byte set: a b 
 6845: 
 6846: /((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
 6847:  ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
 6848:  (((
 6849:  a
 6850:  ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
 6851:  ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
 6852:  )))
 6853: /Ix
 6854: Capturing subpattern count = 203
 6855: Options: extended
 6856: First char = 'a'
 6857: No need char
 6858:   large nest
 6859: Matched, but too many substrings
 6860:  0: a
 6861:  1: a
 6862:  2: a
 6863:  3: a
 6864:  4: a
 6865:  5: a
 6866:  6: a
 6867:  7: a
 6868:  8: a
 6869:  9: a
 6870: 10: a
 6871: 11: a
 6872: 12: a
 6873: 13: a
 6874: 14: a
 6875: 
 6876: /a*\d/BZ
 6877: ------------------------------------------------------------------
 6878:         Bra
 6879:         a*+
 6880:         \d
 6881:         Ket
 6882:         End
 6883: ------------------------------------------------------------------
 6884: 
 6885: /a*\D/BZ
 6886: ------------------------------------------------------------------
 6887:         Bra
 6888:         a*
 6889:         \D
 6890:         Ket
 6891:         End
 6892: ------------------------------------------------------------------
 6893: 
 6894: /0*\d/BZ
 6895: ------------------------------------------------------------------
 6896:         Bra
 6897:         0*
 6898:         \d
 6899:         Ket
 6900:         End
 6901: ------------------------------------------------------------------
 6902: 
 6903: /0*\D/BZ
 6904: ------------------------------------------------------------------
 6905:         Bra
 6906:         0*+
 6907:         \D
 6908:         Ket
 6909:         End
 6910: ------------------------------------------------------------------
 6911: 
 6912: /a*\s/BZ
 6913: ------------------------------------------------------------------
 6914:         Bra
 6915:         a*+
 6916:         \s
 6917:         Ket
 6918:         End
 6919: ------------------------------------------------------------------
 6920: 
 6921: /a*\S/BZ
 6922: ------------------------------------------------------------------
 6923:         Bra
 6924:         a*
 6925:         \S
 6926:         Ket
 6927:         End
 6928: ------------------------------------------------------------------
 6929: 
 6930: / *\s/BZ
 6931: ------------------------------------------------------------------
 6932:         Bra
 6933:          *
 6934:         \s
 6935:         Ket
 6936:         End
 6937: ------------------------------------------------------------------
 6938: 
 6939: / *\S/BZ
 6940: ------------------------------------------------------------------
 6941:         Bra
 6942:          *+
 6943:         \S
 6944:         Ket
 6945:         End
 6946: ------------------------------------------------------------------
 6947: 
 6948: /a*\w/BZ
 6949: ------------------------------------------------------------------
 6950:         Bra
 6951:         a*
 6952:         \w
 6953:         Ket
 6954:         End
 6955: ------------------------------------------------------------------
 6956: 
 6957: /a*\W/BZ
 6958: ------------------------------------------------------------------
 6959:         Bra
 6960:         a*+
 6961:         \W
 6962:         Ket
 6963:         End
 6964: ------------------------------------------------------------------
 6965: 
 6966: /=*\w/BZ
 6967: ------------------------------------------------------------------
 6968:         Bra
 6969:         =*+
 6970:         \w
 6971:         Ket
 6972:         End
 6973: ------------------------------------------------------------------
 6974: 
 6975: /=*\W/BZ
 6976: ------------------------------------------------------------------
 6977:         Bra
 6978:         =*
 6979:         \W
 6980:         Ket
 6981:         End
 6982: ------------------------------------------------------------------
 6983: 
 6984: /\d*a/BZ
 6985: ------------------------------------------------------------------
 6986:         Bra
 6987:         \d*+
 6988:         a
 6989:         Ket
 6990:         End
 6991: ------------------------------------------------------------------
 6992: 
 6993: /\d*2/BZ
 6994: ------------------------------------------------------------------
 6995:         Bra
 6996:         \d*
 6997:         2
 6998:         Ket
 6999:         End
 7000: ------------------------------------------------------------------
 7001: 
 7002: /\d*\d/BZ
 7003: ------------------------------------------------------------------
 7004:         Bra
 7005:         \d*
 7006:         \d
 7007:         Ket
 7008:         End
 7009: ------------------------------------------------------------------
 7010: 
 7011: /\d*\D/BZ
 7012: ------------------------------------------------------------------
 7013:         Bra
 7014:         \d*+
 7015:         \D
 7016:         Ket
 7017:         End
 7018: ------------------------------------------------------------------
 7019: 
 7020: /\d*\s/BZ
 7021: ------------------------------------------------------------------
 7022:         Bra
 7023:         \d*+
 7024:         \s
 7025:         Ket
 7026:         End
 7027: ------------------------------------------------------------------
 7028: 
 7029: /\d*\S/BZ
 7030: ------------------------------------------------------------------
 7031:         Bra
 7032:         \d*
 7033:         \S
 7034:         Ket
 7035:         End
 7036: ------------------------------------------------------------------
 7037: 
 7038: /\d*\w/BZ
 7039: ------------------------------------------------------------------
 7040:         Bra
 7041:         \d*
 7042:         \w
 7043:         Ket
 7044:         End
 7045: ------------------------------------------------------------------
 7046: 
 7047: /\d*\W/BZ
 7048: ------------------------------------------------------------------
 7049:         Bra
 7050:         \d*+
 7051:         \W
 7052:         Ket
 7053:         End
 7054: ------------------------------------------------------------------
 7055: 
 7056: /\D*a/BZ
 7057: ------------------------------------------------------------------
 7058:         Bra
 7059:         \D*
 7060:         a
 7061:         Ket
 7062:         End
 7063: ------------------------------------------------------------------
 7064: 
 7065: /\D*2/BZ
 7066: ------------------------------------------------------------------
 7067:         Bra
 7068:         \D*+
 7069:         2
 7070:         Ket
 7071:         End
 7072: ------------------------------------------------------------------
 7073: 
 7074: /\D*\d/BZ
 7075: ------------------------------------------------------------------
 7076:         Bra
 7077:         \D*+
 7078:         \d
 7079:         Ket
 7080:         End
 7081: ------------------------------------------------------------------
 7082: 
 7083: /\D*\D/BZ
 7084: ------------------------------------------------------------------
 7085:         Bra
 7086:         \D*
 7087:         \D
 7088:         Ket
 7089:         End
 7090: ------------------------------------------------------------------
 7091: 
 7092: /\D*\s/BZ
 7093: ------------------------------------------------------------------
 7094:         Bra
 7095:         \D*
 7096:         \s
 7097:         Ket
 7098:         End
 7099: ------------------------------------------------------------------
 7100: 
 7101: /\D*\S/BZ
 7102: ------------------------------------------------------------------
 7103:         Bra
 7104:         \D*
 7105:         \S
 7106:         Ket
 7107:         End
 7108: ------------------------------------------------------------------
 7109: 
 7110: /\D*\w/BZ
 7111: ------------------------------------------------------------------
 7112:         Bra
 7113:         \D*
 7114:         \w
 7115:         Ket
 7116:         End
 7117: ------------------------------------------------------------------
 7118: 
 7119: /\D*\W/BZ
 7120: ------------------------------------------------------------------
 7121:         Bra
 7122:         \D*
 7123:         \W
 7124:         Ket
 7125:         End
 7126: ------------------------------------------------------------------
 7127: 
 7128: /\s*a/BZ
 7129: ------------------------------------------------------------------
 7130:         Bra
 7131:         \s*+
 7132:         a
 7133:         Ket
 7134:         End
 7135: ------------------------------------------------------------------
 7136: 
 7137: /\s*2/BZ
 7138: ------------------------------------------------------------------
 7139:         Bra
 7140:         \s*+
 7141:         2
 7142:         Ket
 7143:         End
 7144: ------------------------------------------------------------------
 7145: 
 7146: /\s*\d/BZ
 7147: ------------------------------------------------------------------
 7148:         Bra
 7149:         \s*+
 7150:         \d
 7151:         Ket
 7152:         End
 7153: ------------------------------------------------------------------
 7154: 
 7155: /\s*\D/BZ
 7156: ------------------------------------------------------------------
 7157:         Bra
 7158:         \s*
 7159:         \D
 7160:         Ket
 7161:         End
 7162: ------------------------------------------------------------------
 7163: 
 7164: /\s*\s/BZ
 7165: ------------------------------------------------------------------
 7166:         Bra
 7167:         \s*
 7168:         \s
 7169:         Ket
 7170:         End
 7171: ------------------------------------------------------------------
 7172: 
 7173: /\s*\S/BZ
 7174: ------------------------------------------------------------------
 7175:         Bra
 7176:         \s*+
 7177:         \S
 7178:         Ket
 7179:         End
 7180: ------------------------------------------------------------------
 7181: 
 7182: /\s*\w/BZ
 7183: ------------------------------------------------------------------
 7184:         Bra
 7185:         \s*+
 7186:         \w
 7187:         Ket
 7188:         End
 7189: ------------------------------------------------------------------
 7190: 
 7191: /\s*\W/BZ
 7192: ------------------------------------------------------------------
 7193:         Bra
 7194:         \s*
 7195:         \W
 7196:         Ket
 7197:         End
 7198: ------------------------------------------------------------------
 7199: 
 7200: /\S*a/BZ
 7201: ------------------------------------------------------------------
 7202:         Bra
 7203:         \S*
 7204:         a
 7205:         Ket
 7206:         End
 7207: ------------------------------------------------------------------
 7208: 
 7209: /\S*2/BZ
 7210: ------------------------------------------------------------------
 7211:         Bra
 7212:         \S*
 7213:         2
 7214:         Ket
 7215:         End
 7216: ------------------------------------------------------------------
 7217: 
 7218: /\S*\d/BZ
 7219: ------------------------------------------------------------------
 7220:         Bra
 7221:         \S*
 7222:         \d
 7223:         Ket
 7224:         End
 7225: ------------------------------------------------------------------
 7226: 
 7227: /\S*\D/BZ
 7228: ------------------------------------------------------------------
 7229:         Bra
 7230:         \S*
 7231:         \D
 7232:         Ket
 7233:         End
 7234: ------------------------------------------------------------------
 7235: 
 7236: /\S*\s/BZ
 7237: ------------------------------------------------------------------
 7238:         Bra
 7239:         \S*+
 7240:         \s
 7241:         Ket
 7242:         End
 7243: ------------------------------------------------------------------
 7244: 
 7245: /\S*\S/BZ
 7246: ------------------------------------------------------------------
 7247:         Bra
 7248:         \S*
 7249:         \S
 7250:         Ket
 7251:         End
 7252: ------------------------------------------------------------------
 7253: 
 7254: /\S*\w/BZ
 7255: ------------------------------------------------------------------
 7256:         Bra
 7257:         \S*
 7258:         \w
 7259:         Ket
 7260:         End
 7261: ------------------------------------------------------------------
 7262: 
 7263: /\S*\W/BZ
 7264: ------------------------------------------------------------------
 7265:         Bra
 7266:         \S*
 7267:         \W
 7268:         Ket
 7269:         End
 7270: ------------------------------------------------------------------
 7271: 
 7272: /\w*a/BZ
 7273: ------------------------------------------------------------------
 7274:         Bra
 7275:         \w*
 7276:         a
 7277:         Ket
 7278:         End
 7279: ------------------------------------------------------------------
 7280: 
 7281: /\w*2/BZ
 7282: ------------------------------------------------------------------
 7283:         Bra
 7284:         \w*
 7285:         2
 7286:         Ket
 7287:         End
 7288: ------------------------------------------------------------------
 7289: 
 7290: /\w*\d/BZ
 7291: ------------------------------------------------------------------
 7292:         Bra
 7293:         \w*
 7294:         \d
 7295:         Ket
 7296:         End
 7297: ------------------------------------------------------------------
 7298: 
 7299: /\w*\D/BZ
 7300: ------------------------------------------------------------------
 7301:         Bra
 7302:         \w*
 7303:         \D
 7304:         Ket
 7305:         End
 7306: ------------------------------------------------------------------
 7307: 
 7308: /\w*\s/BZ
 7309: ------------------------------------------------------------------
 7310:         Bra
 7311:         \w*+
 7312:         \s
 7313:         Ket
 7314:         End
 7315: ------------------------------------------------------------------
 7316: 
 7317: /\w*\S/BZ
 7318: ------------------------------------------------------------------
 7319:         Bra
 7320:         \w*
 7321:         \S
 7322:         Ket
 7323:         End
 7324: ------------------------------------------------------------------
 7325: 
 7326: /\w*\w/BZ
 7327: ------------------------------------------------------------------
 7328:         Bra
 7329:         \w*
 7330:         \w
 7331:         Ket
 7332:         End
 7333: ------------------------------------------------------------------
 7334: 
 7335: /\w*\W/BZ
 7336: ------------------------------------------------------------------
 7337:         Bra
 7338:         \w*+
 7339:         \W
 7340:         Ket
 7341:         End
 7342: ------------------------------------------------------------------
 7343: 
 7344: /\W*a/BZ
 7345: ------------------------------------------------------------------
 7346:         Bra
 7347:         \W*+
 7348:         a
 7349:         Ket
 7350:         End
 7351: ------------------------------------------------------------------
 7352: 
 7353: /\W*2/BZ
 7354: ------------------------------------------------------------------
 7355:         Bra
 7356:         \W*+
 7357:         2
 7358:         Ket
 7359:         End
 7360: ------------------------------------------------------------------
 7361: 
 7362: /\W*\d/BZ
 7363: ------------------------------------------------------------------
 7364:         Bra
 7365:         \W*+
 7366:         \d
 7367:         Ket
 7368:         End
 7369: ------------------------------------------------------------------
 7370: 
 7371: /\W*\D/BZ
 7372: ------------------------------------------------------------------
 7373:         Bra
 7374:         \W*
 7375:         \D
 7376:         Ket
 7377:         End
 7378: ------------------------------------------------------------------
 7379: 
 7380: /\W*\s/BZ
 7381: ------------------------------------------------------------------
 7382:         Bra
 7383:         \W*
 7384:         \s
 7385:         Ket
 7386:         End
 7387: ------------------------------------------------------------------
 7388: 
 7389: /\W*\S/BZ
 7390: ------------------------------------------------------------------
 7391:         Bra
 7392:         \W*
 7393:         \S
 7394:         Ket
 7395:         End
 7396: ------------------------------------------------------------------
 7397: 
 7398: /\W*\w/BZ
 7399: ------------------------------------------------------------------
 7400:         Bra
 7401:         \W*+
 7402:         \w
 7403:         Ket
 7404:         End
 7405: ------------------------------------------------------------------
 7406: 
 7407: /\W*\W/BZ
 7408: ------------------------------------------------------------------
 7409:         Bra
 7410:         \W*
 7411:         \W
 7412:         Ket
 7413:         End
 7414: ------------------------------------------------------------------
 7415: 
 7416: /[^a]+a/BZ
 7417: ------------------------------------------------------------------
 7418:         Bra
 7419:         [^a]++
 7420:         a
 7421:         Ket
 7422:         End
 7423: ------------------------------------------------------------------
 7424: 
 7425: /[^a]+a/BZi
 7426: ------------------------------------------------------------------
 7427:         Bra
 7428:      /i [^a]++
 7429:      /i a
 7430:         Ket
 7431:         End
 7432: ------------------------------------------------------------------
 7433: 
 7434: /[^a]+A/BZi
 7435: ------------------------------------------------------------------
 7436:         Bra
 7437:      /i [^a]++
 7438:      /i A
 7439:         Ket
 7440:         End
 7441: ------------------------------------------------------------------
 7442: 
 7443: /[^a]+b/BZ
 7444: ------------------------------------------------------------------
 7445:         Bra
 7446:         [^a]+
 7447:         b
 7448:         Ket
 7449:         End
 7450: ------------------------------------------------------------------
 7451: 
 7452: /[^a]+\d/BZ
 7453: ------------------------------------------------------------------
 7454:         Bra
 7455:         [^a]+
 7456:         \d
 7457:         Ket
 7458:         End
 7459: ------------------------------------------------------------------
 7460: 
 7461: /a*[^a]/BZ
 7462: ------------------------------------------------------------------
 7463:         Bra
 7464:         a*
 7465:         [^a]
 7466:         Ket
 7467:         End
 7468: ------------------------------------------------------------------
 7469: 
 7470: /(?P<abc>x)(?P<xyz>y)/I
 7471: Capturing subpattern count = 2
 7472: Named capturing subpatterns:
 7473:   abc   1
 7474:   xyz   2
 7475: No options
 7476: First char = 'x'
 7477: Need char = 'y'
 7478:     xy\Cabc\Cxyz
 7479:  0: xy
 7480:  1: x
 7481:  2: y
 7482:   C x (1) abc
 7483:   C y (1) xyz
 7484: 
 7485: /(?<abc>x)(?'xyz'y)/I
 7486: Capturing subpattern count = 2
 7487: Named capturing subpatterns:
 7488:   abc   1
 7489:   xyz   2
 7490: No options
 7491: First char = 'x'
 7492: Need char = 'y'
 7493:     xy\Cabc\Cxyz
 7494:  0: xy
 7495:  1: x
 7496:  2: y
 7497:   C x (1) abc
 7498:   C y (1) xyz
 7499: 
 7500: /(?<abc'x)(?'xyz'y)/I
 7501: Failed: syntax error in subpattern name (missing terminator) at offset 6
 7502: 
 7503: /(?<abc>x)(?'xyz>y)/I
 7504: Failed: syntax error in subpattern name (missing terminator) at offset 15
 7505: 
 7506: /(?P'abc'x)(?P<xyz>y)/I
 7507: Failed: unrecognized character after (?P at offset 3
 7508: 
 7509: /^(?:(?(ZZ)a|b)(?<ZZ>X))+/
 7510:     bXaX
 7511:  0: bXaX
 7512:  1: X
 7513:     bXbX
 7514:  0: bX
 7515:  1: X
 7516:     ** Failers
 7517: No match
 7518:     aXaX
 7519: No match
 7520:     aXbX
 7521: No match
 7522: 
 7523: /^(?P>abc)(?<abcd>xxx)/
 7524: Failed: reference to non-existent subpattern at offset 8
 7525: 
 7526: /^(?P>abc)(?<abc>x|y)/
 7527:     xx
 7528:  0: xx
 7529:  1: x
 7530:     xy
 7531:  0: xy
 7532:  1: y
 7533:     yy
 7534:  0: yy
 7535:  1: y
 7536:     yx
 7537:  0: yx
 7538:  1: x
 7539: 
 7540: /^(?P>abc)(?P<abc>x|y)/
 7541:     xx
 7542:  0: xx
 7543:  1: x
 7544:     xy
 7545:  0: xy
 7546:  1: y
 7547:     yy
 7548:  0: yy
 7549:  1: y
 7550:     yx
 7551:  0: yx
 7552:  1: x
 7553: 
 7554: /^((?(abc)a|b)(?<abc>x|y))+/
 7555:     bxay
 7556:  0: bxay
 7557:  1: ay
 7558:  2: y
 7559:     bxby
 7560:  0: bx
 7561:  1: bx
 7562:  2: x
 7563:     ** Failers
 7564: No match
 7565:     axby
 7566: No match
 7567: 
 7568: /^(((?P=abc)|X)(?<abc>x|y))+/
 7569:     XxXxxx
 7570:  0: XxXxxx
 7571:  1: xx
 7572:  2: x
 7573:  3: x
 7574:     XxXyyx
 7575:  0: XxXyyx
 7576:  1: yx
 7577:  2: y
 7578:  3: x
 7579:     XxXyxx
 7580:  0: XxXy
 7581:  1: Xy
 7582:  2: X
 7583:  3: y
 7584:     ** Failers
 7585: No match
 7586:     x
 7587: No match
 7588: 
 7589: /^(?1)(abc)/
 7590:     abcabc
 7591:  0: abcabc
 7592:  1: abc
 7593: 
 7594: /^(?:(?:\1|X)(a|b))+/
 7595:     Xaaa
 7596:  0: Xaaa
 7597:  1: a
 7598:     Xaba
 7599:  0: Xa
 7600:  1: a
 7601: 
 7602: /^[\E\Qa\E-\Qz\E]+/BZ
 7603: ------------------------------------------------------------------
 7604:         Bra
 7605:         ^
 7606:         [a-z]+
 7607:         Ket
 7608:         End
 7609: ------------------------------------------------------------------
 7610: 
 7611: /^[a\Q]bc\E]/BZ
 7612: ------------------------------------------------------------------
 7613:         Bra
 7614:         ^
 7615:         [\]a-c]
 7616:         Ket
 7617:         End
 7618: ------------------------------------------------------------------
 7619: 
 7620: /^[a-\Q\E]/BZ
 7621: ------------------------------------------------------------------
 7622:         Bra
 7623:         ^
 7624:         [\-a]
 7625:         Ket
 7626:         End
 7627: ------------------------------------------------------------------
 7628: 
 7629: /^(?P>abc)[()](?<abc>)/BZ
 7630: ------------------------------------------------------------------
 7631:         Bra
 7632:         ^
 7633:         Recurse
 7634:         [()]
 7635:         CBra 1
 7636:         Ket
 7637:         Ket
 7638:         End
 7639: ------------------------------------------------------------------
 7640: 
 7641: /^((?(abc)y)[()](?P<abc>x))+/BZ
 7642: ------------------------------------------------------------------
 7643:         Bra
 7644:         ^
 7645:         CBra 1
 7646:         Cond
 7647:       2 Cond nref
 7648:         y
 7649:         Ket
 7650:         [()]
 7651:         CBra 2
 7652:         x
 7653:         Ket
 7654:         KetRmax
 7655:         Ket
 7656:         End
 7657: ------------------------------------------------------------------
 7658:     (xy)x
 7659:  0: (xy)x
 7660:  1: y)x
 7661:  2: x
 7662: 
 7663: /^(?P>abc)\Q()\E(?<abc>)/BZ
 7664: ------------------------------------------------------------------
 7665:         Bra
 7666:         ^
 7667:         Recurse
 7668:         ()
 7669:         CBra 1
 7670:         Ket
 7671:         Ket
 7672:         End
 7673: ------------------------------------------------------------------
 7674: 
 7675: /^(?P>abc)[a\Q(]\E(](?<abc>)/BZ
 7676: ------------------------------------------------------------------
 7677:         Bra
 7678:         ^
 7679:         Recurse
 7680:         [(\]a]
 7681:         CBra 1
 7682:         Ket
 7683:         Ket
 7684:         End
 7685: ------------------------------------------------------------------
 7686: 
 7687: /^(?P>abc) # this is (a comment)
 7688:   (?<abc>)/BZx
 7689: ------------------------------------------------------------------
 7690:         Bra
 7691:         ^
 7692:         Recurse
 7693:         CBra 1
 7694:         Ket
 7695:         Ket
 7696:         End
 7697: ------------------------------------------------------------------
 7698: 
 7699: /^\W*(?:(?<one>(?<two>.)\W*(?&one)\W*\k<two>|)|(?<three>(?<four>.)\W*(?&three)\W*\k'four'|\W*.\W*))\W*$/Ii
 7700: Capturing subpattern count = 4
 7701: Max back reference = 4
 7702: Named capturing subpatterns:
 7703:   four    4
 7704:   one     1
 7705:   three   3
 7706:   two     2
 7707: Options: anchored caseless
 7708: No first char
 7709: No need char
 7710:     1221
 7711:  0: 1221
 7712:  1: 1221
 7713:  2: 1
 7714:     Satan, oscillate my metallic sonatas!
 7715:  0: Satan, oscillate my metallic sonatas!
 7716:  1: <unset>
 7717:  2: <unset>
 7718:  3: Satan, oscillate my metallic sonatas
 7719:  4: S
 7720:     A man, a plan, a canal: Panama!
 7721:  0: A man, a plan, a canal: Panama!
 7722:  1: <unset>
 7723:  2: <unset>
 7724:  3: A man, a plan, a canal: Panama
 7725:  4: A
 7726:     Able was I ere I saw Elba.
 7727:  0: Able was I ere I saw Elba.
 7728:  1: <unset>
 7729:  2: <unset>
 7730:  3: Able was I ere I saw Elba
 7731:  4: A
 7732:     *** Failers
 7733: No match
 7734:     The quick brown fox
 7735: No match
 7736: 
 7737: /(?=(\w+))\1:/I
 7738: Capturing subpattern count = 1
 7739: Max back reference = 1
 7740: No options
 7741: No first char
 7742: Need char = ':'
 7743:     abcd:
 7744:  0: abcd:
 7745:  1: abcd
 7746: 
 7747: /(?=(?'abc'\w+))\k<abc>:/I
 7748: Capturing subpattern count = 1
 7749: Max back reference = 1
 7750: Named capturing subpatterns:
 7751:   abc   1
 7752: No options
 7753: No first char
 7754: Need char = ':'
 7755:     abcd:
 7756:  0: abcd:
 7757:  1: abcd
 7758: 
 7759: /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J
 7760:     adaa
 7761:  0: adaa
 7762:  1: a
 7763:  2: d
 7764:     ** Failers
 7765: No match
 7766:     addd
 7767: No match
 7768:     adbb
 7769: No match
 7770: 
 7771: /(?'abc'a|b)(?<abc>d|e)(?&abc){2}/J
 7772:     bdaa
 7773:  0: bdaa
 7774:  1: b
 7775:  2: d
 7776:     bdab
 7777:  0: bdab
 7778:  1: b
 7779:  2: d
 7780:     ** Failers
 7781: No match
 7782:     bddd
 7783: No match
 7784: 
 7785: /(?(<bc))/
 7786: Failed: malformed number or name after (?( at offset 6
 7787: 
 7788: /(?(''))/
 7789: Failed: assertion expected after (?( at offset 4
 7790: 
 7791: /(?('R')stuff)/
 7792: Failed: reference to non-existent subpattern at offset 7
 7793: 
 7794: /((abc (?(R) (?(R1)1) (?(R2)2) X  |  (?1)  (?2)   (?R) ))) /x
 7795:     abcabc1Xabc2XabcXabcabc
 7796:  0: abcabc1Xabc2XabcX
 7797:  1: abcabc1Xabc2XabcX
 7798:  2: abcabc1Xabc2XabcX
 7799: 
 7800: /(?<A> (?'B' abc (?(R) (?(R&A)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x
 7801:     abcabc1Xabc2XabcXabcabc
 7802:  0: abcabc1Xabc2XabcX
 7803:  1: abcabc1Xabc2XabcX
 7804:  2: abcabc1Xabc2XabcX
 7805: 
 7806: /(?<A> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x
 7807: Failed: reference to non-existent subpattern at offset 29
 7808: 
 7809: /(?<1> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x
 7810:     abcabc1Xabc2XabcXabcabc
 7811:  0: abcabc1Xabc2XabcX
 7812:  1: abcabc1Xabc2XabcX
 7813:  2: abcabc1Xabc2XabcX
 7814: 
 7815: /^(?(DEFINE) abc | xyz ) /x
 7816: Failed: DEFINE group contains more than one branch at offset 22
 7817: 
 7818: /(?(DEFINE) abc) xyz/xI
 7819: Capturing subpattern count = 0
 7820: Options: extended
 7821: First char = 'x'
 7822: Need char = 'z'
 7823: 
 7824: /(a|)*\d/
 7825:   \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 7826: No match
 7827:   \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 7828: Matched, but too many substrings
 7829: 
 7830: /^a.b/<lf>
 7831:     a\rb
 7832:  0: a\x0db
 7833:     a\nb\<cr>
 7834:  0: a\x0ab
 7835:     a\x85b\<anycrlf> 
 7836:  0: a\x85b
 7837:     ** Failers
 7838: No match
 7839:     a\nb
 7840: No match
 7841:     a\nb\<any>
 7842: No match
 7843:     a\rb\<cr>
 7844: No match
 7845:     a\rb\<any>
 7846: No match
 7847:     a\x85b\<any> 
 7848: No match
 7849:     a\rb\<anycrlf>
 7850: No match
 7851: 
 7852: /^abc./mgx<any>
 7853:     abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
 7854:  0: abc1
 7855:  0: abc2
 7856:  0: abc3
 7857:  0: abc4
 7858:  0: abc5
 7859:  0: abc6
 7860:  0: abc7
 7861: 
 7862: /abc.$/mgx<any>
 7863:     abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7 abc9
 7864:  0: abc1
 7865:  0: abc2
 7866:  0: abc3
 7867:  0: abc4
 7868:  0: abc5
 7869:  0: abc6
 7870:  0: abc9
 7871: 
 7872: /a/<cr><any>
 7873: 
 7874: /a/<any><crlf>
 7875: Failed: inconsistent NEWLINE options at offset 0
 7876: 
 7877: /^a\Rb/<bsr_unicode>
 7878:     a\nb
 7879:  0: a\x0ab
 7880:     a\rb
 7881:  0: a\x0db
 7882:     a\r\nb
 7883:  0: a\x0d\x0ab
 7884:     a\x0bb
 7885:  0: a\x0bb
 7886:     a\x0cb
 7887:  0: a\x0cb
 7888:     a\x85b
 7889:  0: a\x85b
 7890:     ** Failers
 7891: No match
 7892:     a\n\rb
 7893: No match
 7894: 
 7895: /^a\R*b/<bsr_unicode>
 7896:     ab
 7897:  0: ab
 7898:     a\nb
 7899:  0: a\x0ab
 7900:     a\rb
 7901:  0: a\x0db
 7902:     a\r\nb
 7903:  0: a\x0d\x0ab
 7904:     a\x0bb
 7905:  0: a\x0bb
 7906:     a\x0cb
 7907:  0: a\x0cb
 7908:     a\x85b
 7909:  0: a\x85b
 7910:     a\n\rb
 7911:  0: a\x0a\x0db
 7912:     a\n\r\x85\x0cb
 7913:  0: a\x0a\x0d\x85\x0cb
 7914: 
 7915: /^a\R+b/<bsr_unicode>
 7916:     a\nb
 7917:  0: a\x0ab
 7918:     a\rb
 7919:  0: a\x0db
 7920:     a\r\nb
 7921:  0: a\x0d\x0ab
 7922:     a\x0bb
 7923:  0: a\x0bb
 7924:     a\x0cb
 7925:  0: a\x0cb
 7926:     a\x85b
 7927:  0: a\x85b
 7928:     a\n\rb
 7929:  0: a\x0a\x0db
 7930:     a\n\r\x85\x0cb
 7931:  0: a\x0a\x0d\x85\x0cb
 7932:     ** Failers
 7933: No match
 7934:     ab
 7935: No match
 7936: 
 7937: /^a\R{1,3}b/<bsr_unicode>
 7938:     a\nb
 7939:  0: a\x0ab
 7940:     a\n\rb
 7941:  0: a\x0a\x0db
 7942:     a\n\r\x85b
 7943:  0: a\x0a\x0d\x85b
 7944:     a\r\n\r\nb
 7945:  0: a\x0d\x0a\x0d\x0ab
 7946:     a\r\n\r\n\r\nb
 7947:  0: a\x0d\x0a\x0d\x0a\x0d\x0ab
 7948:     a\n\r\n\rb
 7949:  0: a\x0a\x0d\x0a\x0db
 7950:     a\n\n\r\nb
 7951:  0: a\x0a\x0a\x0d\x0ab
 7952:     ** Failers
 7953: No match
 7954:     a\n\n\n\rb
 7955: No match
 7956:     a\r
 7957: No match
 7958: 
 7959: /^a[\R]b/<bsr_unicode>
 7960:     aRb
 7961:  0: aRb
 7962:     ** Failers
 7963: No match
 7964:     a\nb
 7965: No match
 7966: 
 7967: /(?&abc)X(?<abc>P)/I
 7968: Capturing subpattern count = 1
 7969: Named capturing subpatterns:
 7970:   abc   1
 7971: No options
 7972: No first char
 7973: Need char = 'P'
 7974:     abcPXP123
 7975:  0: PXP
 7976:  1: P
 7977: 
 7978: /(?1)X(?<abc>P)/I
 7979: Capturing subpattern count = 1
 7980: Named capturing subpatterns:
 7981:   abc   1
 7982: No options
 7983: No first char
 7984: Need char = 'P'
 7985:     abcPXP123
 7986:  0: PXP
 7987:  1: P
 7988: 
 7989: /(?:a(?&abc)b)*(?<abc>x)/
 7990:     123axbaxbaxbx456
 7991:  0: axbaxbaxbx
 7992:  1: x
 7993:     123axbaxbaxb456
 7994:  0: x
 7995:  1: x
 7996: 
 7997: /(?:a(?&abc)b){1,5}(?<abc>x)/
 7998:     123axbaxbaxbx456
 7999:  0: axbaxbaxbx
 8000:  1: x
 8001: 
 8002: /(?:a(?&abc)b){2,5}(?<abc>x)/
 8003:     123axbaxbaxbx456
 8004:  0: axbaxbaxbx
 8005:  1: x
 8006: 
 8007: /(?:a(?&abc)b){2,}(?<abc>x)/
 8008:     123axbaxbaxbx456
 8009:  0: axbaxbaxbx
 8010:  1: x
 8011: 
 8012: /(abc)(?i:(?1))/
 8013:    defabcabcxyz
 8014:  0: abcabc
 8015:  1: abc
 8016:    DEFabcABCXYZ
 8017: No match
 8018: 
 8019: /(abc)(?:(?i)(?1))/
 8020:    defabcabcxyz
 8021:  0: abcabc
 8022:  1: abc
 8023:    DEFabcABCXYZ
 8024: No match
 8025: 
 8026: /^(a)\g-2/
 8027: Failed: reference to non-existent subpattern at offset 7
 8028: 
 8029: /^(a)\g/
 8030: Failed: a numbered reference must not be zero at offset 5
 8031: 
 8032: /^(a)\g{0}/
 8033: Failed: a numbered reference must not be zero at offset 8
 8034: 
 8035: /^(a)\g{3/
 8036: Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 8
 8037: 
 8038: /^(a)\g{4a}/
 8039: Failed: reference to non-existent subpattern at offset 9
 8040: 
 8041: /^a.b/<lf>
 8042:     a\rb
 8043:  0: a\x0db
 8044:     *** Failers
 8045: No match
 8046:     a\nb
 8047: No match
 8048: 
 8049: /.+foo/
 8050:     afoo
 8051:  0: afoo
 8052:     ** Failers
 8053: No match
 8054:     \r\nfoo
 8055: No match
 8056:     \nfoo
 8057: No match
 8058: 
 8059: /.+foo/<crlf>
 8060:     afoo
 8061:  0: afoo
 8062:     \nfoo
 8063:  0: \x0afoo
 8064:     ** Failers
 8065: No match
 8066:     \r\nfoo
 8067: No match
 8068: 
 8069: /.+foo/<any>
 8070:     afoo
 8071:  0: afoo
 8072:     ** Failers
 8073: No match
 8074:     \nfoo
 8075: No match
 8076:     \r\nfoo
 8077: No match
 8078: 
 8079: /.+foo/s
 8080:     afoo
 8081:  0: afoo
 8082:     \r\nfoo
 8083:  0: \x0d\x0afoo
 8084:     \nfoo
 8085:  0: \x0afoo
 8086:     
 8087: /^$/mg<any>
 8088:     abc\r\rxyz
 8089:  0: 
 8090:     abc\n\rxyz  
 8091:  0: 
 8092:     ** Failers 
 8093: No match
 8094:     abc\r\nxyz
 8095: No match
 8096: 
 8097: /(?m)^$/<any>g+
 8098:     abc\r\n\r\n
 8099:  0: 
 8100:  0+ \x0d\x0a
 8101: 
 8102: /(?m)^$|^\r\n/<any>g+ 
 8103:     abc\r\n\r\n
 8104:  0: 
 8105:  0+ \x0d\x0a
 8106:  0: \x0d\x0a
 8107:  0+ 
 8108:     
 8109: /(?m)$/<any>g+ 
 8110:     abc\r\n\r\n
 8111:  0: 
 8112:  0+ \x0d\x0a\x0d\x0a
 8113:  0: 
 8114:  0+ \x0d\x0a
 8115:  0: 
 8116:  0+ 
 8117: 
 8118: /abc.$/mgx<anycrlf>
 8119:     abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
 8120:  0: abc1
 8121:  0: abc4
 8122:  0: abc5
 8123:  0: abc9
 8124: 
 8125: /^X/m
 8126:     XABC
 8127:  0: X
 8128:     ** Failers 
 8129: No match
 8130:     XABC\B
 8131: No match
 8132: 
 8133: /(ab|c)(?-1)/BZ
 8134: ------------------------------------------------------------------
 8135:         Bra
 8136:         CBra 1
 8137:         ab
 8138:         Alt
 8139:         c
 8140:         Ket
 8141:         Recurse
 8142:         Ket
 8143:         End
 8144: ------------------------------------------------------------------
 8145:     abc
 8146:  0: abc
 8147:  1: ab
 8148: 
 8149: /xy(?+1)(abc)/BZ
 8150: ------------------------------------------------------------------
 8151:         Bra
 8152:         xy
 8153:         Recurse
 8154:         CBra 1
 8155:         abc
 8156:         Ket
 8157:         Ket
 8158:         End
 8159: ------------------------------------------------------------------
 8160:     xyabcabc
 8161:  0: xyabcabc
 8162:  1: abc
 8163:     ** Failers
 8164: No match
 8165:     xyabc  
 8166: No match
 8167:     
 8168: /x(?-0)y/
 8169: Failed: a numbered reference must not be zero at offset 5
 8170: 
 8171: /x(?-1)y/
 8172: Failed: reference to non-existent subpattern at offset 5
 8173: 
 8174: /x(?+0)y/ 
 8175: Failed: a numbered reference must not be zero at offset 5
 8176: 
 8177: /x(?+1)y/
 8178: Failed: reference to non-existent subpattern at offset 5
 8179: 
 8180: /^(abc)?(?(-1)X|Y)/BZ
 8181: ------------------------------------------------------------------
 8182:         Bra
 8183:         ^
 8184:         Brazero
 8185:         CBra 1
 8186:         abc
 8187:         Ket
 8188:         Cond
 8189:       1 Cond ref
 8190:         X
 8191:         Alt
 8192:         Y
 8193:         Ket
 8194:         Ket
 8195:         End
 8196: ------------------------------------------------------------------
 8197:     abcX
 8198:  0: abcX
 8199:  1: abc
 8200:     Y
 8201:  0: Y
 8202:     ** Failers
 8203: No match
 8204:     abcY   
 8205: No match
 8206:     
 8207: /^((?(+1)X|Y)(abc))+/BZ 
 8208: ------------------------------------------------------------------
 8209:         Bra
 8210:         ^
 8211:         CBra 1
 8212:         Cond
 8213:       2 Cond ref
 8214:         X
 8215:         Alt
 8216:         Y
 8217:         Ket
 8218:         CBra 2
 8219:         abc
 8220:         Ket
 8221:         KetRmax
 8222:         Ket
 8223:         End
 8224: ------------------------------------------------------------------
 8225:     YabcXabc
 8226:  0: YabcXabc
 8227:  1: Xabc
 8228:  2: abc
 8229:     YabcXabcXabc
 8230:  0: YabcXabcXabc
 8231:  1: Xabc
 8232:  2: abc
 8233:     ** Failers
 8234: No match
 8235:     XabcXabc  
 8236: No match
 8237: 
 8238: /(?(-1)a)/BZ
 8239: Failed: reference to non-existent subpattern at offset 6
 8240: 
 8241: /((?(-1)a))/BZ
 8242: ------------------------------------------------------------------
 8243:         Bra
 8244:         CBra 1
 8245:         Cond
 8246:       1 Cond ref
 8247:         a
 8248:         Ket
 8249:         Ket
 8250:         Ket
 8251:         End
 8252: ------------------------------------------------------------------
 8253: 
 8254: /((?(-2)a))/BZ
 8255: Failed: reference to non-existent subpattern at offset 7
 8256: 
 8257: /^(?(+1)X|Y)(.)/BZ
 8258: ------------------------------------------------------------------
 8259:         Bra
 8260:         ^
 8261:         Cond
 8262:       1 Cond ref
 8263:         X
 8264:         Alt
 8265:         Y
 8266:         Ket
 8267:         CBra 1
 8268:         Any
 8269:         Ket
 8270:         Ket
 8271:         End
 8272: ------------------------------------------------------------------
 8273:     Y!
 8274:  0: Y!
 8275:  1: !
 8276: 
 8277: /(?<A>tom|bon)-\k{A}/
 8278:     tom-tom
 8279:  0: tom-tom
 8280:  1: tom
 8281:     bon-bon 
 8282:  0: bon-bon
 8283:  1: bon
 8284:     ** Failers
 8285: No match
 8286:     tom-bon  
 8287: No match
 8288: 
 8289: /\g{A/ 
 8290: Failed: syntax error in subpattern name (missing terminator) at offset 4
 8291: 
 8292: /(?|(abc)|(xyz))/BZ
 8293: ------------------------------------------------------------------
 8294:         Bra
 8295:         Bra
 8296:         CBra 1
 8297:         abc
 8298:         Ket
 8299:         Alt
 8300:         CBra 1
 8301:         xyz
 8302:         Ket
 8303:         Ket
 8304:         Ket
 8305:         End
 8306: ------------------------------------------------------------------
 8307:    >abc<
 8308:  0: abc
 8309:  1: abc
 8310:    >xyz< 
 8311:  0: xyz
 8312:  1: xyz
 8313: 
 8314: /(x)(?|(abc)|(xyz))(x)/BZ
 8315: ------------------------------------------------------------------
 8316:         Bra
 8317:         CBra 1
 8318:         x
 8319:         Ket
 8320:         Bra
 8321:         CBra 2
 8322:         abc
 8323:         Ket
 8324:         Alt
 8325:         CBra 2
 8326:         xyz
 8327:         Ket
 8328:         Ket
 8329:         CBra 3
 8330:         x
 8331:         Ket
 8332:         Ket
 8333:         End
 8334: ------------------------------------------------------------------
 8335:     xabcx
 8336:  0: xabcx
 8337:  1: x
 8338:  2: abc
 8339:  3: x
 8340:     xxyzx 
 8341:  0: xxyzx
 8342:  1: x
 8343:  2: xyz
 8344:  3: x
 8345: 
 8346: /(x)(?|(abc)(pqr)|(xyz))(x)/BZ
 8347: ------------------------------------------------------------------
 8348:         Bra
 8349:         CBra 1
 8350:         x
 8351:         Ket
 8352:         Bra
 8353:         CBra 2
 8354:         abc
 8355:         Ket
 8356:         CBra 3
 8357:         pqr
 8358:         Ket
 8359:         Alt
 8360:         CBra 2
 8361:         xyz
 8362:         Ket
 8363:         Ket
 8364:         CBra 4
 8365:         x
 8366:         Ket
 8367:         Ket
 8368:         End
 8369: ------------------------------------------------------------------
 8370:     xabcpqrx
 8371:  0: xabcpqrx
 8372:  1: x
 8373:  2: abc
 8374:  3: pqr
 8375:  4: x
 8376:     xxyzx 
 8377:  0: xxyzx
 8378:  1: x
 8379:  2: xyz
 8380:  3: <unset>
 8381:  4: x
 8382: 
 8383: /\H++X/BZ
 8384: ------------------------------------------------------------------
 8385:         Bra
 8386:         \H++
 8387:         X
 8388:         Ket
 8389:         End
 8390: ------------------------------------------------------------------
 8391:     ** Failers
 8392: No match
 8393:     XXXX
 8394: No match
 8395:     
 8396: /\H+\hY/BZ
 8397: ------------------------------------------------------------------
 8398:         Bra
 8399:         \H++
 8400:         \h
 8401:         Y
 8402:         Ket
 8403:         End
 8404: ------------------------------------------------------------------
 8405:     XXXX Y 
 8406:  0: XXXX Y
 8407: 
 8408: /\H+ Y/BZ
 8409: ------------------------------------------------------------------
 8410:         Bra
 8411:         \H++
 8412:          Y
 8413:         Ket
 8414:         End
 8415: ------------------------------------------------------------------
 8416: 
 8417: /\h+A/BZ
 8418: ------------------------------------------------------------------
 8419:         Bra
 8420:         \h++
 8421:         A
 8422:         Ket
 8423:         End
 8424: ------------------------------------------------------------------
 8425: 
 8426: /\v*B/BZ
 8427: ------------------------------------------------------------------
 8428:         Bra
 8429:         \v*+
 8430:         B
 8431:         Ket
 8432:         End
 8433: ------------------------------------------------------------------
 8434: 
 8435: /\V+\x0a/BZ
 8436: ------------------------------------------------------------------
 8437:         Bra
 8438:         \V++
 8439:         \x0a
 8440:         Ket
 8441:         End
 8442: ------------------------------------------------------------------
 8443: 
 8444: /A+\h/BZ
 8445: ------------------------------------------------------------------
 8446:         Bra
 8447:         A++
 8448:         \h
 8449:         Ket
 8450:         End
 8451: ------------------------------------------------------------------
 8452: 
 8453: / *\H/BZ
 8454: ------------------------------------------------------------------
 8455:         Bra
 8456:          *+
 8457:         \H
 8458:         Ket
 8459:         End
 8460: ------------------------------------------------------------------
 8461: 
 8462: /A*\v/BZ
 8463: ------------------------------------------------------------------
 8464:         Bra
 8465:         A*+
 8466:         \v
 8467:         Ket
 8468:         End
 8469: ------------------------------------------------------------------
 8470: 
 8471: /\x0b*\V/BZ
 8472: ------------------------------------------------------------------
 8473:         Bra
 8474:         \x0b*+
 8475:         \V
 8476:         Ket
 8477:         End
 8478: ------------------------------------------------------------------
 8479: 
 8480: /\d+\h/BZ
 8481: ------------------------------------------------------------------
 8482:         Bra
 8483:         \d++
 8484:         \h
 8485:         Ket
 8486:         End
 8487: ------------------------------------------------------------------
 8488: 
 8489: /\d*\v/BZ
 8490: ------------------------------------------------------------------
 8491:         Bra
 8492:         \d*+
 8493:         \v
 8494:         Ket
 8495:         End
 8496: ------------------------------------------------------------------
 8497: 
 8498: /S+\h\S+\v/BZ
 8499: ------------------------------------------------------------------
 8500:         Bra
 8501:         S++
 8502:         \h
 8503:         \S++
 8504:         \v
 8505:         Ket
 8506:         End
 8507: ------------------------------------------------------------------
 8508: 
 8509: /\w{3,}\h\w+\v/BZ
 8510: ------------------------------------------------------------------
 8511:         Bra
 8512:         \w{3}
 8513:         \w*+
 8514:         \h
 8515:         \w++
 8516:         \v
 8517:         Ket
 8518:         End
 8519: ------------------------------------------------------------------
 8520: 
 8521: /\h+\d\h+\w\h+\S\h+\H/BZ
 8522: ------------------------------------------------------------------
 8523:         Bra
 8524:         \h++
 8525:         \d
 8526:         \h++
 8527:         \w
 8528:         \h++
 8529:         \S
 8530:         \h++
 8531:         \H
 8532:         Ket
 8533:         End
 8534: ------------------------------------------------------------------
 8535: 
 8536: /\v+\d\v+\w\v+\S\v+\V/BZ
 8537: ------------------------------------------------------------------
 8538:         Bra
 8539:         \v++
 8540:         \d
 8541:         \v++
 8542:         \w
 8543:         \v+
 8544:         \S
 8545:         \v++
 8546:         \V
 8547:         Ket
 8548:         End
 8549: ------------------------------------------------------------------
 8550: 
 8551: /\H+\h\H+\d/BZ
 8552: ------------------------------------------------------------------
 8553:         Bra
 8554:         \H++
 8555:         \h
 8556:         \H+
 8557:         \d
 8558:         Ket
 8559:         End
 8560: ------------------------------------------------------------------
 8561: 
 8562: /\V+\v\V+\w/BZ
 8563: ------------------------------------------------------------------
 8564:         Bra
 8565:         \V++
 8566:         \v
 8567:         \V+
 8568:         \w
 8569:         Ket
 8570:         End
 8571: ------------------------------------------------------------------
 8572: 
 8573: /\( (?: [^()]* | (?R) )* \)/x
 8574: \J1024(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)
 8575:  0: (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)
 8576: 
 8577: /[\E]AAA/
 8578: Failed: missing terminating ] for character class at offset 7
 8579: 
 8580: /[\Q\E]AAA/
 8581: Failed: missing terminating ] for character class at offset 9
 8582: 
 8583: /[^\E]AAA/
 8584: Failed: missing terminating ] for character class at offset 8
 8585: 
 8586: /[^\Q\E]AAA/
 8587: Failed: missing terminating ] for character class at offset 10
 8588: 
 8589: /[\E^]AAA/
 8590: Failed: missing terminating ] for character class at offset 8
 8591: 
 8592: /[\Q\E^]AAA/
 8593: Failed: missing terminating ] for character class at offset 10
 8594: 
 8595: /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/BZ
 8596: ------------------------------------------------------------------
 8597:         Bra
 8598:         A
 8599:         *PRUNE
 8600:         B
 8601:         *SKIP
 8602:         C
 8603:         *THEN
 8604:         D
 8605:         *COMMIT
 8606:         E
 8607:         *FAIL
 8608:         F
 8609:         *FAIL
 8610:         G
 8611:         *FAIL
 8612:         H
 8613:         *ACCEPT
 8614:         I
 8615:         Ket
 8616:         End
 8617: ------------------------------------------------------------------
 8618: 
 8619: /^a+(*FAIL)/C
 8620:     aaaaaa
 8621: --->aaaaaa
 8622:  +0 ^          ^
 8623:  +1 ^          a+
 8624:  +3 ^     ^    (*FAIL)
 8625:  +3 ^    ^     (*FAIL)
 8626:  +3 ^   ^      (*FAIL)
 8627:  +3 ^  ^       (*FAIL)
 8628:  +3 ^ ^        (*FAIL)
 8629:  +3 ^^         (*FAIL)
 8630: No match
 8631:     
 8632: /a+b?c+(*FAIL)/C
 8633:     aaabccc
 8634: --->aaabccc
 8635:  +0 ^           a+
 8636:  +2 ^  ^        b?
 8637:  +4 ^   ^       c+
 8638:  +6 ^      ^    (*FAIL)
 8639:  +6 ^     ^     (*FAIL)
 8640:  +6 ^    ^      (*FAIL)
 8641:  +4 ^  ^        c+
 8642:  +2 ^ ^         b?
 8643:  +4 ^ ^         c+
 8644:  +2 ^^          b?
 8645:  +4 ^^          c+
 8646:  +0  ^          a+
 8647:  +2  ^ ^        b?
 8648:  +4  ^  ^       c+
 8649:  +6  ^     ^    (*FAIL)
 8650:  +6  ^    ^     (*FAIL)
 8651:  +6  ^   ^      (*FAIL)
 8652:  +4  ^ ^        c+
 8653:  +2  ^^         b?
 8654:  +4  ^^         c+
 8655:  +0   ^         a+
 8656:  +2   ^^        b?
 8657:  +4   ^ ^       c+
 8658:  +6   ^    ^    (*FAIL)
 8659:  +6   ^   ^     (*FAIL)
 8660:  +6   ^  ^      (*FAIL)
 8661:  +4   ^^        c+
 8662: No match
 8663: 
 8664: /a+b?(*PRUNE)c+(*FAIL)/C
 8665:     aaabccc
 8666: --->aaabccc
 8667:  +0 ^           a+
 8668:  +2 ^  ^        b?
 8669:  +4 ^   ^       (*PRUNE)
 8670: +12 ^   ^       c+
 8671: +14 ^      ^    (*FAIL)
 8672: +14 ^     ^     (*FAIL)
 8673: +14 ^    ^      (*FAIL)
 8674:  +0  ^          a+
 8675:  +2  ^ ^        b?
 8676:  +4  ^  ^       (*PRUNE)
 8677: +12  ^  ^       c+
 8678: +14  ^     ^    (*FAIL)
 8679: +14  ^    ^     (*FAIL)
 8680: +14  ^   ^      (*FAIL)
 8681:  +0   ^         a+
 8682:  +2   ^^        b?
 8683:  +4   ^ ^       (*PRUNE)
 8684: +12   ^ ^       c+
 8685: +14   ^    ^    (*FAIL)
 8686: +14   ^   ^     (*FAIL)
 8687: +14   ^  ^      (*FAIL)
 8688: No match
 8689: 
 8690: /a+b?(*COMMIT)c+(*FAIL)/C
 8691:     aaabccc
 8692: --->aaabccc
 8693:  +0 ^           a+
 8694:  +2 ^  ^        b?
 8695:  +4 ^   ^       (*COMMIT)
 8696: +13 ^   ^       c+
 8697: +15 ^      ^    (*FAIL)
 8698: +15 ^     ^     (*FAIL)
 8699: +15 ^    ^      (*FAIL)
 8700: No match
 8701:     
 8702: /a+b?(*SKIP)c+(*FAIL)/C
 8703:     aaabcccaaabccc
 8704: --->aaabcccaaabccc
 8705:  +0 ^                  a+
 8706:  +2 ^  ^               b?
 8707:  +4 ^   ^              (*SKIP)
 8708: +11 ^   ^              c+
 8709: +13 ^      ^           (*FAIL)
 8710: +13 ^     ^            (*FAIL)
 8711: +13 ^    ^             (*FAIL)
 8712:  +0        ^           a+
 8713:  +2        ^  ^        b?
 8714:  +4        ^   ^       (*SKIP)
 8715: +11        ^   ^       c+
 8716: +13        ^      ^    (*FAIL)
 8717: +13        ^     ^     (*FAIL)
 8718: +13        ^    ^      (*FAIL)
 8719: No match
 8720: 
 8721: /a+b?(*THEN)c+(*FAIL)/C
 8722:     aaabccc
 8723: --->aaabccc
 8724:  +0 ^           a+
 8725:  +2 ^  ^        b?
 8726:  +4 ^   ^       (*THEN)
 8727: +11 ^   ^       c+
 8728: +13 ^      ^    (*FAIL)
 8729: +13 ^     ^     (*FAIL)
 8730: +13 ^    ^      (*FAIL)
 8731:  +0  ^          a+
 8732:  +2  ^ ^        b?
 8733:  +4  ^  ^       (*THEN)
 8734: +11  ^  ^       c+
 8735: +13  ^     ^    (*FAIL)
 8736: +13  ^    ^     (*FAIL)
 8737: +13  ^   ^      (*FAIL)
 8738:  +0   ^         a+
 8739:  +2   ^^        b?
 8740:  +4   ^ ^       (*THEN)
 8741: +11   ^ ^       c+
 8742: +13   ^    ^    (*FAIL)
 8743: +13   ^   ^     (*FAIL)
 8744: +13   ^  ^      (*FAIL)
 8745: No match
 8746:     
 8747: /a(*MARK)b/ 
 8748: Failed: (*MARK) must have an argument at offset 7
 8749: 
 8750: /(?i:A{1,}\6666666666)/
 8751: Failed: number is too big at offset 19
 8752: 
 8753: /\g6666666666/
 8754: Failed: number is too big at offset 11
 8755: 
 8756: /[\g6666666666]/BZ
 8757: ------------------------------------------------------------------
 8758:         Bra
 8759:         [6g]
 8760:         Ket
 8761:         End
 8762: ------------------------------------------------------------------
 8763: 
 8764: /(?1)\c[/
 8765: Failed: reference to non-existent subpattern at offset 3
 8766: 
 8767: /.+A/<crlf>
 8768:     \r\nA
 8769: No match
 8770:     
 8771: /\nA/<crlf>
 8772:     \r\nA 
 8773:  0: \x0aA
 8774: 
 8775: /[\r\n]A/<crlf>
 8776:     \r\nA 
 8777:  0: \x0aA
 8778: 
 8779: /(\r|\n)A/<crlf>
 8780:     \r\nA 
 8781:  0: \x0aA
 8782:  1: \x0a
 8783: 
 8784: /a(*CR)b/
 8785: Failed: (*VERB) not recognized at offset 5
 8786: 
 8787: /(*CR)a.b/
 8788:     a\nb
 8789:  0: a\x0ab
 8790:     ** Failers
 8791: No match
 8792:     a\rb  
 8793: No match
 8794: 
 8795: /(*CR)a.b/<lf>
 8796:     a\nb
 8797:  0: a\x0ab
 8798:     ** Failers
 8799: No match
 8800:     a\rb  
 8801: No match
 8802: 
 8803: /(*LF)a.b/<CRLF>
 8804:     a\rb
 8805:  0: a\x0db
 8806:     ** Failers
 8807: No match
 8808:     a\nb  
 8809: No match
 8810: 
 8811: /(*CRLF)a.b/
 8812:     a\rb
 8813:  0: a\x0db
 8814:     a\nb  
 8815:  0: a\x0ab
 8816:     ** Failers
 8817: No match
 8818:     a\r\nb  
 8819: No match
 8820: 
 8821: /(*ANYCRLF)a.b/<CR>
 8822:     ** Failers
 8823: No match
 8824:     a\rb
 8825: No match
 8826:     a\nb  
 8827: No match
 8828:     a\r\nb  
 8829: No match
 8830: 
 8831: /(*ANY)a.b/<cr>
 8832:     ** Failers
 8833: No match
 8834:     a\rb
 8835: No match
 8836:     a\nb  
 8837: No match
 8838:     a\r\nb  
 8839: No match
 8840:     a\x85b 
 8841: No match
 8842:     
 8843: /(*ANY).*/g
 8844:     abc\r\ndef
 8845:  0: abc
 8846:  0: 
 8847:  0: def
 8848:  0: 
 8849: 
 8850: /(*ANYCRLF).*/g
 8851:     abc\r\ndef
 8852:  0: abc
 8853:  0: 
 8854:  0: def
 8855:  0: 
 8856: 
 8857: /(*CRLF).*/g
 8858:     abc\r\ndef
 8859:  0: abc
 8860:  0: 
 8861:  0: def
 8862:  0: 
 8863: 
 8864: /a\Rb/I<bsr_anycrlf>
 8865: Capturing subpattern count = 0
 8866: Options: bsr_anycrlf
 8867: First char = 'a'
 8868: Need char = 'b'
 8869:     a\rb
 8870:  0: a\x0db
 8871:     a\nb
 8872:  0: a\x0ab
 8873:     a\r\nb
 8874:  0: a\x0d\x0ab
 8875:     ** Failers
 8876: No match
 8877:     a\x85b
 8878: No match
 8879:     a\x0bb     
 8880: No match
 8881: 
 8882: /a\Rb/I<bsr_unicode>
 8883: Capturing subpattern count = 0
 8884: Options: bsr_unicode
 8885: First char = 'a'
 8886: Need char = 'b'
 8887:     a\rb
 8888:  0: a\x0db
 8889:     a\nb
 8890:  0: a\x0ab
 8891:     a\r\nb
 8892:  0: a\x0d\x0ab
 8893:     a\x85b
 8894:  0: a\x85b
 8895:     a\x0bb     
 8896:  0: a\x0bb
 8897:     ** Failers 
 8898: No match
 8899:     a\x85b\<bsr_anycrlf>
 8900: No match
 8901:     a\x0bb\<bsr_anycrlf>
 8902: No match
 8903:     
 8904: /a\R?b/I<bsr_anycrlf>
 8905: Capturing subpattern count = 0
 8906: Options: bsr_anycrlf
 8907: First char = 'a'
 8908: Need char = 'b'
 8909:     a\rb
 8910:  0: a\x0db
 8911:     a\nb
 8912:  0: a\x0ab
 8913:     a\r\nb
 8914:  0: a\x0d\x0ab
 8915:     ** Failers
 8916: No match
 8917:     a\x85b
 8918: No match
 8919:     a\x0bb     
 8920: No match
 8921: 
 8922: /a\R?b/I<bsr_unicode>
 8923: Capturing subpattern count = 0
 8924: Options: bsr_unicode
 8925: First char = 'a'
 8926: Need char = 'b'
 8927:     a\rb
 8928:  0: a\x0db
 8929:     a\nb
 8930:  0: a\x0ab
 8931:     a\r\nb
 8932:  0: a\x0d\x0ab
 8933:     a\x85b
 8934:  0: a\x85b
 8935:     a\x0bb     
 8936:  0: a\x0bb
 8937:     ** Failers 
 8938: No match
 8939:     a\x85b\<bsr_anycrlf>
 8940: No match
 8941:     a\x0bb\<bsr_anycrlf>
 8942: No match
 8943:     
 8944: /a\R{2,4}b/I<bsr_anycrlf>
 8945: Capturing subpattern count = 0
 8946: Options: bsr_anycrlf
 8947: First char = 'a'
 8948: Need char = 'b'
 8949:     a\r\n\nb
 8950:  0: a\x0d\x0a\x0ab
 8951:     a\n\r\rb
 8952:  0: a\x0a\x0d\x0db
 8953:     a\r\n\r\n\r\n\r\nb
 8954:  0: a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0ab
 8955:     ** Failers
 8956: No match
 8957:     a\x85\85b
 8958: No match
 8959:     a\x0b\0bb     
 8960: No match
 8961: 
 8962: /a\R{2,4}b/I<bsr_unicode>
 8963: Capturing subpattern count = 0
 8964: Options: bsr_unicode
 8965: First char = 'a'
 8966: Need char = 'b'
 8967:     a\r\rb
 8968:  0: a\x0d\x0db
 8969:     a\n\n\nb
 8970:  0: a\x0a\x0a\x0ab
 8971:     a\r\n\n\r\rb
 8972:  0: a\x0d\x0a\x0a\x0d\x0db
 8973:     a\x85\85b
 8974: No match
 8975:     a\x0b\0bb     
 8976: No match
 8977:     ** Failers 
 8978: No match
 8979:     a\r\r\r\r\rb 
 8980: No match
 8981:     a\x85\85b\<bsr_anycrlf>
 8982: No match
 8983:     a\x0b\0bb\<bsr_anycrlf>
 8984: No match
 8985:  
 8986: /(*BSR_ANYCRLF)a\Rb/I
 8987: Capturing subpattern count = 0
 8988: Options: bsr_anycrlf
 8989: First char = 'a'
 8990: Need char = 'b'
 8991:     a\nb
 8992:  0: a\x0ab
 8993:     a\rb 
 8994:  0: a\x0db
 8995: 
 8996: /(*BSR_UNICODE)a\Rb/I
 8997: Capturing subpattern count = 0
 8998: Options: bsr_unicode
 8999: First char = 'a'
 9000: Need char = 'b'
 9001:     a\x85b
 9002:  0: a\x85b
 9003: 
 9004: /(*BSR_ANYCRLF)(*CRLF)a\Rb/I
 9005: Capturing subpattern count = 0
 9006: Options: bsr_anycrlf
 9007: Forced newline sequence: CRLF
 9008: First char = 'a'
 9009: Need char = 'b'
 9010:     a\nb
 9011:  0: a\x0ab
 9012:     a\rb 
 9013:  0: a\x0db
 9014: 
 9015: /(*CRLF)(*BSR_UNICODE)a\Rb/I
 9016: Capturing subpattern count = 0
 9017: Options: bsr_unicode
 9018: Forced newline sequence: CRLF
 9019: First char = 'a'
 9020: Need char = 'b'
 9021:     a\x85b
 9022:  0: a\x85b
 9023: 
 9024: /(*CRLF)(*BSR_ANYCRLF)(*CR)ab/I
 9025: Capturing subpattern count = 0
 9026: Options: bsr_anycrlf
 9027: Forced newline sequence: CR
 9028: First char = 'a'
 9029: Need char = 'b'
 9030: 
 9031: /(?<a>)(?&)/
 9032: Failed: subpattern name expected at offset 9
 9033: 
 9034: /(?<abc>)(?&a)/
 9035: Failed: reference to non-existent subpattern at offset 12
 9036: 
 9037: /(?<a>)(?&aaaaaaaaaaaaaaaaaaaaaaa)/
 9038: Failed: reference to non-existent subpattern at offset 32
 9039: 
 9040: /(?+-a)/
 9041: Failed: digit expected after (?+ at offset 3
 9042: 
 9043: /(?-+a)/
 9044: Failed: unrecognized character after (? or (?- at offset 3
 9045: 
 9046: /(?(-1))/
 9047: Failed: reference to non-existent subpattern at offset 6
 9048: 
 9049: /(?(+10))/
 9050: Failed: reference to non-existent subpattern at offset 7
 9051: 
 9052: /(?(10))/
 9053: Failed: reference to non-existent subpattern at offset 6
 9054: 
 9055: /(?(+2))()()/
 9056: 
 9057: /(?(2))()()/
 9058: 
 9059: /\k''/
 9060: Failed: subpattern name expected at offset 3
 9061: 
 9062: /\k<>/
 9063: Failed: subpattern name expected at offset 3
 9064: 
 9065: /\k{}/
 9066: Failed: subpattern name expected at offset 3
 9067: 
 9068: /\k/
 9069: Failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 2
 9070: 
 9071: /\kabc/
 9072: Failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 5
 9073: 
 9074: /(?P=)/
 9075: Failed: subpattern name expected at offset 4
 9076: 
 9077: /(?P>)/
 9078: Failed: subpattern name expected at offset 4
 9079: 
 9080: /(?!\w)(?R)/
 9081: Failed: recursive call could loop indefinitely at offset 9
 9082: 
 9083: /(?=\w)(?R)/
 9084: Failed: recursive call could loop indefinitely at offset 9
 9085: 
 9086: /(?<!\w)(?R)/
 9087: Failed: recursive call could loop indefinitely at offset 10
 9088: 
 9089: /(?<=\w)(?R)/
 9090: Failed: recursive call could loop indefinitely at offset 10
 9091: 
 9092: /[[:foo:]]/
 9093: Failed: unknown POSIX class name at offset 3
 9094: 
 9095: /[[:1234:]]/
 9096: Failed: unknown POSIX class name at offset 3
 9097: 
 9098: /[[:f\oo:]]/
 9099: Failed: unknown POSIX class name at offset 3
 9100: 
 9101: /[[: :]]/
 9102: Failed: unknown POSIX class name at offset 3
 9103: 
 9104: /[[:...:]]/
 9105: Failed: unknown POSIX class name at offset 3
 9106: 
 9107: /[[:l\ower:]]/
 9108: Failed: unknown POSIX class name at offset 3
 9109: 
 9110: /[[:abc\:]]/
 9111: Failed: unknown POSIX class name at offset 3
 9112: 
 9113: /[abc[:x\]pqr:]]/
 9114: Failed: unknown POSIX class name at offset 6
 9115: 
 9116: /[[:a\dz:]]/
 9117: Failed: unknown POSIX class name at offset 3
 9118: 
 9119: /(^(a|b\g<-1'c))/
 9120: Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 15
 9121: 
 9122: /^(?+1)(?<a>x|y){0}z/
 9123:     xzxx
 9124:  0: xz
 9125:     yzyy 
 9126:  0: yz
 9127:     ** Failers
 9128: No match
 9129:     xxz  
 9130: No match
 9131: 
 9132: /(\3)(\1)(a)/
 9133:     cat
 9134: No match
 9135: 
 9136: /(\3)(\1)(a)/<JS>
 9137:     cat
 9138:  0: a
 9139:  1: 
 9140:  2: 
 9141:  3: a
 9142:     
 9143: /TA]/
 9144:     The ACTA] comes 
 9145:  0: TA]
 9146: 
 9147: /TA]/<JS>
 9148: Failed: ] is an invalid data character in JavaScript compatibility mode at offset 2
 9149: 
 9150: /(?2)[]a()b](abc)/
 9151: Failed: reference to non-existent subpattern at offset 3
 9152: 
 9153: /(?2)[^]a()b](abc)/
 9154: Failed: reference to non-existent subpattern at offset 3
 9155: 
 9156: /(?1)[]a()b](abc)/
 9157:     abcbabc
 9158:  0: abcbabc
 9159:  1: abc
 9160:     ** Failers 
 9161: No match
 9162:     abcXabc
 9163: No match
 9164: 
 9165: /(?1)[^]a()b](abc)/
 9166:     abcXabc
 9167:  0: abcXabc
 9168:  1: abc
 9169:     ** Failers 
 9170: No match
 9171:     abcbabc
 9172: No match
 9173: 
 9174: /(?2)[]a()b](abc)(xyz)/
 9175:     xyzbabcxyz
 9176:  0: xyzbabcxyz
 9177:  1: abc
 9178:  2: xyz
 9179: 
 9180: /(?&N)[]a(?<N>)](?<M>abc)/
 9181: Failed: reference to non-existent subpattern at offset 4
 9182: 
 9183: /(?&N)[]a(?<N>)](abc)/
 9184: Failed: reference to non-existent subpattern at offset 4
 9185: 
 9186: /a[]b/
 9187: Failed: missing terminating ] for character class at offset 4
 9188: 
 9189: /a[^]b/
 9190: Failed: missing terminating ] for character class at offset 5
 9191: 
 9192: /a[]b/<JS>
 9193:     ** Failers
 9194: No match
 9195:     ab
 9196: No match
 9197: 
 9198: /a[]+b/<JS>
 9199:     ** Failers
 9200: No match
 9201:     ab 
 9202: No match
 9203: 
 9204: /a[]*+b/<JS>
 9205:     ** Failers
 9206: No match
 9207:     ab 
 9208: No match
 9209: 
 9210: /a[^]b/<JS>
 9211:     aXb
 9212:  0: aXb
 9213:     a\nb 
 9214:  0: a\x0ab
 9215:     ** Failers
 9216: No match
 9217:     ab  
 9218: No match
 9219:     
 9220: /a[^]+b/<JS> 
 9221:     aXb
 9222:  0: aXb
 9223:     a\nX\nXb 
 9224:  0: a\x0aX\x0aXb
 9225:     ** Failers
 9226: No match
 9227:     ab  
 9228: No match
 9229: 
 9230: /a(?!)+b/
 9231: Failed: nothing to repeat at offset 5
 9232: 
 9233: /a(*FAIL)+b/
 9234: Failed: nothing to repeat at offset 8
 9235: 
 9236: /(abc|pqr|123){0}[xyz]/SI
 9237: Capturing subpattern count = 1
 9238: No options
 9239: No first char
 9240: No need char
 9241: Subject length lower bound = 1
 9242: Starting byte set: x y z 
 9243: 
 9244: /(?(?=.*b)b|^)/CI
 9245: Capturing subpattern count = 0
 9246: Options:
 9247: No first char
 9248: No need char
 9249:    adc
 9250: --->adc
 9251:  +0 ^       (?(?=.*b)b|^)
 9252:  +2 ^       (?=.*b)
 9253:  +5 ^       .*
 9254:  +7 ^  ^    b
 9255:  +7 ^ ^     b
 9256:  +7 ^^      b
 9257:  +7 ^       b
 9258: +12 ^       )
 9259: +13 ^       
 9260:  0: 
 9261:    abc 
 9262: --->abc
 9263:  +0 ^       (?(?=.*b)b|^)
 9264:  +2 ^       (?=.*b)
 9265:  +5 ^       .*
 9266:  +7 ^  ^    b
 9267:  +7 ^ ^     b
 9268:  +7 ^^      b
 9269:  +8 ^ ^     )
 9270:  +9 ^       b
 9271:  +0  ^      (?(?=.*b)b|^)
 9272:  +2  ^      (?=.*b)
 9273:  +5  ^      .*
 9274:  +7  ^ ^    b
 9275:  +7  ^^     b
 9276:  +7  ^      b
 9277:  +8  ^^     )
 9278:  +9  ^      b
 9279: +10  ^^     |
 9280: +13  ^^     
 9281:  0: b
 9282:    
 9283: /(?(?=b).*b|^d)/I
 9284: Capturing subpattern count = 0
 9285: No options
 9286: No first char
 9287: No need char
 9288: 
 9289: /(?(?=.*b).*b|^d)/I
 9290: Capturing subpattern count = 0
 9291: No options
 9292: First char at start or follows newline
 9293: No need char
 9294: 
 9295: /xyz/C
 9296:   xyz 
 9297: --->xyz
 9298:  +0 ^       x
 9299:  +1 ^^      y
 9300:  +2 ^ ^     z
 9301:  +3 ^  ^    
 9302:  0: xyz
 9303:   abcxyz 
 9304: --->abcxyz
 9305:  +0    ^       x
 9306:  +1    ^^      y
 9307:  +2    ^ ^     z
 9308:  +3    ^  ^    
 9309:  0: xyz
 9310:   abcxyz\Y
 9311: --->abcxyz
 9312:  +0 ^          x
 9313:  +0  ^         x
 9314:  +0   ^        x
 9315:  +0    ^       x
 9316:  +1    ^^      y
 9317:  +2    ^ ^     z
 9318:  +3    ^  ^    
 9319:  0: xyz
 9320:   ** Failers 
 9321: No match
 9322:   abc
 9323: No match
 9324:   abc\Y
 9325: --->abc
 9326:  +0 ^       x
 9327:  +0  ^      x
 9328:  +0   ^     x
 9329:  +0    ^    x
 9330: No match
 9331:   abcxypqr  
 9332: No match
 9333:   abcxypqr\Y  
 9334: --->abcxypqr
 9335:  +0 ^            x
 9336:  +0  ^           x
 9337:  +0   ^          x
 9338:  +0    ^         x
 9339:  +1    ^^        y
 9340:  +2    ^ ^       z
 9341:  +0     ^        x
 9342:  +0      ^       x
 9343:  +0       ^      x
 9344:  +0        ^     x
 9345:  +0         ^    x
 9346: No match
 9347:   
 9348: /(*NO_START_OPT)xyz/C
 9349:   abcxyz 
 9350: --->abcxyz
 9351: +15 ^          x
 9352: +15  ^         x
 9353: +15   ^        x
 9354: +15    ^       x
 9355: +16    ^^      y
 9356: +17    ^ ^     z
 9357: +18    ^  ^    
 9358:  0: xyz
 9359: 
 9360: /xyz/CY
 9361:   abcxyz 
 9362: --->abcxyz
 9363:  +0 ^          x
 9364:  +0  ^         x
 9365:  +0   ^        x
 9366:  +0    ^       x
 9367:  +1    ^^      y
 9368:  +2    ^ ^     z
 9369:  +3    ^  ^    
 9370:  0: xyz
 9371: 
 9372: /^"((?(?=[a])[^"])|b)*"$/C
 9373:     "ab"
 9374: --->"ab"
 9375:  +0 ^        ^
 9376:  +1 ^        "
 9377:  +2 ^^       ((?(?=[a])[^"])|b)*
 9378:  +3 ^^       (?(?=[a])[^"])
 9379:  +5 ^^       (?=[a])
 9380:  +8 ^^       [a]
 9381: +11 ^ ^      )
 9382: +12 ^^       [^"]
 9383: +16 ^ ^      )
 9384: +17 ^ ^      |
 9385:  +3 ^ ^      (?(?=[a])[^"])
 9386:  +5 ^ ^      (?=[a])
 9387:  +8 ^ ^      [a]
 9388: +21 ^ ^      "
 9389: +18 ^ ^      b
 9390: +19 ^  ^     )
 9391:  +3 ^  ^     (?(?=[a])[^"])
 9392:  +5 ^  ^     (?=[a])
 9393:  +8 ^  ^     [a]
 9394: +21 ^  ^     "
 9395: +22 ^   ^    $
 9396: +23 ^   ^    
 9397:  0: "ab"
 9398:  1: 
 9399: 
 9400: /^"((?(?=[a])[^"])|b)*"$/
 9401:     "ab"
 9402:  0: "ab"
 9403:  1: 
 9404: 
 9405: /^X(?5)(a)(?|(b)|(q))(c)(d)Y/
 9406: Failed: reference to non-existent subpattern at offset 5
 9407: 
 9408: /^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/
 9409:     XYabcdY
 9410:  0: XYabcdY
 9411:  1: a
 9412:  2: b
 9413:  3: c
 9414:  4: d
 9415:  5: Y
 9416:  
 9417: /Xa{2,4}b/
 9418:     X\P
 9419: Partial match: X
 9420:     Xa\P
 9421: Partial match: Xa
 9422:     Xaa\P 
 9423: Partial match: Xaa
 9424:     Xaaa\P
 9425: Partial match: Xaaa
 9426:     Xaaaa\P 
 9427: Partial match: Xaaaa
 9428:     
 9429: /Xa{2,4}?b/
 9430:     X\P
 9431: Partial match: X
 9432:     Xa\P
 9433: Partial match: Xa
 9434:     Xaa\P 
 9435: Partial match: Xaa
 9436:     Xaaa\P
 9437: Partial match: Xaaa
 9438:     Xaaaa\P 
 9439: Partial match: Xaaaa
 9440:     
 9441: /Xa{2,4}+b/
 9442:     X\P
 9443: Partial match: X
 9444:     Xa\P
 9445: Partial match: Xa
 9446:     Xaa\P 
 9447: Partial match: Xaa
 9448:     Xaaa\P
 9449: Partial match: Xaaa
 9450:     Xaaaa\P 
 9451: Partial match: Xaaaa
 9452:     
 9453: /X\d{2,4}b/
 9454:     X\P
 9455: Partial match: X
 9456:     X3\P
 9457: Partial match: X3
 9458:     X33\P 
 9459: Partial match: X33
 9460:     X333\P
 9461: Partial match: X333
 9462:     X3333\P 
 9463: Partial match: X3333
 9464:     
 9465: /X\d{2,4}?b/
 9466:     X\P
 9467: Partial match: X
 9468:     X3\P
 9469: Partial match: X3
 9470:     X33\P 
 9471: Partial match: X33
 9472:     X333\P
 9473: Partial match: X333
 9474:     X3333\P 
 9475: Partial match: X3333
 9476:     
 9477: /X\d{2,4}+b/
 9478:     X\P
 9479: Partial match: X
 9480:     X3\P
 9481: Partial match: X3
 9482:     X33\P 
 9483: Partial match: X33
 9484:     X333\P
 9485: Partial match: X333
 9486:     X3333\P 
 9487: Partial match: X3333
 9488:     
 9489: /X\D{2,4}b/
 9490:     X\P
 9491: Partial match: X
 9492:     Xa\P
 9493: Partial match: Xa
 9494:     Xaa\P 
 9495: Partial match: Xaa
 9496:     Xaaa\P
 9497: Partial match: Xaaa
 9498:     Xaaaa\P 
 9499: Partial match: Xaaaa
 9500:     
 9501: /X\D{2,4}?b/
 9502:     X\P
 9503: Partial match: X
 9504:     Xa\P
 9505: Partial match: Xa
 9506:     Xaa\P 
 9507: Partial match: Xaa
 9508:     Xaaa\P
 9509: Partial match: Xaaa
 9510:     Xaaaa\P 
 9511: Partial match: Xaaaa
 9512:     
 9513: /X\D{2,4}+b/
 9514:     X\P
 9515: Partial match: X
 9516:     Xa\P
 9517: Partial match: Xa
 9518:     Xaa\P 
 9519: Partial match: Xaa
 9520:     Xaaa\P
 9521: Partial match: Xaaa
 9522:     Xaaaa\P 
 9523: Partial match: Xaaaa
 9524:     
 9525: /X[abc]{2,4}b/
 9526:     X\P
 9527: Partial match: X
 9528:     Xa\P
 9529: Partial match: Xa
 9530:     Xaa\P 
 9531: Partial match: Xaa
 9532:     Xaaa\P
 9533: Partial match: Xaaa
 9534:     Xaaaa\P 
 9535: Partial match: Xaaaa
 9536:     
 9537: /X[abc]{2,4}?b/
 9538:     X\P
 9539: Partial match: X
 9540:     Xa\P
 9541: Partial match: Xa
 9542:     Xaa\P 
 9543: Partial match: Xaa
 9544:     Xaaa\P
 9545: Partial match: Xaaa
 9546:     Xaaaa\P 
 9547: Partial match: Xaaaa
 9548:     
 9549: /X[abc]{2,4}+b/
 9550:     X\P
 9551: Partial match: X
 9552:     Xa\P
 9553: Partial match: Xa
 9554:     Xaa\P 
 9555: Partial match: Xaa
 9556:     Xaaa\P
 9557: Partial match: Xaaa
 9558:     Xaaaa\P 
 9559: Partial match: Xaaaa
 9560:     
 9561: /X[^a]{2,4}b/
 9562:     X\P
 9563: Partial match: X
 9564:     Xz\P
 9565: Partial match: Xz
 9566:     Xzz\P 
 9567: Partial match: Xzz
 9568:     Xzzz\P
 9569: Partial match: Xzzz
 9570:     Xzzzz\P 
 9571: Partial match: Xzzzz
 9572:     
 9573: /X[^a]{2,4}?b/
 9574:     X\P
 9575: Partial match: X
 9576:     Xz\P
 9577: Partial match: Xz
 9578:     Xzz\P 
 9579: Partial match: Xzz
 9580:     Xzzz\P
 9581: Partial match: Xzzz
 9582:     Xzzzz\P 
 9583: Partial match: Xzzzz
 9584:     
 9585: /X[^a]{2,4}+b/
 9586:     X\P
 9587: Partial match: X
 9588:     Xz\P
 9589: Partial match: Xz
 9590:     Xzz\P 
 9591: Partial match: Xzz
 9592:     Xzzz\P
 9593: Partial match: Xzzz
 9594:     Xzzzz\P 
 9595: Partial match: Xzzzz
 9596:     
 9597: /(Y)X\1{2,4}b/
 9598:     YX\P
 9599: Partial match: YX
 9600:     YXY\P
 9601: Partial match: YXY
 9602:     YXYY\P 
 9603: Partial match: YXYY
 9604:     YXYYY\P
 9605: Partial match: YXYYY
 9606:     YXYYYY\P 
 9607: Partial match: YXYYYY
 9608:     
 9609: /(Y)X\1{2,4}?b/
 9610:     YX\P
 9611: Partial match: YX
 9612:     YXY\P
 9613: Partial match: YXY
 9614:     YXYY\P 
 9615: Partial match: YXYY
 9616:     YXYYY\P
 9617: Partial match: YXYYY
 9618:     YXYYYY\P 
 9619: Partial match: YXYYYY
 9620:     
 9621: /(Y)X\1{2,4}+b/
 9622:     YX\P
 9623: Partial match: YX
 9624:     YXY\P
 9625: Partial match: YXY
 9626:     YXYY\P 
 9627: Partial match: YXYY
 9628:     YXYYY\P
 9629: Partial match: YXYYY
 9630:     YXYYYY\P 
 9631: Partial match: YXYYYY
 9632:     
 9633: /\++\KZ|\d+X|9+Y/
 9634:     ++++123999\P
 9635: Partial match: 123999
 9636:     ++++123999Y\P
 9637:  0: 999Y
 9638:     ++++Z1234\P 
 9639:  0: Z
 9640: 
 9641: /Z(*F)/
 9642:     Z\P
 9643: No match
 9644:     ZA\P 
 9645: No match
 9646:     
 9647: /Z(?!)/
 9648:     Z\P 
 9649: No match
 9650:     ZA\P 
 9651: No match
 9652: 
 9653: /dog(sbody)?/
 9654:     dogs\P
 9655:  0: dog
 9656:     dogs\P\P 
 9657: Partial match: dogs
 9658:     
 9659: /dog(sbody)??/
 9660:     dogs\P
 9661:  0: dog
 9662:     dogs\P\P 
 9663:  0: dog
 9664: 
 9665: /dog|dogsbody/
 9666:     dogs\P
 9667:  0: dog
 9668:     dogs\P\P 
 9669:  0: dog
 9670:  
 9671: /dogsbody|dog/
 9672:     dogs\P
 9673:  0: dog
 9674:     dogs\P\P 
 9675: Partial match: dogs
 9676: 
 9677: /\bthe cat\b/
 9678:     the cat\P
 9679:  0: the cat
 9680:     the cat\P\P
 9681: Partial match: the cat
 9682: 
 9683: /abc/
 9684:    abc\P
 9685:  0: abc
 9686:    abc\P\P
 9687:  0: abc
 9688:    
 9689: /abc\K123/
 9690:     xyzabc123pqr
 9691:  0: 123
 9692:     xyzabc12\P
 9693: Partial match: abc12
 9694:     xyzabc12\P\P
 9695: Partial match: abc12
 9696:     
 9697: /(?<=abc)123/
 9698:     xyzabc123pqr 
 9699:  0: 123
 9700:     xyzabc12\P
 9701: Partial match: abc12
 9702:     xyzabc12\P\P
 9703: Partial match: abc12
 9704: 
 9705: /\babc\b/
 9706:     +++abc+++
 9707:  0: abc
 9708:     +++ab\P
 9709: Partial match: +ab
 9710:     +++ab\P\P  
 9711: Partial match: +ab
 9712: 
 9713: /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
 9714: ------------------------------------------------------------------
 9715:         Bra
 9716:         Recurse
 9717:         Recurse
 9718:         Cond
 9719:         Cond def
 9720:         CBra 1
 9721:         <
 9722:         [^m]
 9723:         [^>]
 9724:         >
 9725:         [^<]
 9726:         Ket
 9727:         CBra 2
 9728:         \w*+
 9729:         Ket
 9730:         Ket
 9731:         Ket
 9732:         End
 9733: ------------------------------------------------------------------
 9734: 
 9735: /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ
 9736: ------------------------------------------------------------------
 9737:         Bra
 9738:         Recurse
 9739:         Recurse
 9740:         Cond
 9741:         Cond def
 9742:         CBra 1
 9743:         <
 9744:         [\x00-/:-\xff] (neg)
 9745:         [^>]
 9746:         >
 9747:         [^<]
 9748:         Ket
 9749:         CBra 2
 9750:         \w*+
 9751:         Ket
 9752:         Ket
 9753:         Ket
 9754:         End
 9755: ------------------------------------------------------------------
 9756: 
 9757: /(ab)(x(y)z(cd(*ACCEPT)))pq/BZ
 9758: ------------------------------------------------------------------
 9759:         Bra
 9760:         CBra 1
 9761:         ab
 9762:         Ket
 9763:         CBra 2
 9764:         x
 9765:         CBra 3
 9766:         y
 9767:         Ket
 9768:         z
 9769:         CBra 4
 9770:         cd
 9771:         Close 4
 9772:         Close 2
 9773:         *ACCEPT
 9774:         Ket
 9775:         Ket
 9776:         pq
 9777:         Ket
 9778:         End
 9779: ------------------------------------------------------------------
 9780: 
 9781: /abc\K/+
 9782:     abcdef
 9783:  0: 
 9784:  0+ def
 9785:     abcdef\N\N
 9786:  0: 
 9787:  0+ def
 9788:     xyzabcdef\N\N
 9789:  0: 
 9790:  0+ def
 9791:     ** Failers
 9792: No match
 9793:     abcdef\N 
 9794: No match
 9795:     xyzabcdef\N
 9796: No match
 9797:     
 9798: /^(?:(?=abc)|abc\K)/+
 9799:     abcdef
 9800:  0: 
 9801:  0+ abcdef
 9802:     abcdef\N\N 
 9803:  0: 
 9804:  0+ def
 9805:     ** Failers 
 9806: No match
 9807:     abcdef\N 
 9808: No match
 9809: 
 9810: /a?b?/+
 9811:     xyz
 9812:  0: 
 9813:  0+ xyz
 9814:     xyzabc
 9815:  0: 
 9816:  0+ xyzabc
 9817:     xyzabc\N
 9818:  0: ab
 9819:  0+ c
 9820:     xyzabc\N\N
 9821:  0: 
 9822:  0+ yzabc
 9823:     xyz\N\N    
 9824:  0: 
 9825:  0+ yz
 9826:     ** Failers 
 9827:  0: 
 9828:  0+ ** Failers
 9829:     xyz\N 
 9830: No match
 9831: 
 9832: /^a?b?/+
 9833:     xyz
 9834:  0: 
 9835:  0+ xyz
 9836:     xyzabc
 9837:  0: 
 9838:  0+ xyzabc
 9839:     ** Failers 
 9840:  0: 
 9841:  0+ ** Failers
 9842:     xyzabc\N
 9843: No match
 9844:     xyzabc\N\N
 9845: No match
 9846:     xyz\N\N    
 9847: No match
 9848:     xyz\N 
 9849: No match
 9850:     
 9851: /^(?<name>a|b\g<name>c)/
 9852:     aaaa
 9853:  0: a
 9854:  1: a
 9855:     bacxxx
 9856:  0: bac
 9857:  1: bac
 9858:     bbaccxxx 
 9859:  0: bbacc
 9860:  1: bbacc
 9861:     bbbacccxx
 9862:  0: bbbaccc
 9863:  1: bbbaccc
 9864: 
 9865: /^(?<name>a|b\g'name'c)/
 9866:     aaaa
 9867:  0: a
 9868:  1: a
 9869:     bacxxx
 9870:  0: bac
 9871:  1: bac
 9872:     bbaccxxx 
 9873:  0: bbacc
 9874:  1: bbacc
 9875:     bbbacccxx
 9876:  0: bbbaccc
 9877:  1: bbbaccc
 9878: 
 9879: /^(a|b\g<1>c)/
 9880:     aaaa
 9881:  0: a
 9882:  1: a
 9883:     bacxxx
 9884:  0: bac
 9885:  1: bac
 9886:     bbaccxxx 
 9887:  0: bbacc
 9888:  1: bbacc
 9889:     bbbacccxx
 9890:  0: bbbaccc
 9891:  1: bbbaccc
 9892: 
 9893: /^(a|b\g'1'c)/
 9894:     aaaa
 9895:  0: a
 9896:  1: a
 9897:     bacxxx
 9898:  0: bac
 9899:  1: bac
 9900:     bbaccxxx 
 9901:  0: bbacc
 9902:  1: bbacc
 9903:     bbbacccxx
 9904:  0: bbbaccc
 9905:  1: bbbaccc
 9906: 
 9907: /^(a|b\g'-1'c)/
 9908:     aaaa
 9909:  0: a
 9910:  1: a
 9911:     bacxxx
 9912:  0: bac
 9913:  1: bac
 9914:     bbaccxxx 
 9915:  0: bbacc
 9916:  1: bbacc
 9917:     bbbacccxx
 9918:  0: bbbaccc
 9919:  1: bbbaccc
 9920: 
 9921: /(^(a|b\g<-1>c))/
 9922:     aaaa
 9923:  0: a
 9924:  1: a
 9925:  2: a
 9926:     bacxxx
 9927:  0: bac
 9928:  1: bac
 9929:  2: bac
 9930:     bbaccxxx 
 9931:  0: bbacc
 9932:  1: bbacc
 9933:  2: bbacc
 9934:     bbbacccxx
 9935:  0: bbbaccc
 9936:  1: bbbaccc
 9937:  2: bbbaccc
 9938: 
 9939: /(?-i:\g<name>)(?i:(?<name>a))/
 9940:     XaaX
 9941:  0: aa
 9942:  1: a
 9943:     XAAX 
 9944:  0: AA
 9945:  1: A
 9946: 
 9947: /(?i:\g<name>)(?-i:(?<name>a))/
 9948:     XaaX
 9949:  0: aa
 9950:  1: a
 9951:     ** Failers 
 9952: No match
 9953:     XAAX 
 9954: No match
 9955: 
 9956: /(?-i:\g<+1>)(?i:(a))/
 9957:     XaaX
 9958:  0: aa
 9959:  1: a
 9960:     XAAX 
 9961:  0: AA
 9962:  1: A
 9963: 
 9964: /(?=(?<regex>(?#simplesyntax)\$(?<name>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?<index>[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g<name>)\]|->\g<name>(\(.*?\))?)?|(?#simple syntax withbraces)\$\{(?:\g<name>(?<indices>\[(?:\g<index>|'(?:\\.|[^'\\])*'|"(?:\g<regex>|\\.|[^"\\])*")\])?|\g<complex>|\$\{\g<complex>\})\}|(?#complexsyntax)\{(?<complex>\$(?<segment>\g<name>(\g<indices>*|\(.*?\))?)(?:->\g<segment>)*|\$\g<complex>|\$\{\g<complex>\})\}))\{/
 9965: 
 9966: /(?<n>a|b|c)\g<n>*/
 9967:    abc
 9968:  0: abc
 9969:  1: a
 9970:    accccbbb 
 9971:  0: accccbbb
 9972:  1: a
 9973: 
 9974: /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/
 9975:     XYabcdY
 9976:  0: XYabcdY
 9977:  1: a
 9978:  2: b
 9979:  3: <unset>
 9980:  4: <unset>
 9981:  5: c
 9982:  6: d
 9983:  7: Y
 9984: 
 9985: /(?<=b(?1)|zzz)(a)/
 9986:     xbaax
 9987:  0: a
 9988:  1: a
 9989:     xzzzax 
 9990:  0: a
 9991:  1: a
 9992: 
 9993: /(a)(?<=b\1)/
 9994: Failed: lookbehind assertion is not fixed length at offset 10
 9995: 
 9996: /(a)(?<=b+(?1))/
 9997: Failed: lookbehind assertion is not fixed length at offset 13
 9998: 
 9999: /(a+)(?<=b(?1))/
10000: Failed: lookbehind assertion is not fixed length at offset 14
10001: 
10002: /(a(?<=b(?1)))/
10003: Failed: lookbehind assertion is not fixed length at offset 13
10004: 
10005: /(?<=b(?1))xyz/
10006: Failed: reference to non-existent subpattern at offset 8
10007: 
10008: /(?<=b(?1))xyz(b+)pqrstuvew/
10009: Failed: lookbehind assertion is not fixed length at offset 26
10010: 
10011: /(a|bc)\1/SI
10012: Capturing subpattern count = 1
10013: Max back reference = 1
10014: No options
10015: No first char
10016: No need char
10017: Subject length lower bound = 2
10018: Starting byte set: a b 
10019: 
10020: /(a|bc)\1{2,3}/SI
10021: Capturing subpattern count = 1
10022: Max back reference = 1
10023: No options
10024: No first char
10025: No need char
10026: Subject length lower bound = 3
10027: Starting byte set: a b 
10028: 
10029: /(a|bc)(?1)/SI
10030: Capturing subpattern count = 1
10031: No options
10032: No first char
10033: No need char
10034: Subject length lower bound = 2
10035: Starting byte set: a b 
10036: 
10037: /(a|b\1)(a|b\1)/SI
10038: Capturing subpattern count = 2
10039: Max back reference = 1
10040: No options
10041: No first char
10042: No need char
10043: Subject length lower bound = 2
10044: Starting byte set: a b 
10045: 
10046: /(a|b\1){2}/SI
10047: Capturing subpattern count = 1
10048: Max back reference = 1
10049: No options
10050: No first char
10051: No need char
10052: Subject length lower bound = 2
10053: Starting byte set: a b 
10054: 
10055: /(a|bbbb\1)(a|bbbb\1)/SI
10056: Capturing subpattern count = 2
10057: Max back reference = 1
10058: No options
10059: No first char
10060: No need char
10061: Subject length lower bound = 2
10062: Starting byte set: a b 
10063: 
10064: /(a|bbbb\1){2}/SI
10065: Capturing subpattern count = 1
10066: Max back reference = 1
10067: No options
10068: No first char
10069: No need char
10070: Subject length lower bound = 2
10071: Starting byte set: a b 
10072: 
10073: /^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]/SI
10074: Capturing subpattern count = 1
10075: Options: anchored
10076: No first char
10077: Need char = ':'
10078: Subject length lower bound = 22
10079: No set of starting bytes
10080: 
10081: /<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>/isIS
10082: Capturing subpattern count = 11
10083: Options: caseless dotall
10084: First char = '<'
10085: Need char = '>'
10086: Subject length lower bound = 47
10087: No set of starting bytes
10088: 
10089: "(?>.*/)foo"SI
10090: Capturing subpattern count = 0
10091: No options
10092: First char at start or follows newline
10093: Need char = 'o'
10094: Subject length lower bound = 4
10095: No set of starting bytes
10096: 
10097: /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /xSI
10098: Capturing subpattern count = 0
10099: Options: extended
10100: No first char
10101: Need char = '-'
10102: Subject length lower bound = 8
10103: No set of starting bytes
10104: 
10105: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/iSI
10106: Capturing subpattern count = 1
10107: Options: caseless
10108: No first char
10109: No need char
10110: Subject length lower bound = 1
10111: Starting byte set: A B C a b c 
10112: 
10113: /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/SI
10114: Capturing subpattern count = 0
10115: No options
10116: No first char
10117: Need char = 'b'
10118: Subject length lower bound = 41
10119: Starting byte set: c d 
10120: 
10121: /<a[\s]+href[\s]*=[\s]*          # find <a href=
10122:  ([\"\'])?                       # find single or double quote
10123:  (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
10124:                                  # quote, otherwise match up to next space
10125: /isxSI
10126: Capturing subpattern count = 3
10127: Max back reference = 1
10128: Options: caseless extended dotall
10129: First char = '<'
10130: Need char = '='
10131: Subject length lower bound = 9
10132: No set of starting bytes
10133: 
10134: /^(?!:)                       # colon disallowed at start
10135:   (?:                         # start of item
10136:     (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
10137:     (?(1)0 | () ) )           # if null previously matched, fail; else null
10138:     :                         # followed by colon
10139:   ){1,7}                      # end item; 1-7 of them required               
10140:   [0-9a-f]{1,4} $             # final hex number at end of string
10141:   (?(1)|.)                    # check that there was an empty component
10142:   /xiIS
10143: Capturing subpattern count = 1
10144: Options: anchored caseless extended
10145: No first char
10146: Need char = ':'
10147: Subject length lower bound = 2
10148: No set of starting bytes
10149: 
10150: /(?|(?<a>A)|(?<a>B))/I
10151: Capturing subpattern count = 1
10152: Named capturing subpatterns:
10153:   a   1
10154:   a   1
10155: No options
10156: No first char
10157: No need char
10158:     AB\Ca
10159:  0: A
10160:  1: A
10161:   C A (1) a
10162:     BA\Ca
10163:  0: B
10164:  1: B
10165:   C B (1) a
10166: 
10167: /(?|(?<a>A)|(?<b>B))/ 
10168: Failed: different names for subpatterns of the same number are not allowed at offset 15
10169: 
10170: /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |
10171:     b(?<quote> (?<apostrophe>')|(?<realquote>")) ) 
10172:     (?('quote')[a-z]+|[0-9]+)/JIx
10173: Capturing subpattern count = 6
10174: Named capturing subpatterns:
10175:   apostrophe   2
10176:   apostrophe   5
10177:   quote        1
10178:   quote        4
10179:   realquote    3
10180:   realquote    6
10181: Options: extended dupnames
10182: No first char
10183: No need char
10184:     a"aaaaa
10185:  0: a"aaaaa
10186:  1: "
10187:  2: <unset>
10188:  3: "
10189:     b"aaaaa 
10190:  0: b"aaaaa
10191:  1: <unset>
10192:  2: <unset>
10193:  3: <unset>
10194:  4: "
10195:  5: <unset>
10196:  6: "
10197:     ** Failers 
10198: No match
10199:     b"11111
10200: No match
10201:     a"11111 
10202: No match
10203:     
10204: /^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/JDZx
10205: ------------------------------------------------------------------
10206:         Bra
10207:         ^
10208:         Bra
10209:         CBra 1
10210:         a
10211:         Ket
10212:         CBra 2
10213:         b
10214:         Ket
10215:         CBra 3
10216:         c
10217:         Ket
10218:         CBra 4
10219:         d
10220:         Ket
10221:         Alt
10222:         CBra 1
10223:         e
10224:         Ket
10225:         Ket
10226:         Cond
10227:       4 Cond nref
10228:         X
10229:         Alt
10230:         Y
10231:         Ket
10232:         Ket
10233:         End
10234: ------------------------------------------------------------------
10235: Capturing subpattern count = 4
10236: Named capturing subpatterns:
10237:   D   4
10238:   D   1
10239: Options: anchored extended dupnames
10240: No first char
10241: No need char
10242:     abcdX
10243:  0: abcdX
10244:  1: a
10245:  2: b
10246:  3: c
10247:  4: d
10248:     eX
10249:  0: eX
10250:  1: e
10251:     ** Failers
10252: No match
10253:     abcdY
10254: No match
10255:     ey     
10256: No match
10257:     
10258: /(?<A>a) (b)(c)  (?<A>d  (?(R&A)$ | (?4)) )/JDZx
10259: ------------------------------------------------------------------
10260:         Bra
10261:         CBra 1
10262:         a
10263:         Ket
10264:         CBra 2
10265:         b
10266:         Ket
10267:         CBra 3
10268:         c
10269:         Ket
10270:         CBra 4
10271:         d
10272:         Cond
10273:         Cond nrecurse 1
10274:         $
10275:         Alt
10276:         Recurse
10277:         Ket
10278:         Ket
10279:         Ket
10280:         End
10281: ------------------------------------------------------------------
10282: Capturing subpattern count = 4
10283: Named capturing subpatterns:
10284:   A   1
10285:   A   4
10286: Options: extended dupnames
10287: First char = 'a'
10288: Need char = 'd'
10289:     abcdd
10290:  0: abcdd
10291:  1: a
10292:  2: b
10293:  3: c
10294:  4: dd
10295:     ** Failers
10296: No match
10297:     abcdde  
10298: No match
10299: 
10300: /abcd*/
10301:     xxxxabcd\P
10302:  0: abcd
10303:     xxxxabcd\P\P
10304: Partial match: abcd
10305: 
10306: /abcd*/i
10307:     xxxxabcd\P
10308:  0: abcd
10309:     xxxxabcd\P\P
10310: Partial match: abcd
10311:     XXXXABCD\P
10312:  0: ABCD
10313:     XXXXABCD\P\P
10314: Partial match: ABCD
10315: 
10316: /abc\d*/
10317:     xxxxabc1\P
10318:  0: abc1
10319:     xxxxabc1\P\P
10320: Partial match: abc1
10321: 
10322: /(a)bc\1*/
10323:     xxxxabca\P
10324:  0: abca
10325:  1: a
10326:     xxxxabca\P\P
10327: Partial match: abca
10328: 
10329: /abc[de]*/
10330:     xxxxabcde\P
10331:  0: abcde
10332:     xxxxabcde\P\P
10333: Partial match: abcde
10334: 
10335: /-- This is not in the Perl >= 5.10 test because Perl seems currently to be
10336:     broken and not behaving as specified in that it *does* bumpalong after
10337:     hitting (*COMMIT). --/
10338: 
10339: /(?1)(A(*COMMIT)|B)D/
10340:     ABD
10341:  0: ABD
10342:  1: B
10343:     XABD
10344:  0: ABD
10345:  1: B
10346:     BAD
10347:  0: BAD
10348:  1: A
10349:     ABXABD  
10350:  0: ABD
10351:  1: B
10352:     ** Failers 
10353: No match
10354:     ABX 
10355: No match
10356:     BAXBAD  
10357: No match
10358: 
10359: /(\3)(\1)(a)/<JS>
10360:     cat
10361:  0: a
10362:  1: 
10363:  2: 
10364:  3: a
10365: 
10366: /(\3)(\1)(a)/SI<JS>
10367: Capturing subpattern count = 3
10368: Max back reference = 3
10369: Options:
10370: No first char
10371: Need char = 'a'
10372: Subject length lower bound = 1
10373: No set of starting bytes
10374:     cat
10375:  0: a
10376:  1: 
10377:  2: 
10378:  3: a
10379: 
10380: /(\3)(\1)(a)/SI
10381: Capturing subpattern count = 3
10382: Max back reference = 3
10383: No options
10384: No first char
10385: Need char = 'a'
10386: Subject length lower bound = 3
10387: No set of starting bytes
10388:     cat
10389: No match
10390: 
10391: /i(?(DEFINE)(?<s>a))/SI
10392: Capturing subpattern count = 1
10393: Named capturing subpatterns:
10394:   s   1
10395: No options
10396: First char = 'i'
10397: No need char
10398: Subject length lower bound = 1
10399: No set of starting bytes
10400:     i
10401:  0: i
10402:     
10403: /()i(?(1)a)/SI 
10404: Capturing subpattern count = 1
10405: No options
10406: No first char
10407: Need char = 'i'
10408: Subject length lower bound = 1
10409: Starting byte set: i 
10410:     ia
10411:  0: ia
10412:  1: 
10413: 
10414: /(?i)a(?-i)b|c/BZ
10415: ------------------------------------------------------------------
10416:         Bra
10417:      /i a
10418:         b
10419:         Alt
10420:         c
10421:         Ket
10422:         End
10423: ------------------------------------------------------------------
10424:     XabX
10425:  0: ab
10426:     XAbX
10427:  0: Ab
10428:     CcC 
10429:  0: c
10430:     ** Failers
10431: No match
10432:     XABX   
10433: No match
10434: 
10435: /(?i)a(?s)b|c/BZ
10436: ------------------------------------------------------------------
10437:         Bra
10438:      /i ab
10439:         Alt
10440:      /i c
10441:         Ket
10442:         End
10443: ------------------------------------------------------------------
10444: 
10445: /(?i)a(?s-i)b|c/BZ
10446: ------------------------------------------------------------------
10447:         Bra
10448:      /i a
10449:         b
10450:         Alt
10451:         c
10452:         Ket
10453:         End
10454: ------------------------------------------------------------------
10455: 
10456: /^(ab(c\1)d|x){2}$/BZ
10457: ------------------------------------------------------------------
10458:         Bra
10459:         ^
10460:         Once
10461:         CBra 1
10462:         ab
10463:         CBra 2
10464:         c
10465:         \1
10466:         Ket
10467:         d
10468:         Alt
10469:         x
10470:         Ket
10471:         Ket
10472:         Once
10473:         CBra 1
10474:         ab
10475:         CBra 2
10476:         c
10477:         \1
10478:         Ket
10479:         d
10480:         Alt
10481:         x
10482:         Ket
10483:         Ket
10484:         $
10485:         Ket
10486:         End
10487: ------------------------------------------------------------------
10488:     xabcxd
10489:  0: xabcxd
10490:  1: abcxd
10491:  2: cx
10492:     
10493: /^(?&t)*+(?(DEFINE)(?<t>.))$/BZ
10494: ------------------------------------------------------------------
10495:         Bra
10496:         ^
10497:         Braposzero
10498:         SBraPos
10499:         Recurse
10500:         KetRpos
10501:         Cond
10502:         Cond def
10503:         CBra 1
10504:         Any
10505:         Ket
10506:         Ket
10507:         $
10508:         Ket
10509:         End
10510: ------------------------------------------------------------------
10511: 
10512: /^(?&t)*(?(DEFINE)(?<t>.))$/BZ
10513: ------------------------------------------------------------------
10514:         Bra
10515:         ^
10516:         Brazero
10517:         Once
10518:         Recurse
10519:         KetRmax
10520:         Cond
10521:         Cond def
10522:         CBra 1
10523:         Any
10524:         Ket
10525:         Ket
10526:         $
10527:         Ket
10528:         End
10529: ------------------------------------------------------------------
10530: 
10531: / -- The first four of these are not in the Perl >= 5.10 test because Perl 
10532:      documents that the use of \K in assertions is "not well defined". The
10533:      last is here because Perl gives the match as "b" rather than "ab". I
10534:      believe this to be a Perl bug. --/  
10535:       
10536: /(?=a\Kb)ab/
10537:     ab 
10538:  0: b
10539: 
10540: /(?!a\Kb)ac/
10541:     ac 
10542:  0: ac
10543:     
10544: /^abc(?<=b\Kc)d/
10545:     abcd
10546:  0: cd
10547: 
10548: /^abc(?<!b\Kq)d/
10549:     abcd
10550:  0: abcd
10551: 
10552: /(?>a\Kb)z|(ab)/
10553:     ab 
10554:  0: ab
10555:  1: ab
10556: 
10557: /----------------------/
10558: 
10559: /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
10560: Failed: recursive call could loop indefinitely at offset 31
10561: 
10562: /abc(*MARK:)pqr/
10563: Failed: (*MARK) must have an argument at offset 10
10564: 
10565: /abc(*:)pqr/
10566: Failed: (*MARK) must have an argument at offset 6
10567: 
10568: /abc(*FAIL:123)xyz/
10569: Failed: an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT) at offset 13
10570: 
10571: /--- This should, and does, fail. In Perl, it does not, which I think is a 
10572:      bug because replacing the B in the pattern by (B|D) does make it fail. ---/
10573: 
10574: /A(*COMMIT)B/+K
10575:     ACABX
10576: No match
10577: 
10578: /--- These should be different, but in Perl 5.11 are not, which I think
10579:      is a bug in Perl. ---/
10580: 
10581: /A(*THEN)B|A(*THEN)C/K
10582:     AC
10583:  0: AC
10584: 
10585: /A(*PRUNE)B|A(*PRUNE)C/K
10586:     AC
10587: No match
10588:     
10589: /--- This should fail; the SKIP advances by one, but when we get to AC, the
10590:      PRUNE kills it. Perl behaves differently. ---/ 
10591:     
10592: /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
10593:     AAAC
10594: No match, mark = A
10595: 
10596: /--- Mark names can be duplicated. Perl doesn't give a mark for this one,
10597: though PCRE does. ---/
10598: 
10599: /^A(*:A)B|^X(*:A)Y/K
10600:     ** Failers
10601: No match
10602:     XAQQ
10603: No match, mark = A
10604:     
10605: /--- COMMIT at the start of a pattern should be the same as an anchor. Perl 
10606: optimizations defeat this. So does the PCRE optimization unless we disable it 
10607: with \Y. ---/
10608: 
10609: /(*COMMIT)ABC/
10610:     ABCDEFG
10611:  0: ABC
10612:     ** Failers
10613: No match
10614:     DEFGABC\Y  
10615: No match
10616:     
10617: /^(ab (c+(*THEN)cd) | xyz)/x
10618:     abcccd  
10619: No match
10620: 
10621: /^(ab (c+(*PRUNE)cd) | xyz)/x
10622:     abcccd  
10623: No match
10624: 
10625: /^(ab (c+(*FAIL)cd) | xyz)/x
10626:     abcccd  
10627: No match
10628:     
10629: /--- Perl 5.11 gets some of these wrong ---/ 
10630: 
10631: /(?>.(*ACCEPT))*?5/
10632:     abcde
10633:  0: a
10634: 
10635: /(.(*ACCEPT))*?5/
10636:     abcde
10637:  0: a
10638:  1: a
10639: 
10640: /(.(*ACCEPT))5/
10641:     abcde
10642:  0: a
10643:  1: a
10644: 
10645: /(.(*ACCEPT))*5/
10646:     abcde
10647:  0: a
10648:  1: a
10649: 
10650: /A\NB./BZ
10651: ------------------------------------------------------------------
10652:         Bra
10653:         A
10654:         Any
10655:         B
10656:         Any
10657:         Ket
10658:         End
10659: ------------------------------------------------------------------
10660:     ACBD
10661:  0: ACBD
10662:     *** Failers
10663: No match
10664:     A\nB
10665: No match
10666:     ACB\n   
10667: No match
10668: 
10669: /A\NB./sBZ
10670: ------------------------------------------------------------------
10671:         Bra
10672:         A
10673:         Any
10674:         B
10675:         AllAny
10676:         Ket
10677:         End
10678: ------------------------------------------------------------------
10679:     ACBD
10680:  0: ACBD
10681:     ACB\n 
10682:  0: ACB\x0a
10683:     *** Failers
10684: No match
10685:     A\nB  
10686: No match
10687:   
10688: /A\NB/<crlf>
10689:     A\nB
10690:  0: A\x0aB
10691:     A\rB
10692:  0: A\x0dB
10693:     ** Failers
10694: No match
10695:     A\r\nB    
10696: No match
10697: 
10698: /\R+b/BZ
10699: ------------------------------------------------------------------
10700:         Bra
10701:         \R++
10702:         b
10703:         Ket
10704:         End
10705: ------------------------------------------------------------------
10706: 
10707: /\R+\n/BZ
10708: ------------------------------------------------------------------
10709:         Bra
10710:         \R+
10711:         \x0a
10712:         Ket
10713:         End
10714: ------------------------------------------------------------------
10715: 
10716: /\R+\d/BZ
10717: ------------------------------------------------------------------
10718:         Bra
10719:         \R++
10720:         \d
10721:         Ket
10722:         End
10723: ------------------------------------------------------------------
10724: 
10725: /\d*\R/BZ
10726: ------------------------------------------------------------------
10727:         Bra
10728:         \d*+
10729:         \R
10730:         Ket
10731:         End
10732: ------------------------------------------------------------------
10733: 
10734: /\s*\R/BZ
10735: ------------------------------------------------------------------
10736:         Bra
10737:         \s*+
10738:         \R
10739:         Ket
10740:         End
10741: ------------------------------------------------------------------
10742: 
10743: /-- Perl treats this one differently, not failing the second string. I believe
10744:     that is a bug in Perl. --/
10745: 
10746: /^((abc|abcx)(*THEN)y|abcd)/
10747:     abcd
10748:  0: abcd
10749:  1: abcd
10750:     *** Failers 
10751: No match
10752:     abcxy 
10753: No match
10754: 
10755: /(?<=abc)def/
10756:     abc\P\P
10757: Partial match: abc
10758: 
10759: /abc$/
10760:     abc
10761:  0: abc
10762:     abc\P
10763:  0: abc
10764:     abc\P\P
10765: Partial match: abc
10766: 
10767: /abc$/m
10768:     abc
10769:  0: abc
10770:     abc\n
10771:  0: abc
10772:     abc\P\P
10773: Partial match: abc
10774:     abc\n\P\P 
10775:  0: abc
10776:     abc\P
10777:  0: abc
10778:     abc\n\P
10779:  0: abc
10780: 
10781: /abc\z/
10782:     abc
10783:  0: abc
10784:     abc\P
10785:  0: abc
10786:     abc\P\P
10787: Partial match: abc
10788: 
10789: /abc\Z/
10790:     abc
10791:  0: abc
10792:     abc\P
10793:  0: abc
10794:     abc\P\P
10795: Partial match: abc
10796: 
10797: /abc\b/
10798:     abc
10799:  0: abc
10800:     abc\P
10801:  0: abc
10802:     abc\P\P
10803: Partial match: abc
10804: 
10805: /abc\B/
10806:     abc
10807: No match
10808:     abc\P
10809: Partial match: abc
10810:     abc\P\P
10811: Partial match: abc
10812: 
10813: /.+/
10814:     abc\>0
10815:  0: abc
10816:     abc\>1
10817:  0: bc
10818:     abc\>2
10819:  0: c
10820:     abc\>3
10821: No match
10822:     abc\>4
10823: Error -24 (bad offset value)
10824:     abc\>-4 
10825: Error -24 (bad offset value)
10826: 
10827: /^\cģ/
10828: Failed: \c must be followed by an ASCII character at offset 3
10829: 
10830: /(?P<abn>(?P=abn)xxx)/BZ
10831: ------------------------------------------------------------------
10832:         Bra
10833:         Once
10834:         CBra 1
10835:         \1
10836:         xxx
10837:         Ket
10838:         Ket
10839:         Ket
10840:         End
10841: ------------------------------------------------------------------
10842: 
10843: /(a\1z)/BZ
10844: ------------------------------------------------------------------
10845:         Bra
10846:         Once
10847:         CBra 1
10848:         a
10849:         \1
10850:         z
10851:         Ket
10852:         Ket
10853:         Ket
10854:         End
10855: ------------------------------------------------------------------
10856: 
10857: /(?P<abn>(?P=abn)(?<badstufxxx)/BZ
10858: Failed: syntax error in subpattern name (missing terminator) at offset 29
10859: 
10860: /(?P<abn>(?P=axn)xxx)/BZ
10861: Failed: reference to non-existent subpattern at offset 15
10862: 
10863: /(?P<abn>(?P=axn)xxx)(?<axn>yy)/BZ
10864: ------------------------------------------------------------------
10865:         Bra
10866:         CBra 1
10867:         \2
10868:         xxx
10869:         Ket
10870:         CBra 2
10871:         yy
10872:         Ket
10873:         Ket
10874:         End
10875: ------------------------------------------------------------------
10876: 
10877: /-- These tests are here because Perl gets the first one wrong. --/
10878: 
10879: /(\R*)(.)/s
10880:     \r\n
10881:  0: \x0d
10882:  1: 
10883:  2: \x0d
10884:     \r\r\n\n\r 
10885:  0: \x0d\x0d\x0a\x0a\x0d
10886:  1: \x0d\x0d\x0a\x0a
10887:  2: \x0d
10888:     \r\r\n\n\r\n 
10889:  0: \x0d\x0d\x0a\x0a\x0d
10890:  1: \x0d\x0d\x0a\x0a
10891:  2: \x0d
10892: 
10893: /(\R)*(.)/s
10894:     \r\n
10895:  0: \x0d
10896:  1: <unset>
10897:  2: \x0d
10898:     \r\r\n\n\r 
10899:  0: \x0d\x0d\x0a\x0a\x0d
10900:  1: \x0a
10901:  2: \x0d
10902:     \r\r\n\n\r\n 
10903:  0: \x0d\x0d\x0a\x0a\x0d
10904:  1: \x0a
10905:  2: \x0d
10906: 
10907: /((?>\r\n|\n|\x0b|\f|\r|\x85)*)(.)/s
10908:     \r\n
10909:  0: \x0d
10910:  1: 
10911:  2: \x0d
10912:     \r\r\n\n\r 
10913:  0: \x0d\x0d\x0a\x0a\x0d
10914:  1: \x0d\x0d\x0a\x0a
10915:  2: \x0d
10916:     \r\r\n\n\r\n 
10917:  0: \x0d\x0d\x0a\x0a\x0d
10918:  1: \x0d\x0d\x0a\x0a
10919:  2: \x0d
10920: 
10921: /-- --/
10922: 
10923: /^abc$/BZ
10924: ------------------------------------------------------------------
10925:         Bra
10926:         ^
10927:         abc
10928:         $
10929:         Ket
10930:         End
10931: ------------------------------------------------------------------
10932: 
10933: /^abc$/BZm
10934: ------------------------------------------------------------------
10935:         Bra
10936:      /m ^
10937:         abc
10938:      /m $
10939:         Ket
10940:         End
10941: ------------------------------------------------------------------
10942: 
10943: /^(a)*+(\w)/S
10944:     aaaaX
10945:  0: aaaaX
10946:  1: a
10947:  2: X
10948:     ** Failers 
10949: No match
10950:     aaaa
10951: No match
10952: 
10953: /^(?:a)*+(\w)/S
10954:     aaaaX
10955:  0: aaaaX
10956:  1: X
10957:     ** Failers 
10958: No match
10959:     aaaa
10960: No match
10961: 
10962: /(a)++1234/SDZ
10963: ------------------------------------------------------------------
10964:         Bra
10965:         CBraPos 1
10966:         a
10967:         KetRpos
10968:         1234
10969:         Ket
10970:         End
10971: ------------------------------------------------------------------
10972: Capturing subpattern count = 1
10973: No options
10974: First char = 'a'
10975: Need char = '4'
10976: Subject length lower bound = 5
10977: No set of starting bytes
10978: 
10979: /([abc])++1234/SI
10980: Capturing subpattern count = 1
10981: No options
10982: No first char
10983: Need char = '4'
10984: Subject length lower bound = 5
10985: Starting byte set: a b c 
10986: 
10987: /(?<=(abc)+)X/
10988: Failed: lookbehind assertion is not fixed length at offset 10
10989: 
10990: /(^ab)/I
10991: Capturing subpattern count = 1
10992: Options: anchored
10993: No first char
10994: No need char
10995: 
10996: /(^ab)++/I
10997: Capturing subpattern count = 1
10998: Options: anchored
10999: No first char
11000: No need char
11001: 
11002: /(^ab|^)+/I
11003: Capturing subpattern count = 1
11004: Options: anchored
11005: No first char
11006: No need char
11007: 
11008: /(^ab|^)++/I
11009: Capturing subpattern count = 1
11010: Options: anchored
11011: No first char
11012: No need char
11013: 
11014: /(?:^ab)/I
11015: Capturing subpattern count = 0
11016: Options: anchored
11017: No first char
11018: No need char
11019: 
11020: /(?:^ab)++/I
11021: Capturing subpattern count = 0
11022: Options: anchored
11023: No first char
11024: No need char
11025: 
11026: /(?:^ab|^)+/I
11027: Capturing subpattern count = 0
11028: Options: anchored
11029: No first char
11030: No need char
11031: 
11032: /(?:^ab|^)++/I
11033: Capturing subpattern count = 0
11034: Options: anchored
11035: No first char
11036: No need char
11037: 
11038: /(.*ab)/I
11039: Capturing subpattern count = 1
11040: No options
11041: First char at start or follows newline
11042: Need char = 'b'
11043: 
11044: /(.*ab)++/I
11045: Capturing subpattern count = 1
11046: No options
11047: First char at start or follows newline
11048: Need char = 'b'
11049: 
11050: /(.*ab|.*)+/I
11051: Capturing subpattern count = 1
11052: No options
11053: First char at start or follows newline
11054: No need char
11055: 
11056: /(.*ab|.*)++/I
11057: Capturing subpattern count = 1
11058: No options
11059: First char at start or follows newline
11060: No need char
11061: 
11062: /(?:.*ab)/I
11063: Capturing subpattern count = 0
11064: No options
11065: First char at start or follows newline
11066: Need char = 'b'
11067: 
11068: /(?:.*ab)++/I
11069: Capturing subpattern count = 0
11070: No options
11071: First char at start or follows newline
11072: Need char = 'b'
11073: 
11074: /(?:.*ab|.*)+/I
11075: Capturing subpattern count = 0
11076: No options
11077: First char at start or follows newline
11078: No need char
11079: 
11080: /(?:.*ab|.*)++/I
11081: Capturing subpattern count = 0
11082: No options
11083: First char at start or follows newline
11084: No need char
11085: 
11086: /(?=a)[bcd]/I
11087: Capturing subpattern count = 0
11088: No options
11089: First char = 'a'
11090: No need char
11091: 
11092: /((?=a))[bcd]/I
11093: Capturing subpattern count = 1
11094: No options
11095: First char = 'a'
11096: No need char
11097: 
11098: /((?=a))+[bcd]/I
11099: Capturing subpattern count = 1
11100: No options
11101: First char = 'a'
11102: No need char
11103: 
11104: /((?=a))++[bcd]/I
11105: Capturing subpattern count = 1
11106: No options
11107: First char = 'a'
11108: No need char
11109: 
11110: /(?=a+)[bcd]/iI
11111: Capturing subpattern count = 0
11112: Options: caseless
11113: First char = 'a' (caseless)
11114: No need char
11115: 
11116: /(?=a+?)[bcd]/iI
11117: Capturing subpattern count = 0
11118: Options: caseless
11119: First char = 'a' (caseless)
11120: No need char
11121: 
11122: /(?=a++)[bcd]/iI
11123: Capturing subpattern count = 0
11124: Options: caseless
11125: First char = 'a' (caseless)
11126: No need char
11127: 
11128: /(?=a{3})[bcd]/iI
11129: Capturing subpattern count = 0
11130: Options: caseless
11131: First char = 'a' (caseless)
11132: Need char = 'a' (caseless)
11133: 
11134: /(abc)\1+/S
11135: 
11136: /-- Perl doesn't get these right IMO (the 3rd is PCRE-specific) --/
11137: 
11138: /(?1)(?:(b(*ACCEPT))){0}/
11139:     b
11140:  0: b
11141: 
11142: /(?1)(?:(b(*ACCEPT))){0}c/
11143:     bc
11144:  0: bc
11145:     ** Failers 
11146: No match
11147:     b 
11148: No match
11149: 
11150: /(?1)(?:((*ACCEPT))){0}c/
11151:     c
11152:  0: c
11153:     c\N 
11154:  0: c
11155: 
11156: /^.*?(?(?=a)a|b(*THEN)c)/
11157:     ba
11158: No match
11159: 
11160: /^.*?(?(?=a)a|bc)/
11161:     ba
11162:  0: ba
11163: 
11164: /^.*?(?(?=a)a(*THEN)b|c)/
11165:     ac
11166: No match
11167: 
11168: /^.*?(?(?=a)a(*THEN)b)c/
11169:     ac
11170: No match
11171: 
11172: /^.*?(a(*THEN)b)c/
11173:     aabc
11174: No match
11175:     
11176: /^.*? (?1) c (?(DEFINE)(a(*THEN)b))/x
11177:     aabc
11178:  0: aabc
11179: 
11180: /^.*?(a(*THEN)b|z)c/
11181:     aabc
11182:  0: aabc
11183:  1: ab
11184: 
11185: /^.*?(z|a(*THEN)b)c/
11186:     aabc
11187:  0: aabc
11188:  1: ab
11189: 
11190: /-- --/
11191: 
11192: /-- These studied versions are here because they are not Perl-compatible; the
11193:     studying means the mark is not seen. --/
11194: 
11195: /(*MARK:A)(*SKIP:B)(C|X)/KS
11196:     C
11197:  0: C
11198:  1: C
11199: MK: A
11200:     D
11201: No match, mark = A
11202:      
11203: /(*:A)A+(*SKIP:A)(B|Z)/KS
11204:     AAAC
11205: No match, mark = A
11206: 
11207: /-- --/
11208: 
11209: "(?=a*(*ACCEPT)b)c"
11210:     c
11211:  0: c
11212:     c\N 
11213:  0: c
11214:     
11215: /(?1)c(?(DEFINE)((*ACCEPT)b))/
11216:     c
11217:  0: c
11218:     c\N  
11219:  0: c
11220:     
11221: /(?>(*ACCEPT)b)c/
11222:     c
11223:  0: 
11224:     c\N  
11225: No match
11226: 
11227: /(?:(?>(a)))+a%/++
11228:     %aa%
11229:  0: aa%
11230:  0+ 
11231:  1: a
11232:  1+ a%
11233: 
11234: /(a)b|ac/++SS
11235:     ac\O3
11236: Matched, but too many substrings
11237:  0: ac
11238:  0+ 
11239:     
11240: /(a)(b)x|abc/++
11241:      abc\O6
11242:  0: abc
11243:  0+ 
11244: 
11245: /(a)bc|(a)(b)\2/
11246:     \O3abc
11247: Matched, but too many substrings
11248:  0: abc
11249:     \O4abc 
11250: Matched, but too many substrings
11251:  0: abc
11252: 
11253: /(?(DEFINE)(a(?2)|b)(b(?1)|a))(?:(?1)|(?2))/SI
11254: Capturing subpattern count = 2
11255: No options
11256: No first char
11257: No need char
11258: Subject length lower bound = 1
11259: No set of starting bytes
11260: 
11261: /(a(?2)|b)(b(?1)|a)(?:(?1)|(?2))/SI
11262: Capturing subpattern count = 2
11263: No options
11264: No first char
11265: No need char
11266: Subject length lower bound = 3
11267: Starting byte set: a b 
11268: 
11269: /(a(?2)|b)(b(?1)|a)(?1)(?2)/SI
11270: Capturing subpattern count = 2
11271: No options
11272: No first char
11273: No need char
11274: Subject length lower bound = 4
11275: Starting byte set: a b 
11276: 
11277: /(abc)(?1)/SI
11278: Capturing subpattern count = 1
11279: No options
11280: First char = 'a'
11281: Need char = 'c'
11282: Subject length lower bound = 6
11283: No set of starting bytes
11284: 
11285: /^(?>a)++/
11286:     aa\M
11287: Minimum match() limit = 5
11288: Minimum match() recursion limit = 2
11289:  0: aa
11290:     aaaaaaaaa\M 
11291: Minimum match() limit = 12
11292: Minimum match() recursion limit = 2
11293:  0: aaaaaaaaa
11294:     
11295: /(a)(?1)++/
11296:     aa\M
11297: Minimum match() limit = 7
11298: Minimum match() recursion limit = 4
11299:  0: aa
11300:  1: a
11301:     aaaaaaaaa\M  
11302: Minimum match() limit = 21
11303: Minimum match() recursion limit = 4
11304:  0: aaaaaaaaa
11305:  1: a
11306: 
11307: /(?:(foo)|(bar)|(baz))X/SS=
11308:     bazfooX
11309:  0: fooX
11310:  1: foo
11311:  2: <unset>
11312:  3: <unset>
11313:     foobazbarX
11314:  0: barX
11315:  1: <unset>
11316:  2: bar
11317:  3: <unset>
11318:     barfooX
11319:  0: fooX
11320:  1: foo
11321:  2: <unset>
11322:  3: <unset>
11323:     bazX
11324:  0: bazX
11325:  1: <unset>
11326:  2: <unset>
11327:  3: baz
11328:     foobarbazX    
11329:  0: bazX
11330:  1: <unset>
11331:  2: <unset>
11332:  3: baz
11333:     bazfooX\O0
11334: Matched, but too many substrings
11335:     bazfooX\O2
11336: Matched, but too many substrings
11337:  0: fooX
11338:     bazfooX\O4
11339: Matched, but too many substrings
11340:  0: fooX
11341:  1: <unset>
11342:     bazfooX\O6
11343: Matched, but too many substrings
11344:  0: fooX
11345:  1: foo
11346:  2: <unset>
11347:     bazfooX\O8
11348: Matched, but too many substrings
11349:  0: fooX
11350:  1: foo
11351:  2: <unset>
11352:  3: <unset>
11353:     bazfooX\O10
11354:  0: fooX
11355:  1: foo
11356:  2: <unset>
11357:  3: <unset>
11358: 
11359: /(?=abc){3}abc/BZ
11360: ------------------------------------------------------------------
11361:         Bra
11362:         Assert
11363:         abc
11364:         Ket
11365:         abc
11366:         Ket
11367:         End
11368: ------------------------------------------------------------------
11369: 
11370: /(?=abc)+abc/BZ
11371: ------------------------------------------------------------------
11372:         Bra
11373:         Assert
11374:         abc
11375:         Ket
11376:         abc
11377:         Ket
11378:         End
11379: ------------------------------------------------------------------
11380: 
11381: /(?=abc)++abc/BZ
11382: ------------------------------------------------------------------
11383:         Bra
11384:         Assert
11385:         abc
11386:         Ket
11387:         abc
11388:         Ket
11389:         End
11390: ------------------------------------------------------------------
11391: 
11392: /(?=abc){0}xyz/BZ
11393: ------------------------------------------------------------------
11394:         Bra
11395:         Skip zero
11396:         Assert
11397:         abc
11398:         Ket
11399:         xyz
11400:         Ket
11401:         End
11402: ------------------------------------------------------------------
11403: 
11404: /(?=(a))?./BZ
11405: ------------------------------------------------------------------
11406:         Bra
11407:         Brazero
11408:         Assert
11409:         CBra 1
11410:         a
11411:         Ket
11412:         Ket
11413:         Any
11414:         Ket
11415:         End
11416: ------------------------------------------------------------------
11417: 
11418: /(?=(a))??./BZ
11419: ------------------------------------------------------------------
11420:         Bra
11421:         Braminzero
11422:         Assert
11423:         CBra 1
11424:         a
11425:         Ket
11426:         Ket
11427:         Any
11428:         Ket
11429:         End
11430: ------------------------------------------------------------------
11431: 
11432: /^(?=(a)){0}b(?1)/BZ
11433: ------------------------------------------------------------------
11434:         Bra
11435:         ^
11436:         Skip zero
11437:         Assert
11438:         CBra 1
11439:         a
11440:         Ket
11441:         Ket
11442:         b
11443:         Recurse
11444:         Ket
11445:         End
11446: ------------------------------------------------------------------
11447: 
11448: /(?(DEFINE)(a))?b(?1)/BZ
11449: ------------------------------------------------------------------
11450:         Bra
11451:         Cond
11452:         Cond def
11453:         CBra 1
11454:         a
11455:         Ket
11456:         Ket
11457:         b
11458:         Recurse
11459:         Ket
11460:         End
11461: ------------------------------------------------------------------
11462: 
11463: /^(?=(?1))?[az]([abc])d/BZ
11464: ------------------------------------------------------------------
11465:         Bra
11466:         ^
11467:         Brazero
11468:         Assert
11469:         Recurse
11470:         Ket
11471:         [az]
11472:         CBra 1
11473:         [a-c]
11474:         Ket
11475:         d
11476:         Ket
11477:         End
11478: ------------------------------------------------------------------
11479: 
11480: /^(?!a){0}\w+/BZ
11481: ------------------------------------------------------------------
11482:         Bra
11483:         ^
11484:         Skip zero
11485:         Assert not
11486:         a
11487:         Ket
11488:         \w+
11489:         Ket
11490:         End
11491: ------------------------------------------------------------------
11492: 
11493: /(?<=(abc))?xyz/BZ
11494: ------------------------------------------------------------------
11495:         Bra
11496:         Brazero
11497:         AssertB
11498:         Reverse
11499:         CBra 1
11500:         abc
11501:         Ket
11502:         Ket
11503:         xyz
11504:         Ket
11505:         End
11506: ------------------------------------------------------------------
11507: 
11508: /[:a[:abc]b:]/BZ
11509: ------------------------------------------------------------------
11510:         Bra
11511:         [:[a-c]
11512:         b:]
11513:         Ket
11514:         End
11515: ------------------------------------------------------------------
11516: 
11517: /((?2))((?1))/SS
11518:     abc
11519: Error -26 (nested recursion at the same subject position)
11520: 
11521: /((?(R2)a+|(?1)b))/SS
11522:     aaaabcde
11523: Error -26 (nested recursion at the same subject position)
11524: 
11525: /(?(R)a*(?1)|((?R))b)/SS
11526:     aaaabcde
11527: Error -26 (nested recursion at the same subject position)
11528: 
11529: /(a+|(?R)b)/
11530: Failed: recursive call could loop indefinitely at offset 7
11531: 
11532: /^(a(*:A)(d|e(*:B))z|aeq)/C
11533:     adz
11534: --->adz
11535:  +0 ^       ^
11536:  +1 ^       (a(*:A)(d|e(*:B))z|aeq)
11537:  +2 ^       a
11538:  +3 ^^      (*:A)
11539:  +8 ^^      (d|e(*:B))
11540: Latest Mark: A
11541:  +9 ^^      d
11542: +10 ^ ^     |
11543: +18 ^ ^     z
11544: +19 ^  ^    |
11545: +24 ^  ^    
11546:  0: adz
11547:  1: adz
11548:  2: d
11549:     aez
11550: --->aez
11551:  +0 ^       ^
11552:  +1 ^       (a(*:A)(d|e(*:B))z|aeq)
11553:  +2 ^       a
11554:  +3 ^^      (*:A)
11555:  +8 ^^      (d|e(*:B))
11556: Latest Mark: A
11557:  +9 ^^      d
11558: +11 ^^      e
11559: +12 ^ ^     (*:B)
11560: +17 ^ ^     )
11561: Latest Mark: B
11562: +18 ^ ^     z
11563: +19 ^  ^    |
11564: +24 ^  ^    
11565:  0: aez
11566:  1: aez
11567:  2: e
11568:     aeqwerty
11569: --->aeqwerty
11570:  +0 ^            ^
11571:  +1 ^            (a(*:A)(d|e(*:B))z|aeq)
11572:  +2 ^            a
11573:  +3 ^^           (*:A)
11574:  +8 ^^           (d|e(*:B))
11575: Latest Mark: A
11576:  +9 ^^           d
11577: +11 ^^           e
11578: +12 ^ ^          (*:B)
11579: +17 ^ ^          )
11580: Latest Mark: B
11581: +18 ^ ^          z
11582: +20 ^            a
11583: +21 ^^           e
11584: +22 ^ ^          q
11585: +23 ^  ^         )
11586: +24 ^  ^         
11587:  0: aeq
11588:  1: aeq
11589: 
11590: /.(*F)/
11591:     \P\Pabc
11592: No match
11593: 
11594: /\btype\b\W*?\btext\b\W*?\bjavascript\b/IS
11595: Capturing subpattern count = 0
11596: No options
11597: First char = 't'
11598: Need char = 't'
11599: Subject length lower bound = 18
11600: No set of starting bytes
11601: 
11602: /\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/IS
11603: Capturing subpattern count = 0
11604: No options
11605: No first char
11606: No need char
11607: Subject length lower bound = 8
11608: Starting byte set: < o t u 
11609: 
11610: /a(*SKIP)c|b(*ACCEPT)|/+SI
11611: Capturing subpattern count = 0
11612: No options
11613: No first char
11614: No need char
11615: Study returned NULL
11616:     a
11617:  0: 
11618:  0+ 
11619: 
11620: /a(*SKIP)c|b(*ACCEPT)cd(*ACCEPT)|x/SI
11621: Capturing subpattern count = 0
11622: No options
11623: No first char
11624: No need char
11625: Subject length lower bound = -1
11626: Starting byte set: a b x 
11627:     ax
11628:  0: x
11629: 
11630: 'a*(*ACCEPT)b'+
11631:     \N\N
11632: No match
11633:     abc\N\N
11634:  0: a
11635:  0+ bc
11636:     bbb\N\N 
11637:  0: 
11638:  0+ bb
11639: 
11640: /(*ACCEPT)a/+I
11641: Capturing subpattern count = 0
11642: No options
11643: No first char
11644: No need char
11645:     bax
11646:  0: 
11647:  0+ bax
11648: 
11649: /z(*ACCEPT)a/+I
11650: Capturing subpattern count = 0
11651: No options
11652: First char = 'z'
11653: No need char
11654:     baxzbx
11655:  0: z
11656:  0+ bx
11657: 
11658: /a(?:.)*?a/ims                                                                  
11659:     \Mabbbbbbbbbbbbbbbbbbbbba
11660: Minimum match() limit = 65
11661: Minimum match() recursion limit = 2
11662:  0: abbbbbbbbbbbbbbbbbbbbba
11663:     
11664: /a(?:.(*THEN))*?a/ims
11665:     \Mabbbbbbbbbbbbbbbbbbbbba
11666: Minimum match() limit = 86
11667: Minimum match() recursion limit = 45
11668:  0: abbbbbbbbbbbbbbbbbbbbba
11669: 
11670: /a(?:.(*THEN:ABC))*?a/ims
11671:     \Mabbbbbbbbbbbbbbbbbbbbba
11672: Minimum match() limit = 86
11673: Minimum match() recursion limit = 45
11674:  0: abbbbbbbbbbbbbbbbbbbbba
11675: 
11676: /-- These tests are in agreement with development Perl 5.015, which has fixed
11677:     some things, but they don't all work with 5.012, so they aren't in the
11678:     Perl-compatible tests. Those after the first come from Perl's own test
11679:     files. --/
11680:     
11681: /^((yes|no)(*THEN)(*F))?/
11682:   yes
11683: No match
11684: 
11685: /(A (.*)   C? (*THEN)  | A D) (*FAIL)/x
11686: AbcdCBefgBhiBqz
11687: No match
11688: 
11689: /(A (.*)   C? (*THEN)  | A D) z/x
11690: AbcdCBefgBhiBqz
11691: No match
11692: 
11693: /(A (.*)   C? (*THEN)  | A D) \s* (*FAIL)/x
11694: AbcdCBefgBhiBqz
11695: No match
11696: 
11697: /(A (.*)   C? (*THEN)  | A D) \s* z/x
11698: AbcdCBefgBhiBqz
11699: No match
11700: 
11701: /(A (.*)   (?:C|) (*THEN)  | A D) (*FAIL)/x
11702: AbcdCBefgBhiBqz
11703: No match
11704: 
11705: /(A (.*)   (?:C|) (*THEN)  | A D) z/x
11706: AbcdCBefgBhiBqz
11707: No match
11708: 
11709: /(A (.*)   C{0,6} (*THEN)  | A D) (*FAIL)/x
11710: AbcdCBefgBhiBqz
11711: No match
11712: 
11713: /(A (.*)   C{0,6} (*THEN)  | A D) z/x
11714: AbcdCBefgBhiBqz
11715: No match
11716: 
11717: /(A (.*)   (CE){0,6} (*THEN)  | A D) (*FAIL)/x
11718: AbcdCEBefgBhiBqz
11719: No match
11720: 
11721: /(A (.*)   (CE){0,6} (*THEN)  | A D) z/x
11722: AbcdCEBefgBhiBqz
11723: No match
11724: 
11725: /(A (.*)   (CE*){0,6} (*THEN)  | A D) (*FAIL)/x
11726: AbcdCBefgBhiBqz
11727: No match
11728: 
11729: /(A (.*)   (CE*){0,6} (*THEN)  | A D) z/x
11730: AbcdCBefgBhiBqz
11731: No match
11732: 
11733: /-----------------------------------------------/  
11734: 
11735: /^(?>a+)(?>(z+))\w/BZ
11736: ------------------------------------------------------------------
11737:         Bra
11738:         ^
11739:         Once_NC
11740:         a+
11741:         Ket
11742:         Once
11743:         CBra 1
11744:         z+
11745:         Ket
11746:         Ket
11747:         \w
11748:         Ket
11749:         End
11750: ------------------------------------------------------------------
11751:     aaaazzzzb
11752:  0: aaaazzzzb
11753:  1: zzzz
11754:     ** Failers
11755: No match
11756:     aazz  
11757: No match
11758: 
11759: /(.)(\1|a(?2))/
11760:     bab
11761:  0: bab
11762:  1: b
11763:  2: ab
11764:     
11765: /\1|(.)(?R)\1/
11766:     cbbbc
11767:  0: cbbbc
11768:  1: c
11769:     
11770: /(.)((?(1)c|a)|a(?2))/
11771:     baa  
11772: No match
11773: 
11774: /(?P<abn>(?P=abn)xxx)/BZ
11775: ------------------------------------------------------------------
11776:         Bra
11777:         Once
11778:         CBra 1
11779:         \1
11780:         xxx
11781:         Ket
11782:         Ket
11783:         Ket
11784:         End
11785: ------------------------------------------------------------------
11786: 
11787: /(a\1z)/BZ
11788: ------------------------------------------------------------------
11789:         Bra
11790:         Once
11791:         CBra 1
11792:         a
11793:         \1
11794:         z
11795:         Ket
11796:         Ket
11797:         Ket
11798:         End
11799: ------------------------------------------------------------------
11800: 
11801: /^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
11802:      \Maabbccddee
11803: Minimum match() limit = 12
11804: Minimum match() recursion limit = 3
11805:  0: aabbccddee
11806: 
11807: /^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
11808:      \Maabbccddee
11809: Minimum match() limit = 22
11810: Minimum match() recursion limit = 21
11811:  0: aabbccddee
11812:  1: aa
11813:  2: bb
11814:  3: cc
11815:  4: dd
11816:  5: ee
11817: 
11818: /^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
11819:      \Maabbccddee
11820: Minimum match() limit = 18
11821: Minimum match() recursion limit = 13
11822:  0: aabbccddee
11823:  1: aa
11824:  2: cc
11825:  3: ee
11826: 
11827: /^a\x41z/<JS>
11828:     aAz
11829:  0: aAz
11830:     *** Failers
11831: No match
11832:     ax41z
11833: No match
11834: 
11835: /^a[m\x41]z/<JS>
11836:     aAz
11837:  0: aAz
11838: 
11839: /^a\x1z/<JS>
11840:     ax1z
11841:  0: ax1z
11842: 
11843: /^a\u0041z/<JS>
11844:     aAz
11845:  0: aAz
11846:     *** Failers
11847: No match
11848:     au0041z
11849: No match
11850: 
11851: /^a[m\u0041]z/<JS>
11852:     aAz
11853:  0: aAz
11854: 
11855: /^a\u041z/<JS>
11856:     au041z
11857:  0: au041z
11858:     *** Failers
11859: No match
11860:     aAz
11861: No match
11862: 
11863: /^a\U0041z/<JS>
11864:     aU0041z
11865:  0: aU0041z
11866:     *** Failers
11867: No match
11868:     aAz
11869: No match
11870: 
11871: /(?(?=c)c|d)++Y/BZ
11872: ------------------------------------------------------------------
11873:         Bra
11874:         BraPos
11875:         Cond
11876:         Assert
11877:         c
11878:         Ket
11879:         c
11880:         Alt
11881:         d
11882:         Ket
11883:         KetRpos
11884:         Y
11885:         Ket
11886:         End
11887: ------------------------------------------------------------------
11888: 
11889: /(?(?=c)c|d)*+Y/BZ
11890: ------------------------------------------------------------------
11891:         Bra
11892:         Braposzero
11893:         BraPos
11894:         Cond
11895:         Assert
11896:         c
11897:         Ket
11898:         c
11899:         Alt
11900:         d
11901:         Ket
11902:         KetRpos
11903:         Y
11904:         Ket
11905:         End
11906: ------------------------------------------------------------------
11907: 
11908: /a[\NB]c/
11909: Failed: \N is not supported in a class at offset 3
11910: 
11911: /a[B-\Nc]/ 
11912: Failed: \N is not supported in a class at offset 5
11913: 
11914: /(a)(?2){0,1999}?(b)/
11915: 
11916: /(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/
11917: 
11918: /--- This test, with something more complicated than individual letters, causes
11919: different behaviour in Perl. Perhaps it disables some optimization; no tag is
11920: passed back for the failures, whereas in PCRE there is a tag. ---/
11921:     
11922: /(A|P)(*:A)(B|P) | (X|P)(X|P)(*:B)(Y|P)/xK
11923:     AABC
11924:  0: AB
11925:  1: A
11926:  2: B
11927: MK: A
11928:     XXYZ 
11929:  0: XXY
11930:  1: <unset>
11931:  2: <unset>
11932:  3: X
11933:  4: X
11934:  5: Y
11935: MK: B
11936:     ** Failers
11937: No match
11938:     XAQQ  
11939: No match, mark = A
11940:     XAQQXZZ  
11941: No match, mark = A
11942:     AXQQQ 
11943: No match, mark = A
11944:     AXXQQQ 
11945: No match, mark = B
11946: 
11947: /-- Perl doesn't give marks for these, though it does if the alternatives are
11948: replaced by single letters. --/
11949:     
11950: /(b|q)(*:m)f|a(*:n)w/K
11951:     aw 
11952:  0: aw
11953: MK: n
11954:     ** Failers 
11955: No match, mark = n
11956:     abc
11957: No match, mark = m
11958: 
11959: /(q|b)(*:m)f|a(*:n)w/K
11960:     aw 
11961:  0: aw
11962: MK: n
11963:     ** Failers 
11964: No match, mark = n
11965:     abc
11966: No match, mark = m
11967: 
11968: /-- After a partial match, the behaviour is as for a failure. --/
11969: 
11970: /^a(*:X)bcde/K
11971:    abc\P
11972: Partial match, mark=X: abc
11973:    
11974: /-- These are here because Perl doesn't return a mark, except for the first --/
11975: 
11976: /(?=(*:x))(q|)/K+
11977:     abc
11978:  0: 
11979:  0+ abc
11980:  1: 
11981: MK: x
11982: 
11983: /(?=(*:x))((*:y)q|)/K+
11984:     abc
11985:  0: 
11986:  0+ abc
11987:  1: 
11988: MK: x
11989: 
11990: /(?=(*:x))(?:(*:y)q|)/K+
11991:     abc
11992:  0: 
11993:  0+ abc
11994: MK: x
11995: 
11996: /(?=(*:x))(?>(*:y)q|)/K+
11997:     abc
11998:  0: 
11999:  0+ abc
12000: MK: x
12001: 
12002: /(?=a(*:x))(?!a(*:y)c)/K+
12003:     ab
12004:  0: 
12005:  0+ ab
12006: MK: x
12007: 
12008: /(?=a(*:x))(?=a(*:y)c|)/K+
12009:     ab
12010:  0: 
12011:  0+ ab
12012: MK: x
12013: 
12014: /-- End of testinput2 --/

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