"Fossies" - the Fresh Open Source Software Archive

Member "pcre-8.43/testdata/testoutput1" (20 Oct 2018, 136093 Bytes) of package /linux/misc/pcre-8.43.tar.bz2:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "testoutput1": 8.42_vs_8.43.

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