File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / pcre / testdata / testoutput8
Revision 1.1.1.5 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Sun Jun 15 19:46:05 2014 UTC (10 years ago) by misho
Branches: pcre, MAIN
CVS tags: v8_34, HEAD
pcre 8.34

    1: /-- This set of tests check the DFA matching functionality of pcre_dfa_exec(),
    2:     excluding UTF and Unicode property support. The -dfa flag must be used with
    3:     pcretest when running it. --/
    4:     
    5: < forbid 8W 
    6:      
    7: /abc/
    8:     abc
    9:  0: abc
   10:     
   11: /ab*c/
   12:     abc
   13:  0: abc
   14:     abbbbc
   15:  0: abbbbc
   16:     ac
   17:  0: ac
   18:     
   19: /ab+c/
   20:     abc
   21:  0: abc
   22:     abbbbbbc
   23:  0: abbbbbbc
   24:     *** Failers 
   25: No match
   26:     ac
   27: No match
   28:     ab
   29: No match
   30:     
   31: /a*/O
   32:     a
   33:  0: a
   34:  1: 
   35:     aaaaaaaaaaaaaaaaa
   36:  0: aaaaaaaaaaaaaaaaa
   37:  1: aaaaaaaaaaaaaaaa
   38:  2: aaaaaaaaaaaaaaa
   39:  3: aaaaaaaaaaaaaa
   40:  4: aaaaaaaaaaaaa
   41:  5: aaaaaaaaaaaa
   42:  6: aaaaaaaaaaa
   43:  7: aaaaaaaaaa
   44:  8: aaaaaaaaa
   45:  9: aaaaaaaa
   46: 10: aaaaaaa
   47: 11: aaaaaa
   48: 12: aaaaa
   49: 13: aaaa
   50: 14: aaa
   51: 15: aa
   52: 16: a
   53: 17: 
   54:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
   55: Matched, but offsets vector is too small to show all matches
   56:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   57:  1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   58:  2: aaaaaaaaaaaaaaaaaaaaaaaaaaaa
   59:  3: aaaaaaaaaaaaaaaaaaaaaaaaaaa
   60:  4: aaaaaaaaaaaaaaaaaaaaaaaaaa
   61:  5: aaaaaaaaaaaaaaaaaaaaaaaaa
   62:  6: aaaaaaaaaaaaaaaaaaaaaaaa
   63:  7: aaaaaaaaaaaaaaaaaaaaaaa
   64:  8: aaaaaaaaaaaaaaaaaaaaaa
   65:  9: aaaaaaaaaaaaaaaaaaaaa
   66: 10: aaaaaaaaaaaaaaaaaaaa
   67: 11: aaaaaaaaaaaaaaaaaaa
   68: 12: aaaaaaaaaaaaaaaaaa
   69: 13: aaaaaaaaaaaaaaaaa
   70: 14: aaaaaaaaaaaaaaaa
   71: 15: aaaaaaaaaaaaaaa
   72: 16: aaaaaaaaaaaaaa
   73: 17: aaaaaaaaaaaaa
   74: 18: aaaaaaaaaaaa
   75: 19: aaaaaaaaaaa
   76: 20: aaaaaaaaaa
   77: 21: aaaaaaaaa
   78:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\F 
   79:  0: 
   80:     
   81: /(a|abcd|african)/
   82:     a
   83:  0: a
   84:     abcd
   85:  0: abcd
   86:  1: a
   87:     african
   88:  0: african
   89:  1: a
   90:     
   91: /^abc/
   92:     abcdef
   93:  0: abc
   94:     *** Failers
   95: No match
   96:     xyzabc
   97: No match
   98:     xyz\nabc    
   99: No match
  100:     
  101: /^abc/m
  102:     abcdef
  103:  0: abc
  104:     xyz\nabc    
  105:  0: abc
  106:     *** Failers
  107: No match
  108:     xyzabc
  109: No match
  110:     
  111: /\Aabc/
  112:     abcdef
  113:  0: abc
  114:     *** Failers
  115: No match
  116:     xyzabc
  117: No match
  118:     xyz\nabc    
  119: No match
  120:     
  121: /\Aabc/m
  122:     abcdef
  123:  0: abc
  124:     *** Failers
  125: No match
  126:     xyzabc
  127: No match
  128:     xyz\nabc    
  129: No match
  130:     
  131: /\Gabc/
  132:     abcdef
  133:  0: abc
  134:     xyzabc\>3
  135:  0: abc
  136:     *** Failers
  137: No match
  138:     xyzabc    
  139: No match
  140:     xyzabc\>2 
  141: No match
  142:     
  143: /x\dy\Dz/
  144:     x9yzz
  145:  0: x9yzz
  146:     x0y+z
  147:  0: x0y+z
  148:     *** Failers
  149: No match
  150:     xyz
  151: No match
  152:     xxy0z     
  153: No match
  154:     
  155: /x\sy\Sz/
  156:     x yzz
  157:  0: x yzz
  158:     x y+z
  159:  0: x y+z
  160:     *** Failers
  161: No match
  162:     xyz
  163: No match
  164:     xxyyz
  165: No match
  166:     
  167: /x\wy\Wz/
  168:     xxy+z
  169:  0: xxy+z
  170:     *** Failers
  171: No match
  172:     xxy0z
  173: No match
  174:     x+y+z         
  175: No match
  176:     
  177: /x.y/
  178:     x+y
  179:  0: x+y
  180:     x-y
  181:  0: x-y
  182:     *** Failers
  183: No match
  184:     x\ny
  185: No match
  186:     
  187: /x.y/s
  188:     x+y
  189:  0: x+y
  190:     x-y
  191:  0: x-y
  192:     x\ny
  193:  0: x\x0ay
  194: 
  195: /(a.b(?s)c.d|x.y)p.q/
  196:     a+bc+dp+q
  197:  0: a+bc+dp+q
  198:     a+bc\ndp+q
  199:  0: a+bc\x0adp+q
  200:     x\nyp+q 
  201:  0: x\x0ayp+q
  202:     *** Failers 
  203: No match
  204:     a\nbc\ndp+q
  205: No match
  206:     a+bc\ndp\nq
  207: No match
  208:     x\nyp\nq 
  209: No match
  210: 
  211: /a\d\z/
  212:     ba0
  213:  0: a0
  214:     *** Failers
  215: No match
  216:     ba0\n
  217: No match
  218:     ba0\ncd   
  219: No match
  220: 
  221: /a\d\z/m
  222:     ba0
  223:  0: a0
  224:     *** Failers
  225: No match
  226:     ba0\n
  227: No match
  228:     ba0\ncd   
  229: No match
  230: 
  231: /a\d\Z/
  232:     ba0
  233:  0: a0
  234:     ba0\n
  235:  0: a0
  236:     *** Failers
  237: No match
  238:     ba0\ncd   
  239: No match
  240: 
  241: /a\d\Z/m
  242:     ba0
  243:  0: a0
  244:     ba0\n
  245:  0: a0
  246:     *** Failers
  247: No match
  248:     ba0\ncd   
  249: No match
  250: 
  251: /a\d$/
  252:     ba0
  253:  0: a0
  254:     ba0\n
  255:  0: a0
  256:     *** Failers
  257: No match
  258:     ba0\ncd   
  259: No match
  260: 
  261: /a\d$/m
  262:     ba0
  263:  0: a0
  264:     ba0\n
  265:  0: a0
  266:     ba0\ncd   
  267:  0: a0
  268:     *** Failers
  269: No match
  270: 
  271: /abc/i
  272:     abc
  273:  0: abc
  274:     aBc
  275:  0: aBc
  276:     ABC
  277:  0: ABC
  278:     
  279: /[^a]/
  280:     abcd
  281:  0: b
  282:     
  283: /ab?\w/
  284:     abz
  285:  0: abz
  286:  1: ab
  287:     abbz
  288:  0: abb
  289:  1: ab
  290:     azz  
  291:  0: az
  292: 
  293: /x{0,3}yz/
  294:     ayzq
  295:  0: yz
  296:     axyzq
  297:  0: xyz
  298:     axxyz
  299:  0: xxyz
  300:     axxxyzq
  301:  0: xxxyz
  302:     axxxxyzq
  303:  0: xxxyz
  304:     *** Failers
  305: No match
  306:     ax
  307: No match
  308:     axx     
  309: No match
  310:       
  311: /x{3}yz/
  312:     axxxyzq
  313:  0: xxxyz
  314:     axxxxyzq
  315:  0: xxxyz
  316:     *** Failers
  317: No match
  318:     ax
  319: No match
  320:     axx     
  321: No match
  322:     ayzq
  323: No match
  324:     axyzq
  325: No match
  326:     axxyz
  327: No match
  328:       
  329: /x{2,3}yz/
  330:     axxyz
  331:  0: xxyz
  332:     axxxyzq
  333:  0: xxxyz
  334:     axxxxyzq
  335:  0: xxxyz
  336:     *** Failers
  337: No match
  338:     ax
  339: No match
  340:     axx     
  341: No match
  342:     ayzq
  343: No match
  344:     axyzq
  345: No match
  346:       
  347: /[^a]+/O
  348:     bac
  349:  0: b
  350:     bcdefax
  351:  0: bcdef
  352:  1: bcde
  353:  2: bcd
  354:  3: bc
  355:  4: b
  356:     *** Failers
  357:  0: *** F
  358:  1: *** 
  359:  2: ***
  360:  3: **
  361:  4: *
  362:     aaaaa   
  363: No match
  364: 
  365: /[^a]*/O
  366:     bac
  367:  0: b
  368:  1: 
  369:     bcdefax
  370:  0: bcdef
  371:  1: bcde
  372:  2: bcd
  373:  3: bc
  374:  4: b
  375:  5: 
  376:     *** Failers
  377:  0: *** F
  378:  1: *** 
  379:  2: ***
  380:  3: **
  381:  4: *
  382:  5: 
  383:     aaaaa   
  384:  0: 
  385:     
  386: /[^a]{3,5}/O
  387:     xyz
  388:  0: xyz
  389:     awxyza
  390:  0: wxyz
  391:  1: wxy
  392:     abcdefa
  393:  0: bcdef
  394:  1: bcde
  395:  2: bcd
  396:     abcdefghijk
  397:  0: bcdef
  398:  1: bcde
  399:  2: bcd
  400:     *** Failers
  401:  0: *** F
  402:  1: *** 
  403:  2: ***
  404:     axya
  405: No match
  406:     axa
  407: No match
  408:     aaaaa         
  409: No match
  410: 
  411: /\d*/
  412:     1234b567
  413:  0: 1234
  414:     xyz
  415:  0: 
  416:     
  417: /\D*/
  418:     a1234b567
  419:  0: a
  420:     xyz
  421:  0: xyz
  422:      
  423: /\d+/
  424:     ab1234c56
  425:  0: 1234
  426:     *** Failers
  427: No match
  428:     xyz
  429: No match
  430:     
  431: /\D+/
  432:     ab123c56
  433:  0: ab
  434:     *** Failers
  435:  0: *** Failers
  436:     789
  437: No match
  438:     
  439: /\d?A/
  440:     045ABC
  441:  0: 5A
  442:     ABC
  443:  0: A
  444:     *** Failers
  445: No match
  446:     XYZ
  447: No match
  448:     
  449: /\D?A/
  450:     ABC
  451:  0: A
  452:     BAC
  453:  0: BA
  454:     9ABC             
  455:  0: A
  456:     *** Failers
  457: No match
  458: 
  459: /a+/
  460:     aaaa
  461:  0: aaaa
  462: 
  463: /^.*xyz/
  464:     xyz
  465:  0: xyz
  466:     ggggggggxyz
  467:  0: ggggggggxyz
  468:     
  469: /^.+xyz/
  470:     abcdxyz
  471:  0: abcdxyz
  472:     axyz
  473:  0: axyz
  474:     *** Failers
  475: No match
  476:     xyz
  477: No match
  478:     
  479: /^.?xyz/
  480:     xyz
  481:  0: xyz
  482:     cxyz       
  483:  0: cxyz
  484: 
  485: /^\d{2,3}X/
  486:     12X
  487:  0: 12X
  488:     123X
  489:  0: 123X
  490:     *** Failers
  491: No match
  492:     X
  493: No match
  494:     1X
  495: No match
  496:     1234X     
  497: No match
  498: 
  499: /^[abcd]\d/
  500:     a45
  501:  0: a4
  502:     b93
  503:  0: b9
  504:     c99z
  505:  0: c9
  506:     d04
  507:  0: d0
  508:     *** Failers
  509: No match
  510:     e45
  511: No match
  512:     abcd      
  513: No match
  514:     abcd1234
  515: No match
  516:     1234  
  517: No match
  518: 
  519: /^[abcd]*\d/
  520:     a45
  521:  0: a4
  522:     b93
  523:  0: b9
  524:     c99z
  525:  0: c9
  526:     d04
  527:  0: d0
  528:     abcd1234
  529:  0: abcd1
  530:     1234  
  531:  0: 1
  532:     *** Failers
  533: No match
  534:     e45
  535: No match
  536:     abcd      
  537: No match
  538: 
  539: /^[abcd]+\d/
  540:     a45
  541:  0: a4
  542:     b93
  543:  0: b9
  544:     c99z
  545:  0: c9
  546:     d04
  547:  0: d0
  548:     abcd1234
  549:  0: abcd1
  550:     *** Failers
  551: No match
  552:     1234  
  553: No match
  554:     e45
  555: No match
  556:     abcd      
  557: No match
  558: 
  559: /^a+X/
  560:     aX
  561:  0: aX
  562:     aaX 
  563:  0: aaX
  564: 
  565: /^[abcd]?\d/
  566:     a45
  567:  0: a4
  568:     b93
  569:  0: b9
  570:     c99z
  571:  0: c9
  572:     d04
  573:  0: d0
  574:     1234  
  575:  0: 1
  576:     *** Failers
  577: No match
  578:     abcd1234
  579: No match
  580:     e45
  581: No match
  582: 
  583: /^[abcd]{2,3}\d/
  584:     ab45
  585:  0: ab4
  586:     bcd93
  587:  0: bcd9
  588:     *** Failers
  589: No match
  590:     1234 
  591: No match
  592:     a36 
  593: No match
  594:     abcd1234
  595: No match
  596:     ee45
  597: No match
  598: 
  599: /^(abc)*\d/
  600:     abc45
  601:  0: abc4
  602:     abcabcabc45
  603:  0: abcabcabc4
  604:     42xyz 
  605:  0: 4
  606:     *** Failers
  607: No match
  608: 
  609: /^(abc)+\d/
  610:     abc45
  611:  0: abc4
  612:     abcabcabc45
  613:  0: abcabcabc4
  614:     *** Failers
  615: No match
  616:     42xyz 
  617: No match
  618: 
  619: /^(abc)?\d/
  620:     abc45
  621:  0: abc4
  622:     42xyz 
  623:  0: 4
  624:     *** Failers
  625: No match
  626:     abcabcabc45
  627: No match
  628: 
  629: /^(abc){2,3}\d/
  630:     abcabc45
  631:  0: abcabc4
  632:     abcabcabc45
  633:  0: abcabcabc4
  634:     *** Failers
  635: No match
  636:     abcabcabcabc45
  637: No match
  638:     abc45
  639: No match
  640:     42xyz 
  641: No match
  642: 
  643: /1(abc|xyz)2(?1)3/
  644:     1abc2abc3456
  645:  0: 1abc2abc3
  646:     1abc2xyz3456 
  647:  0: 1abc2xyz3
  648: 
  649: /^(a*\w|ab)=(a*\w|ab)/
  650:     ab=ab
  651:  0: ab=ab
  652:  1: ab=a
  653: 
  654: /^(a*\w|ab)=(?1)/
  655:     ab=ab
  656:  0: ab=ab
  657:  1: ab=a
  658: 
  659: /^([^()]|\((?1)*\))*$/
  660:     abc
  661:  0: abc
  662:     a(b)c
  663:  0: a(b)c
  664:     a(b(c))d  
  665:  0: a(b(c))d
  666:     *** Failers)
  667: No match
  668:     a(b(c)d  
  669: No match
  670: 
  671: /^>abc>([^()]|\((?1)*\))*<xyz<$/
  672:     >abc>123<xyz<
  673:  0: >abc>123<xyz<
  674:     >abc>1(2)3<xyz<
  675:  0: >abc>1(2)3<xyz<
  676:     >abc>(1(2)3)<xyz<
  677:  0: >abc>(1(2)3)<xyz<
  678: 
  679: /^(?>a*)\d/
  680:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
  681:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9
  682:     *** Failers 
  683: No match
  684:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  685: No match
  686: 
  687: /< (?: (?(R) \d++  | [^<>]*+) | (?R)) * >/x
  688:     <>
  689:  0: <>
  690:     <abcd>
  691:  0: <abcd>
  692:     <abc <123> hij>
  693:  0: <abc <123> hij>
  694:     <abc <def> hij>
  695:  0: <def>
  696:     <abc<>def> 
  697:  0: <abc<>def>
  698:     <abc<>      
  699:  0: <>
  700:     *** Failers
  701: No match
  702:     <abc
  703: No match
  704: 
  705: /^(?(?=abc)\w{3}:|\d\d)$/        
  706:     abc:                          
  707:  0: abc:
  708:     12                             
  709:  0: 12
  710:     *** Failers                     
  711: No match
  712:     123                       
  713: No match
  714:     xyz                        
  715: No match
  716:                                 
  717: /^(?(?!abc)\d\d|\w{3}:)$/      
  718:     abc:                        
  719:  0: abc:
  720:     12         
  721:  0: 12
  722:     *** Failers
  723: No match
  724:     123
  725: No match
  726:     xyz    
  727: No match
  728: 
  729: /^(?=abc)\w{5}:$/        
  730:     abcde:                          
  731:  0: abcde:
  732:     *** Failers                     
  733: No match
  734:     abc.. 
  735: No match
  736:     123                       
  737: No match
  738:     vwxyz                        
  739: No match
  740:                                 
  741: /^(?!abc)\d\d$/      
  742:     12         
  743:  0: 12
  744:     *** Failers
  745: No match
  746:     abcde:
  747: No match
  748:     abc..  
  749: No match
  750:     123
  751: No match
  752:     vwxyz    
  753: No match
  754: 
  755: /(?<=abc|xy)123/
  756:     abc12345
  757:  0: 123
  758:     wxy123z
  759:  0: 123
  760:     *** Failers
  761: No match
  762:     123abc
  763: No match
  764: 
  765: /(?<!abc|xy)123/
  766:     123abc
  767:  0: 123
  768:     mno123456 
  769:  0: 123
  770:     *** Failers
  771: No match
  772:     abc12345
  773: No match
  774:     wxy123z
  775: No match
  776: 
  777: /abc(?C1)xyz/
  778:     abcxyz
  779: --->abcxyz
  780:   1 ^  ^       x
  781:  0: abcxyz
  782:     123abcxyz999 
  783: --->123abcxyz999
  784:   1    ^  ^          x
  785:  0: abcxyz
  786: 
  787: /(ab|cd){3,4}/C
  788:   ababab
  789: --->ababab
  790:  +0 ^          (ab|cd){3,4}
  791:  +1 ^          a
  792:  +4 ^          c
  793:  +2 ^^         b
  794:  +3 ^ ^        |
  795:  +1 ^ ^        a
  796:  +4 ^ ^        c
  797:  +2 ^  ^       b
  798:  +3 ^   ^      |
  799:  +1 ^   ^      a
  800:  +4 ^   ^      c
  801:  +2 ^    ^     b
  802:  +3 ^     ^    |
  803: +12 ^     ^    
  804:  +1 ^     ^    a
  805:  +4 ^     ^    c
  806:  0: ababab
  807:   abcdabcd
  808: --->abcdabcd
  809:  +0 ^            (ab|cd){3,4}
  810:  +1 ^            a
  811:  +4 ^            c
  812:  +2 ^^           b
  813:  +3 ^ ^          |
  814:  +1 ^ ^          a
  815:  +4 ^ ^          c
  816:  +5 ^  ^         d
  817:  +6 ^   ^        )
  818:  +1 ^   ^        a
  819:  +4 ^   ^        c
  820:  +2 ^    ^       b
  821:  +3 ^     ^      |
  822: +12 ^     ^      
  823:  +1 ^     ^      a
  824:  +4 ^     ^      c
  825:  +5 ^      ^     d
  826:  +6 ^       ^    )
  827: +12 ^       ^    
  828:  0: abcdabcd
  829:  1: abcdab
  830:   abcdcdcdcdcd  
  831: --->abcdcdcdcdcd
  832:  +0 ^                (ab|cd){3,4}
  833:  +1 ^                a
  834:  +4 ^                c
  835:  +2 ^^               b
  836:  +3 ^ ^              |
  837:  +1 ^ ^              a
  838:  +4 ^ ^              c
  839:  +5 ^  ^             d
  840:  +6 ^   ^            )
  841:  +1 ^   ^            a
  842:  +4 ^   ^            c
  843:  +5 ^    ^           d
  844:  +6 ^     ^          )
  845: +12 ^     ^          
  846:  +1 ^     ^          a
  847:  +4 ^     ^          c
  848:  +5 ^      ^         d
  849:  +6 ^       ^        )
  850: +12 ^       ^        
  851:  0: abcdcdcd
  852:  1: abcdcd
  853: 
  854: /^abc/
  855:     abcdef
  856:  0: abc
  857:     *** Failers
  858: No match
  859:     abcdef\B  
  860: No match
  861: 
  862: /^(a*|xyz)/
  863:     bcd
  864:  0: 
  865:     aaabcd
  866:  0: aaa
  867:     xyz
  868:  0: xyz
  869:  1: 
  870:     xyz\N  
  871:  0: xyz
  872:     *** Failers
  873:  0: 
  874:     bcd\N   
  875: No match
  876:     
  877: /xyz$/
  878:     xyz
  879:  0: xyz
  880:     xyz\n
  881:  0: xyz
  882:     *** Failers
  883: No match
  884:     xyz\Z
  885: No match
  886:     xyz\n\Z    
  887: No match
  888:     
  889: /xyz$/m
  890:     xyz
  891:  0: xyz
  892:     xyz\n 
  893:  0: xyz
  894:     abcxyz\npqr 
  895:  0: xyz
  896:     abcxyz\npqr\Z 
  897:  0: xyz
  898:     xyz\n\Z    
  899:  0: xyz
  900:     *** Failers
  901: No match
  902:     xyz\Z
  903: No match
  904: 
  905: /\Gabc/
  906:     abcdef
  907:  0: abc
  908:     defabcxyz\>3 
  909:  0: abc
  910:     *** Failers 
  911: No match
  912:     defabcxyz
  913: No match
  914: 
  915: /^abcdef/
  916:     ab\P
  917: Partial match: ab
  918:     abcde\P
  919: Partial match: abcde
  920:     abcdef\P
  921:  0: abcdef
  922:     *** Failers
  923: No match
  924:     abx\P    
  925: No match
  926: 
  927: /^a{2,4}\d+z/
  928:     a\P
  929: Partial match: a
  930:     aa\P
  931: Partial match: aa
  932:     aa2\P 
  933: Partial match: aa2
  934:     aaa\P
  935: Partial match: aaa
  936:     aaa23\P 
  937: Partial match: aaa23
  938:     aaaa12345\P
  939: Partial match: aaaa12345
  940:     aa0z\P
  941:  0: aa0z
  942:     aaaa4444444444444z\P 
  943:  0: aaaa4444444444444z
  944:     *** Failers
  945: No match
  946:     az\P 
  947: No match
  948:     aaaaa\P 
  949: No match
  950:     a56\P 
  951: No match
  952: 
  953: /^abcdef/
  954:    abc\P
  955: Partial match: abc
  956:    def\R 
  957:  0: def
  958:    
  959: /(?<=foo)bar/
  960:    xyzfo\P 
  961: No match
  962:    foob\P\>2 
  963: Partial match at offset 3: foob
  964:    foobar...\R\P\>4 
  965:  0: ar
  966:    xyzfo\P
  967: No match
  968:    foobar\>2  
  969:  0: bar
  970:    *** Failers
  971: No match
  972:    xyzfo\P
  973: No match
  974:    obar\R   
  975: No match
  976: 
  977: /(ab*(cd|ef))+X/
  978:     adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\P\Z
  979: No match
  980:     lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\P\B\Z
  981: Partial match: abbbbbbcdaefabbbbbbbefa
  982:     cdabbbbbbbb\P\R\B\Z
  983: Partial match: cdabbbbbbbb
  984:     efabbbbbbbbbbbbbbbb\P\R\B\Z
  985: Partial match: efabbbbbbbbbbbbbbbb
  986:     bbbbbbbbbbbbcdXyasdfadf\P\R\B\Z    
  987:  0: bbbbbbbbbbbbcdX
  988: 
  989: /(a|b)/SF>testsavedregex
  990: Compiled pattern written to testsavedregex
  991: Study data written to testsavedregex
  992: <testsavedregex
  993: Compiled pattern (byte-inverted) loaded from testsavedregex
  994: Study data loaded from testsavedregex
  995:     abc
  996:  0: a
  997:     ** Failers
  998:  0: a
  999:     def  
 1000: No match
 1001:     
 1002: /the quick brown fox/
 1003:     the quick brown fox
 1004:  0: the quick brown fox
 1005:     The quick brown FOX
 1006: No match
 1007:     What do you know about the quick brown fox?
 1008:  0: the quick brown fox
 1009:     What do you know about THE QUICK BROWN FOX?
 1010: No match
 1011: 
 1012: /The quick brown fox/i
 1013:     the quick brown fox
 1014:  0: the quick brown fox
 1015:     The quick brown FOX
 1016:  0: The quick brown FOX
 1017:     What do you know about the quick brown fox?
 1018:  0: the quick brown fox
 1019:     What do you know about THE QUICK BROWN FOX?
 1020:  0: THE QUICK BROWN FOX
 1021: 
 1022: /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
 1023:     abcd\t\n\r\f\a\e9;\$\\?caxyz
 1024:  0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
 1025: 
 1026: /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
 1027:     abxyzpqrrrabbxyyyypqAzz
 1028:  0: abxyzpqrrrabbxyyyypqAzz
 1029:     abxyzpqrrrabbxyyyypqAzz
 1030:  0: abxyzpqrrrabbxyyyypqAzz
 1031:     aabxyzpqrrrabbxyyyypqAzz
 1032:  0: aabxyzpqrrrabbxyyyypqAzz
 1033:     aaabxyzpqrrrabbxyyyypqAzz
 1034:  0: aaabxyzpqrrrabbxyyyypqAzz
 1035:     aaaabxyzpqrrrabbxyyyypqAzz
 1036:  0: aaaabxyzpqrrrabbxyyyypqAzz
 1037:     abcxyzpqrrrabbxyyyypqAzz
 1038:  0: abcxyzpqrrrabbxyyyypqAzz
 1039:     aabcxyzpqrrrabbxyyyypqAzz
 1040:  0: aabcxyzpqrrrabbxyyyypqAzz
 1041:     aaabcxyzpqrrrabbxyyyypAzz
 1042:  0: aaabcxyzpqrrrabbxyyyypAzz
 1043:     aaabcxyzpqrrrabbxyyyypqAzz
 1044:  0: aaabcxyzpqrrrabbxyyyypqAzz
 1045:     aaabcxyzpqrrrabbxyyyypqqAzz
 1046:  0: aaabcxyzpqrrrabbxyyyypqqAzz
 1047:     aaabcxyzpqrrrabbxyyyypqqqAzz
 1048:  0: aaabcxyzpqrrrabbxyyyypqqqAzz
 1049:     aaabcxyzpqrrrabbxyyyypqqqqAzz
 1050:  0: aaabcxyzpqrrrabbxyyyypqqqqAzz
 1051:     aaabcxyzpqrrrabbxyyyypqqqqqAzz
 1052:  0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
 1053:     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
 1054:  0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
 1055:     aaaabcxyzpqrrrabbxyyyypqAzz
 1056:  0: aaaabcxyzpqrrrabbxyyyypqAzz
 1057:     abxyzzpqrrrabbxyyyypqAzz
 1058:  0: abxyzzpqrrrabbxyyyypqAzz
 1059:     aabxyzzzpqrrrabbxyyyypqAzz
 1060:  0: aabxyzzzpqrrrabbxyyyypqAzz
 1061:     aaabxyzzzzpqrrrabbxyyyypqAzz
 1062:  0: aaabxyzzzzpqrrrabbxyyyypqAzz
 1063:     aaaabxyzzzzpqrrrabbxyyyypqAzz
 1064:  0: aaaabxyzzzzpqrrrabbxyyyypqAzz
 1065:     abcxyzzpqrrrabbxyyyypqAzz
 1066:  0: abcxyzzpqrrrabbxyyyypqAzz
 1067:     aabcxyzzzpqrrrabbxyyyypqAzz
 1068:  0: aabcxyzzzpqrrrabbxyyyypqAzz
 1069:     aaabcxyzzzzpqrrrabbxyyyypqAzz
 1070:  0: aaabcxyzzzzpqrrrabbxyyyypqAzz
 1071:     aaaabcxyzzzzpqrrrabbxyyyypqAzz
 1072:  0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
 1073:     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
 1074:  0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
 1075:     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
 1076:  0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
 1077:     aaabcxyzpqrrrabbxyyyypABzz
 1078:  0: aaabcxyzpqrrrabbxyyyypABzz
 1079:     aaabcxyzpqrrrabbxyyyypABBzz
 1080:  0: aaabcxyzpqrrrabbxyyyypABBzz
 1081:     >>>aaabxyzpqrrrabbxyyyypqAzz
 1082:  0: aaabxyzpqrrrabbxyyyypqAzz
 1083:     >aaaabxyzpqrrrabbxyyyypqAzz
 1084:  0: aaaabxyzpqrrrabbxyyyypqAzz
 1085:     >>>>abcxyzpqrrrabbxyyyypqAzz
 1086:  0: abcxyzpqrrrabbxyyyypqAzz
 1087:     *** Failers
 1088: No match
 1089:     abxyzpqrrabbxyyyypqAzz
 1090: No match
 1091:     abxyzpqrrrrabbxyyyypqAzz
 1092: No match
 1093:     abxyzpqrrrabxyyyypqAzz
 1094: No match
 1095:     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
 1096: No match
 1097:     aaaabcxyzzzzpqrrrabbbxyyypqAzz
 1098: No match
 1099:     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
 1100: No match
 1101: 
 1102: /^(abc){1,2}zz/
 1103:     abczz
 1104:  0: abczz
 1105:     abcabczz
 1106:  0: abcabczz
 1107:     *** Failers
 1108: No match
 1109:     zz
 1110: No match
 1111:     abcabcabczz
 1112: No match
 1113:     >>abczz
 1114: No match
 1115: 
 1116: /^(b+?|a){1,2}?c/
 1117:     bc
 1118:  0: bc
 1119:     bbc
 1120:  0: bbc
 1121:     bbbc
 1122:  0: bbbc
 1123:     bac
 1124:  0: bac
 1125:     bbac
 1126:  0: bbac
 1127:     aac
 1128:  0: aac
 1129:     abbbbbbbbbbbc
 1130:  0: abbbbbbbbbbbc
 1131:     bbbbbbbbbbbac
 1132:  0: bbbbbbbbbbbac
 1133:     *** Failers
 1134: No match
 1135:     aaac
 1136: No match
 1137:     abbbbbbbbbbbac
 1138: No match
 1139: 
 1140: /^(b+|a){1,2}c/
 1141:     bc
 1142:  0: bc
 1143:     bbc
 1144:  0: bbc
 1145:     bbbc
 1146:  0: bbbc
 1147:     bac
 1148:  0: bac
 1149:     bbac
 1150:  0: bbac
 1151:     aac
 1152:  0: aac
 1153:     abbbbbbbbbbbc
 1154:  0: abbbbbbbbbbbc
 1155:     bbbbbbbbbbbac
 1156:  0: bbbbbbbbbbbac
 1157:     *** Failers
 1158: No match
 1159:     aaac
 1160: No match
 1161:     abbbbbbbbbbbac
 1162: No match
 1163: 
 1164: /^(b+|a){1,2}?bc/
 1165:     bbc
 1166:  0: bbc
 1167: 
 1168: /^(b*|ba){1,2}?bc/
 1169:     babc
 1170:  0: babc
 1171:     bbabc
 1172:  0: bbabc
 1173:     bababc
 1174:  0: bababc
 1175:     *** Failers
 1176: No match
 1177:     bababbc
 1178: No match
 1179:     babababc
 1180: No match
 1181: 
 1182: /^(ba|b*){1,2}?bc/
 1183:     babc
 1184:  0: babc
 1185:     bbabc
 1186:  0: bbabc
 1187:     bababc
 1188:  0: bababc
 1189:     *** Failers
 1190: No match
 1191:     bababbc
 1192: No match
 1193:     babababc
 1194: No match
 1195: 
 1196: /^\ca\cA\c[\c{\c:/
 1197:     \x01\x01\e;z
 1198:  0: \x01\x01\x1b;z
 1199: 
 1200: /^[ab\]cde]/
 1201:     athing
 1202:  0: a
 1203:     bthing
 1204:  0: b
 1205:     ]thing
 1206:  0: ]
 1207:     cthing
 1208:  0: c
 1209:     dthing
 1210:  0: d
 1211:     ething
 1212:  0: e
 1213:     *** Failers
 1214: No match
 1215:     fthing
 1216: No match
 1217:     [thing
 1218: No match
 1219:     \\thing
 1220: No match
 1221: 
 1222: /^[]cde]/
 1223:     ]thing
 1224:  0: ]
 1225:     cthing
 1226:  0: c
 1227:     dthing
 1228:  0: d
 1229:     ething
 1230:  0: e
 1231:     *** Failers
 1232: No match
 1233:     athing
 1234: No match
 1235:     fthing
 1236: No match
 1237: 
 1238: /^[^ab\]cde]/
 1239:     fthing
 1240:  0: f
 1241:     [thing
 1242:  0: [
 1243:     \\thing
 1244:  0: \
 1245:     *** Failers
 1246:  0: *
 1247:     athing
 1248: No match
 1249:     bthing
 1250: No match
 1251:     ]thing
 1252: No match
 1253:     cthing
 1254: No match
 1255:     dthing
 1256: No match
 1257:     ething
 1258: No match
 1259: 
 1260: /^[^]cde]/
 1261:     athing
 1262:  0: a
 1263:     fthing
 1264:  0: f
 1265:     *** Failers
 1266:  0: *
 1267:     ]thing
 1268: No match
 1269:     cthing
 1270: No match
 1271:     dthing
 1272: No match
 1273:     ething
 1274: No match
 1275: 
 1276: /^\/
 1277:     
 1278:  0: \x81
 1279: 
 1280: /^ÿ/
 1281:     ÿ
 1282:  0: \xff
 1283: 
 1284: /^[0-9]+$/
 1285:     0
 1286:  0: 0
 1287:     1
 1288:  0: 1
 1289:     2
 1290:  0: 2
 1291:     3
 1292:  0: 3
 1293:     4
 1294:  0: 4
 1295:     5
 1296:  0: 5
 1297:     6
 1298:  0: 6
 1299:     7
 1300:  0: 7
 1301:     8
 1302:  0: 8
 1303:     9
 1304:  0: 9
 1305:     10
 1306:  0: 10
 1307:     100
 1308:  0: 100
 1309:     *** Failers
 1310: No match
 1311:     abc
 1312: No match
 1313: 
 1314: /^.*nter/
 1315:     enter
 1316:  0: enter
 1317:     inter
 1318:  0: inter
 1319:     uponter
 1320:  0: uponter
 1321: 
 1322: /^xxx[0-9]+$/
 1323:     xxx0
 1324:  0: xxx0
 1325:     xxx1234
 1326:  0: xxx1234
 1327:     *** Failers
 1328: No match
 1329:     xxx
 1330: No match
 1331: 
 1332: /^.+[0-9][0-9][0-9]$/
 1333:     x123
 1334:  0: x123
 1335:     xx123
 1336:  0: xx123
 1337:     123456
 1338:  0: 123456
 1339:     *** Failers
 1340: No match
 1341:     123
 1342: No match
 1343:     x1234
 1344:  0: x1234
 1345: 
 1346: /^.+?[0-9][0-9][0-9]$/
 1347:     x123
 1348:  0: x123
 1349:     xx123
 1350:  0: xx123
 1351:     123456
 1352:  0: 123456
 1353:     *** Failers
 1354: No match
 1355:     123
 1356: No match
 1357:     x1234
 1358:  0: x1234
 1359: 
 1360: /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
 1361:     abc!pqr=apquxz.ixr.zzz.ac.uk
 1362:  0: abc!pqr=apquxz.ixr.zzz.ac.uk
 1363:     *** Failers
 1364: No match
 1365:     !pqr=apquxz.ixr.zzz.ac.uk
 1366: No match
 1367:     abc!=apquxz.ixr.zzz.ac.uk
 1368: No match
 1369:     abc!pqr=apquxz:ixr.zzz.ac.uk
 1370: No match
 1371:     abc!pqr=apquxz.ixr.zzz.ac.ukk
 1372: No match
 1373: 
 1374: /:/
 1375:     Well, we need a colon: somewhere
 1376:  0: :
 1377:     *** Fail if we don't
 1378: No match
 1379: 
 1380: /([\da-f:]+)$/i
 1381:     0abc
 1382:  0: 0abc
 1383:     abc
 1384:  0: abc
 1385:     fed
 1386:  0: fed
 1387:     E
 1388:  0: E
 1389:     ::
 1390:  0: ::
 1391:     5f03:12C0::932e
 1392:  0: 5f03:12C0::932e
 1393:     fed def
 1394:  0: def
 1395:     Any old stuff
 1396:  0: ff
 1397:     *** Failers
 1398: No match
 1399:     0zzz
 1400: No match
 1401:     gzzz
 1402: No match
 1403:     fed\x20
 1404: No match
 1405:     Any old rubbish
 1406: No match
 1407: 
 1408: /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
 1409:     .1.2.3
 1410:  0: .1.2.3
 1411:     A.12.123.0
 1412:  0: A.12.123.0
 1413:     *** Failers
 1414: No match
 1415:     .1.2.3333
 1416: No match
 1417:     1.2.3
 1418: No match
 1419:     1234.2.3
 1420: No match
 1421: 
 1422: /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
 1423:     1 IN SOA non-sp1 non-sp2(
 1424:  0: 1 IN SOA non-sp1 non-sp2(
 1425:     1    IN    SOA    non-sp1    non-sp2   (
 1426:  0: 1    IN    SOA    non-sp1    non-sp2   (
 1427:     *** Failers
 1428: No match
 1429:     1IN SOA non-sp1 non-sp2(
 1430: No match
 1431: 
 1432: /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
 1433:     a.
 1434:  0: a.
 1435:     Z.
 1436:  0: Z.
 1437:     2.
 1438:  0: 2.
 1439:     ab-c.pq-r.
 1440:  0: ab-c.pq-r.
 1441:     sxk.zzz.ac.uk.
 1442:  0: sxk.zzz.ac.uk.
 1443:     x-.y-.
 1444:  0: x-.y-.
 1445:     *** Failers
 1446: No match
 1447:     -abc.peq.
 1448: No match
 1449: 
 1450: /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
 1451:     *.a
 1452:  0: *.a
 1453:     *.b0-a
 1454:  0: *.b0-a
 1455:     *.c3-b.c
 1456:  0: *.c3-b.c
 1457:     *.c-a.b-c
 1458:  0: *.c-a.b-c
 1459:     *** Failers
 1460: No match
 1461:     *.0
 1462: No match
 1463:     *.a-
 1464: No match
 1465:     *.a-b.c-
 1466: No match
 1467:     *.c-a.0-c
 1468: No match
 1469: 
 1470: /^(?=ab(de))(abd)(e)/
 1471:     abde
 1472:  0: abde
 1473: 
 1474: /^(?!(ab)de|x)(abd)(f)/
 1475:     abdf
 1476:  0: abdf
 1477: 
 1478: /^(?=(ab(cd)))(ab)/
 1479:     abcd
 1480:  0: ab
 1481: 
 1482: /^[\da-f](\.[\da-f])*$/i
 1483:     a.b.c.d
 1484:  0: a.b.c.d
 1485:     A.B.C.D
 1486:  0: A.B.C.D
 1487:     a.b.c.1.2.3.C
 1488:  0: a.b.c.1.2.3.C
 1489: 
 1490: /^\".*\"\s*(;.*)?$/
 1491:     \"1234\"
 1492:  0: "1234"
 1493:     \"abcd\" ;
 1494:  0: "abcd" ;
 1495:     \"\" ; rhubarb
 1496:  0: "" ; rhubarb
 1497:     *** Failers
 1498: No match
 1499:     \"1234\" : things
 1500: No match
 1501: 
 1502: /^$/
 1503:     \
 1504:  0: 
 1505:     *** Failers
 1506: No match
 1507: 
 1508: /   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
 1509:     ab c
 1510:  0: ab c
 1511:     *** Failers
 1512: No match
 1513:     abc
 1514: No match
 1515:     ab cde
 1516: No match
 1517: 
 1518: /(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
 1519:     ab c
 1520:  0: ab c
 1521:     *** Failers
 1522: No match
 1523:     abc
 1524: No match
 1525:     ab cde
 1526: No match
 1527: 
 1528: /^   a\ b[c ]d       $/x
 1529:     a bcd
 1530:  0: a bcd
 1531:     a b d
 1532:  0: a b d
 1533:     *** Failers
 1534: No match
 1535:     abcd
 1536: No match
 1537:     ab d
 1538: No match
 1539: 
 1540: /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
 1541:     abcdefhijklm
 1542:  0: abcdefhijklm
 1543: 
 1544: /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
 1545:     abcdefhijklm
 1546:  0: abcdefhijklm
 1547: 
 1548: /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
 1549:     a+ Z0+\x08\n\x1d\x12
 1550:  0: a+ Z0+\x08\x0a\x1d\x12
 1551: 
 1552: /^[.^$|()*+?{,}]+/
 1553:     .^\$(*+)|{?,?}
 1554:  0: .^$(*+)|{?,?}
 1555: 
 1556: /^a*\w/
 1557:     z
 1558:  0: z
 1559:     az
 1560:  0: az
 1561:  1: a
 1562:     aaaz
 1563:  0: aaaz
 1564:  1: aaa
 1565:  2: aa
 1566:  3: a
 1567:     a
 1568:  0: a
 1569:     aa
 1570:  0: aa
 1571:  1: a
 1572:     aaaa
 1573:  0: aaaa
 1574:  1: aaa
 1575:  2: aa
 1576:  3: a
 1577:     a+
 1578:  0: a
 1579:     aa+
 1580:  0: aa
 1581:  1: a
 1582: 
 1583: /^a*?\w/
 1584:     z
 1585:  0: z
 1586:     az
 1587:  0: az
 1588:  1: a
 1589:     aaaz
 1590:  0: aaaz
 1591:  1: aaa
 1592:  2: aa
 1593:  3: a
 1594:     a
 1595:  0: a
 1596:     aa
 1597:  0: aa
 1598:  1: a
 1599:     aaaa
 1600:  0: aaaa
 1601:  1: aaa
 1602:  2: aa
 1603:  3: a
 1604:     a+
 1605:  0: a
 1606:     aa+
 1607:  0: aa
 1608:  1: a
 1609: 
 1610: /^a+\w/
 1611:     az
 1612:  0: az
 1613:     aaaz
 1614:  0: aaaz
 1615:  1: aaa
 1616:  2: aa
 1617:     aa
 1618:  0: aa
 1619:     aaaa
 1620:  0: aaaa
 1621:  1: aaa
 1622:  2: aa
 1623:     aa+
 1624:  0: aa
 1625: 
 1626: /^a+?\w/
 1627:     az
 1628:  0: az
 1629:     aaaz
 1630:  0: aaaz
 1631:  1: aaa
 1632:  2: aa
 1633:     aa
 1634:  0: aa
 1635:     aaaa
 1636:  0: aaaa
 1637:  1: aaa
 1638:  2: aa
 1639:     aa+
 1640:  0: aa
 1641: 
 1642: /^\d{8}\w{2,}/
 1643:     1234567890
 1644:  0: 1234567890
 1645:     12345678ab
 1646:  0: 12345678ab
 1647:     12345678__
 1648:  0: 12345678__
 1649:     *** Failers
 1650: No match
 1651:     1234567
 1652: No match
 1653: 
 1654: /^[aeiou\d]{4,5}$/
 1655:     uoie
 1656:  0: uoie
 1657:     1234
 1658:  0: 1234
 1659:     12345
 1660:  0: 12345
 1661:     aaaaa
 1662:  0: aaaaa
 1663:     *** Failers
 1664: No match
 1665:     123456
 1666: No match
 1667: 
 1668: /^[aeiou\d]{4,5}?/
 1669:     uoie
 1670:  0: uoie
 1671:     1234
 1672:  0: 1234
 1673:     12345
 1674:  0: 12345
 1675:  1: 1234
 1676:     aaaaa
 1677:  0: aaaaa
 1678:  1: aaaa
 1679:     123456
 1680:  0: 12345
 1681:  1: 1234
 1682: 
 1683: /^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]/
 1684:     From abcd  Mon Sep 01 12:33:02 1997
 1685:  0: From abcd  Mon Sep 01 12:33
 1686: 
 1687: /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
 1688:     From abcd  Mon Sep 01 12:33:02 1997
 1689:  0: From abcd  Mon Sep 01 12:33
 1690:     From abcd  Mon Sep  1 12:33:02 1997
 1691:  0: From abcd  Mon Sep  1 12:33
 1692:     *** Failers
 1693: No match
 1694:     From abcd  Sep 01 12:33:02 1997
 1695: No match
 1696: 
 1697: /^12.34/s
 1698:     12\n34
 1699:  0: 12\x0a34
 1700:     12\r34
 1701:  0: 12\x0d34
 1702: 
 1703: /\w+(?=\t)/
 1704:     the quick brown\t fox
 1705:  0: brown
 1706: 
 1707: /foo(?!bar)(.*)/
 1708:     foobar is foolish see?
 1709:  0: foolish see?
 1710: 
 1711: /(?:(?!foo)...|^.{0,2})bar(.*)/
 1712:     foobar crowbar etc
 1713:  0: rowbar etc
 1714:     barrel
 1715:  0: barrel
 1716:     2barrel
 1717:  0: 2barrel
 1718:     A barrel
 1719:  0: A barrel
 1720: 
 1721: /^(\D*)(?=\d)(?!123)/
 1722:     abc456
 1723:  0: abc
 1724:     *** Failers
 1725: No match
 1726:     abc123
 1727: No match
 1728: 
 1729: /^1234(?# test newlines
 1730:   inside)/
 1731:     1234
 1732:  0: 1234
 1733: 
 1734: /^1234 #comment in extended re
 1735:   /x
 1736:     1234
 1737:  0: 1234
 1738: 
 1739: /#rhubarb
 1740:   abcd/x
 1741:     abcd
 1742:  0: abcd
 1743: 
 1744: /^abcd#rhubarb/x
 1745:     abcd
 1746:  0: abcd
 1747: 
 1748: /(?!^)abc/
 1749:     the abc
 1750:  0: abc
 1751:     *** Failers
 1752: No match
 1753:     abc
 1754: No match
 1755: 
 1756: /(?=^)abc/
 1757:     abc
 1758:  0: abc
 1759:     *** Failers
 1760: No match
 1761:     the abc
 1762: No match
 1763: 
 1764: /^[ab]{1,3}(ab*|b)/O
 1765:     aabbbbb
 1766:  0: aabbbbb
 1767:  1: aabbbb
 1768:  2: aabbb
 1769:  3: aabb
 1770:  4: aab
 1771:  5: aa
 1772: 
 1773: /^[ab]{1,3}?(ab*|b)/O
 1774:     aabbbbb
 1775:  0: aabbbbb
 1776:  1: aabbbb
 1777:  2: aabbb
 1778:  3: aabb
 1779:  4: aab
 1780:  5: aa
 1781: 
 1782: /^[ab]{1,3}?(ab*?|b)/O
 1783:     aabbbbb
 1784:  0: aabbbbb
 1785:  1: aabbbb
 1786:  2: aabbb
 1787:  3: aabb
 1788:  4: aab
 1789:  5: aa
 1790: 
 1791: /^[ab]{1,3}(ab*?|b)/O
 1792:     aabbbbb
 1793:  0: aabbbbb
 1794:  1: aabbbb
 1795:  2: aabbb
 1796:  3: aabb
 1797:  4: aab
 1798:  5: aa
 1799: 
 1800: /  (?: [\040\t] |  \(
 1801: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1802: \)  )*                          # optional leading comment
 1803: (?:    (?:
 1804: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1805: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1806: |
 1807: " (?:                      # opening quote...
 1808: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 1809: |                     #    or
 1810: \\ [^\x80-\xff]           #   Escaped something (something != CR)
 1811: )* "  # closing quote
 1812: )                    # initial word
 1813: (?:  (?: [\040\t] |  \(
 1814: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1815: \)  )*  \.  (?: [\040\t] |  \(
 1816: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1817: \)  )*   (?:
 1818: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1819: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1820: |
 1821: " (?:                      # opening quote...
 1822: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 1823: |                     #    or
 1824: \\ [^\x80-\xff]           #   Escaped something (something != CR)
 1825: )* "  # closing quote
 1826: )  )* # further okay, if led by a period
 1827: (?: [\040\t] |  \(
 1828: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1829: \)  )*  @  (?: [\040\t] |  \(
 1830: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1831: \)  )*    (?:
 1832: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1833: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1834: |   \[                         # [
 1835: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1836: \]                        #           ]
 1837: )                           # initial subdomain
 1838: (?:                                  #
 1839: (?: [\040\t] |  \(
 1840: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1841: \)  )*  \.                        # if led by a period...
 1842: (?: [\040\t] |  \(
 1843: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1844: \)  )*   (?:
 1845: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1846: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1847: |   \[                         # [
 1848: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1849: \]                        #           ]
 1850: )                     #   ...further okay
 1851: )*
 1852: # address
 1853: |                     #  or
 1854: (?:
 1855: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1856: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1857: |
 1858: " (?:                      # opening quote...
 1859: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 1860: |                     #    or
 1861: \\ [^\x80-\xff]           #   Escaped something (something != CR)
 1862: )* "  # closing quote
 1863: )             # one word, optionally followed by....
 1864: (?:
 1865: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
 1866: \(
 1867: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1868: \)       |  # comments, or...
 1869: 
 1870: " (?:                      # opening quote...
 1871: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 1872: |                     #    or
 1873: \\ [^\x80-\xff]           #   Escaped something (something != CR)
 1874: )* "  # closing quote
 1875: # quoted strings
 1876: )*
 1877: <  (?: [\040\t] |  \(
 1878: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1879: \)  )*                     # leading <
 1880: (?:  @  (?: [\040\t] |  \(
 1881: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1882: \)  )*    (?:
 1883: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1884: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1885: |   \[                         # [
 1886: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1887: \]                        #           ]
 1888: )                           # initial subdomain
 1889: (?:                                  #
 1890: (?: [\040\t] |  \(
 1891: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1892: \)  )*  \.                        # if led by a period...
 1893: (?: [\040\t] |  \(
 1894: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1895: \)  )*   (?:
 1896: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1897: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1898: |   \[                         # [
 1899: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1900: \]                        #           ]
 1901: )                     #   ...further okay
 1902: )*
 1903: 
 1904: (?:  (?: [\040\t] |  \(
 1905: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1906: \)  )*  ,  (?: [\040\t] |  \(
 1907: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1908: \)  )*  @  (?: [\040\t] |  \(
 1909: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1910: \)  )*    (?:
 1911: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1912: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1913: |   \[                         # [
 1914: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1915: \]                        #           ]
 1916: )                           # initial subdomain
 1917: (?:                                  #
 1918: (?: [\040\t] |  \(
 1919: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1920: \)  )*  \.                        # if led by a period...
 1921: (?: [\040\t] |  \(
 1922: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1923: \)  )*   (?:
 1924: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1925: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1926: |   \[                         # [
 1927: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1928: \]                        #           ]
 1929: )                     #   ...further okay
 1930: )*
 1931: )* # further okay, if led by comma
 1932: :                                # closing colon
 1933: (?: [\040\t] |  \(
 1934: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1935: \)  )*  )? #       optional route
 1936: (?:
 1937: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1938: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1939: |
 1940: " (?:                      # opening quote...
 1941: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 1942: |                     #    or
 1943: \\ [^\x80-\xff]           #   Escaped something (something != CR)
 1944: )* "  # closing quote
 1945: )                    # initial word
 1946: (?:  (?: [\040\t] |  \(
 1947: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1948: \)  )*  \.  (?: [\040\t] |  \(
 1949: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1950: \)  )*   (?:
 1951: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1952: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1953: |
 1954: " (?:                      # opening quote...
 1955: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 1956: |                     #    or
 1957: \\ [^\x80-\xff]           #   Escaped something (something != CR)
 1958: )* "  # closing quote
 1959: )  )* # further okay, if led by a period
 1960: (?: [\040\t] |  \(
 1961: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1962: \)  )*  @  (?: [\040\t] |  \(
 1963: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1964: \)  )*    (?:
 1965: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1966: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1967: |   \[                         # [
 1968: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1969: \]                        #           ]
 1970: )                           # initial subdomain
 1971: (?:                                  #
 1972: (?: [\040\t] |  \(
 1973: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1974: \)  )*  \.                        # if led by a period...
 1975: (?: [\040\t] |  \(
 1976: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1977: \)  )*   (?:
 1978: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1979: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1980: |   \[                         # [
 1981: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1982: \]                        #           ]
 1983: )                     #   ...further okay
 1984: )*
 1985: #       address spec
 1986: (?: [\040\t] |  \(
 1987: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1988: \)  )*  > #                  trailing >
 1989: # name and address
 1990: )  (?: [\040\t] |  \(
 1991: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1992: \)  )*                       # optional trailing comment
 1993: /x
 1994:     Alan Other <user\@dom.ain>
 1995:  0: Alan Other <user@dom.ain>
 1996:     <user\@dom.ain>
 1997:  0: user@dom.ain
 1998:  1: user@dom
 1999:     user\@dom.ain
 2000:  0: user@dom.ain
 2001:  1: user@dom
 2002:     \"A. Other\" <user.1234\@dom.ain> (a comment)
 2003:  0: "A. Other" <user.1234@dom.ain> (a comment)
 2004:  1: "A. Other" <user.1234@dom.ain> 
 2005:  2: "A. Other" <user.1234@dom.ain>
 2006:     A. Other <user.1234\@dom.ain> (a comment)
 2007:  0:  Other <user.1234@dom.ain> (a comment)
 2008:  1:  Other <user.1234@dom.ain> 
 2009:  2:  Other <user.1234@dom.ain>
 2010:     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
 2011:  0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
 2012:  1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re
 2013:     A missing angle <user\@some.where
 2014:  0: user@some.where
 2015:  1: user@some
 2016:     *** Failers
 2017: No match
 2018:     The quick brown fox
 2019: No match
 2020: 
 2021: /[\040\t]*                    # Nab whitespace.
 2022: (?:
 2023: \(                              #  (
 2024: [^\\\x80-\xff\n\015()] *                             #     normal*
 2025: (?:                                 #       (
 2026: (?:  \\ [^\x80-\xff]  |
 2027: \(                            #  (
 2028: [^\\\x80-\xff\n\015()] *                            #     normal*
 2029: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2030: \)                           #                       )
 2031: )    #         special
 2032: [^\\\x80-\xff\n\015()] *                         #         normal*
 2033: )*                                  #            )*
 2034: \)                             #                )
 2035: [\040\t]* )*    # If comment found, allow more spaces.
 2036: # optional leading comment
 2037: (?:
 2038: (?:
 2039: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 2040: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 2041: # Atom
 2042: |                       #  or
 2043: "                                     # "
 2044: [^\\\x80-\xff\n\015"] *                            #   normal
 2045: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 2046: "                                     #        "
 2047: # Quoted string
 2048: )
 2049: [\040\t]*                    # Nab whitespace.
 2050: (?:
 2051: \(                              #  (
 2052: [^\\\x80-\xff\n\015()] *                             #     normal*
 2053: (?:                                 #       (
 2054: (?:  \\ [^\x80-\xff]  |
 2055: \(                            #  (
 2056: [^\\\x80-\xff\n\015()] *                            #     normal*
 2057: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2058: \)                           #                       )
 2059: )    #         special
 2060: [^\\\x80-\xff\n\015()] *                         #         normal*
 2061: )*                                  #            )*
 2062: \)                             #                )
 2063: [\040\t]* )*    # If comment found, allow more spaces.
 2064: (?:
 2065: \.
 2066: [\040\t]*                    # Nab whitespace.
 2067: (?:
 2068: \(                              #  (
 2069: [^\\\x80-\xff\n\015()] *                             #     normal*
 2070: (?:                                 #       (
 2071: (?:  \\ [^\x80-\xff]  |
 2072: \(                            #  (
 2073: [^\\\x80-\xff\n\015()] *                            #     normal*
 2074: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2075: \)                           #                       )
 2076: )    #         special
 2077: [^\\\x80-\xff\n\015()] *                         #         normal*
 2078: )*                                  #            )*
 2079: \)                             #                )
 2080: [\040\t]* )*    # If comment found, allow more spaces.
 2081: (?:
 2082: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 2083: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 2084: # Atom
 2085: |                       #  or
 2086: "                                     # "
 2087: [^\\\x80-\xff\n\015"] *                            #   normal
 2088: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 2089: "                                     #        "
 2090: # Quoted string
 2091: )
 2092: [\040\t]*                    # Nab whitespace.
 2093: (?:
 2094: \(                              #  (
 2095: [^\\\x80-\xff\n\015()] *                             #     normal*
 2096: (?:                                 #       (
 2097: (?:  \\ [^\x80-\xff]  |
 2098: \(                            #  (
 2099: [^\\\x80-\xff\n\015()] *                            #     normal*
 2100: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2101: \)                           #                       )
 2102: )    #         special
 2103: [^\\\x80-\xff\n\015()] *                         #         normal*
 2104: )*                                  #            )*
 2105: \)                             #                )
 2106: [\040\t]* )*    # If comment found, allow more spaces.
 2107: # additional words
 2108: )*
 2109: @
 2110: [\040\t]*                    # Nab whitespace.
 2111: (?:
 2112: \(                              #  (
 2113: [^\\\x80-\xff\n\015()] *                             #     normal*
 2114: (?:                                 #       (
 2115: (?:  \\ [^\x80-\xff]  |
 2116: \(                            #  (
 2117: [^\\\x80-\xff\n\015()] *                            #     normal*
 2118: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2119: \)                           #                       )
 2120: )    #         special
 2121: [^\\\x80-\xff\n\015()] *                         #         normal*
 2122: )*                                  #            )*
 2123: \)                             #                )
 2124: [\040\t]* )*    # If comment found, allow more spaces.
 2125: (?:
 2126: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 2127: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 2128: |
 2129: \[                            # [
 2130: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 2131: \]                           #           ]
 2132: )
 2133: [\040\t]*                    # Nab whitespace.
 2134: (?:
 2135: \(                              #  (
 2136: [^\\\x80-\xff\n\015()] *                             #     normal*
 2137: (?:                                 #       (
 2138: (?:  \\ [^\x80-\xff]  |
 2139: \(                            #  (
 2140: [^\\\x80-\xff\n\015()] *                            #     normal*
 2141: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2142: \)                           #                       )
 2143: )    #         special
 2144: [^\\\x80-\xff\n\015()] *                         #         normal*
 2145: )*                                  #            )*
 2146: \)                             #                )
 2147: [\040\t]* )*    # If comment found, allow more spaces.
 2148: # optional trailing comments
 2149: (?:
 2150: \.
 2151: [\040\t]*                    # Nab whitespace.
 2152: (?:
 2153: \(                              #  (
 2154: [^\\\x80-\xff\n\015()] *                             #     normal*
 2155: (?:                                 #       (
 2156: (?:  \\ [^\x80-\xff]  |
 2157: \(                            #  (
 2158: [^\\\x80-\xff\n\015()] *                            #     normal*
 2159: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2160: \)                           #                       )
 2161: )    #         special
 2162: [^\\\x80-\xff\n\015()] *                         #         normal*
 2163: )*                                  #            )*
 2164: \)                             #                )
 2165: [\040\t]* )*    # If comment found, allow more spaces.
 2166: (?:
 2167: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 2168: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 2169: |
 2170: \[                            # [
 2171: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 2172: \]                           #           ]
 2173: )
 2174: [\040\t]*                    # Nab whitespace.
 2175: (?:
 2176: \(                              #  (
 2177: [^\\\x80-\xff\n\015()] *                             #     normal*
 2178: (?:                                 #       (
 2179: (?:  \\ [^\x80-\xff]  |
 2180: \(                            #  (
 2181: [^\\\x80-\xff\n\015()] *                            #     normal*
 2182: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2183: \)                           #                       )
 2184: )    #         special
 2185: [^\\\x80-\xff\n\015()] *                         #         normal*
 2186: )*                                  #            )*
 2187: \)                             #                )
 2188: [\040\t]* )*    # If comment found, allow more spaces.
 2189: # optional trailing comments
 2190: )*
 2191: # address
 2192: |                             #  or
 2193: (?:
 2194: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 2195: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 2196: # Atom
 2197: |                       #  or
 2198: "                                     # "
 2199: [^\\\x80-\xff\n\015"] *                            #   normal
 2200: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 2201: "                                     #        "
 2202: # Quoted string
 2203: )
 2204: # leading word
 2205: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
 2206: (?:
 2207: (?:
 2208: \(                              #  (
 2209: [^\\\x80-\xff\n\015()] *                             #     normal*
 2210: (?:                                 #       (
 2211: (?:  \\ [^\x80-\xff]  |
 2212: \(                            #  (
 2213: [^\\\x80-\xff\n\015()] *                            #     normal*
 2214: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2215: \)                           #                       )
 2216: )    #         special
 2217: [^\\\x80-\xff\n\015()] *                         #         normal*
 2218: )*                                  #            )*
 2219: \)                             #                )
 2220: |
 2221: "                                     # "
 2222: [^\\\x80-\xff\n\015"] *                            #   normal
 2223: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 2224: "                                     #        "
 2225: ) # "special" comment or quoted string
 2226: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
 2227: )*
 2228: <
 2229: [\040\t]*                    # Nab whitespace.
 2230: (?:
 2231: \(                              #  (
 2232: [^\\\x80-\xff\n\015()] *                             #     normal*
 2233: (?:                                 #       (
 2234: (?:  \\ [^\x80-\xff]  |
 2235: \(                            #  (
 2236: [^\\\x80-\xff\n\015()] *                            #     normal*
 2237: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2238: \)                           #                       )
 2239: )    #         special
 2240: [^\\\x80-\xff\n\015()] *                         #         normal*
 2241: )*                                  #            )*
 2242: \)                             #                )
 2243: [\040\t]* )*    # If comment found, allow more spaces.
 2244: # <
 2245: (?:
 2246: @
 2247: [\040\t]*                    # Nab whitespace.
 2248: (?:
 2249: \(                              #  (
 2250: [^\\\x80-\xff\n\015()] *                             #     normal*
 2251: (?:                                 #       (
 2252: (?:  \\ [^\x80-\xff]  |
 2253: \(                            #  (
 2254: [^\\\x80-\xff\n\015()] *                            #     normal*
 2255: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2256: \)                           #                       )
 2257: )    #         special
 2258: [^\\\x80-\xff\n\015()] *                         #         normal*
 2259: )*                                  #            )*
 2260: \)                             #                )
 2261: [\040\t]* )*    # If comment found, allow more spaces.
 2262: (?:
 2263: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 2264: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 2265: |
 2266: \[                            # [
 2267: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 2268: \]                           #           ]
 2269: )
 2270: [\040\t]*                    # Nab whitespace.
 2271: (?:
 2272: \(                              #  (
 2273: [^\\\x80-\xff\n\015()] *                             #     normal*
 2274: (?:                                 #       (
 2275: (?:  \\ [^\x80-\xff]  |
 2276: \(                            #  (
 2277: [^\\\x80-\xff\n\015()] *                            #     normal*
 2278: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2279: \)                           #                       )
 2280: )    #         special
 2281: [^\\\x80-\xff\n\015()] *                         #         normal*
 2282: )*                                  #            )*
 2283: \)                             #                )
 2284: [\040\t]* )*    # If comment found, allow more spaces.
 2285: # optional trailing comments
 2286: (?:
 2287: \.
 2288: [\040\t]*                    # Nab whitespace.
 2289: (?:
 2290: \(                              #  (
 2291: [^\\\x80-\xff\n\015()] *                             #     normal*
 2292: (?:                                 #       (
 2293: (?:  \\ [^\x80-\xff]  |
 2294: \(                            #  (
 2295: [^\\\x80-\xff\n\015()] *                            #     normal*
 2296: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2297: \)                           #                       )
 2298: )    #         special
 2299: [^\\\x80-\xff\n\015()] *                         #         normal*
 2300: )*                                  #            )*
 2301: \)                             #                )
 2302: [\040\t]* )*    # If comment found, allow more spaces.
 2303: (?:
 2304: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 2305: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 2306: |
 2307: \[                            # [
 2308: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 2309: \]                           #           ]
 2310: )
 2311: [\040\t]*                    # Nab whitespace.
 2312: (?:
 2313: \(                              #  (
 2314: [^\\\x80-\xff\n\015()] *                             #     normal*
 2315: (?:                                 #       (
 2316: (?:  \\ [^\x80-\xff]  |
 2317: \(                            #  (
 2318: [^\\\x80-\xff\n\015()] *                            #     normal*
 2319: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2320: \)                           #                       )
 2321: )    #         special
 2322: [^\\\x80-\xff\n\015()] *                         #         normal*
 2323: )*                                  #            )*
 2324: \)                             #                )
 2325: [\040\t]* )*    # If comment found, allow more spaces.
 2326: # optional trailing comments
 2327: )*
 2328: (?: ,
 2329: [\040\t]*                    # Nab whitespace.
 2330: (?:
 2331: \(                              #  (
 2332: [^\\\x80-\xff\n\015()] *                             #     normal*
 2333: (?:                                 #       (
 2334: (?:  \\ [^\x80-\xff]  |
 2335: \(                            #  (
 2336: [^\\\x80-\xff\n\015()] *                            #     normal*
 2337: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2338: \)                           #                       )
 2339: )    #         special
 2340: [^\\\x80-\xff\n\015()] *                         #         normal*
 2341: )*                                  #            )*
 2342: \)                             #                )
 2343: [\040\t]* )*    # If comment found, allow more spaces.
 2344: @
 2345: [\040\t]*                    # Nab whitespace.
 2346: (?:
 2347: \(                              #  (
 2348: [^\\\x80-\xff\n\015()] *                             #     normal*
 2349: (?:                                 #       (
 2350: (?:  \\ [^\x80-\xff]  |
 2351: \(                            #  (
 2352: [^\\\x80-\xff\n\015()] *                            #     normal*
 2353: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2354: \)                           #                       )
 2355: )    #         special
 2356: [^\\\x80-\xff\n\015()] *                         #         normal*
 2357: )*                                  #            )*
 2358: \)                             #                )
 2359: [\040\t]* )*    # If comment found, allow more spaces.
 2360: (?:
 2361: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 2362: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 2363: |
 2364: \[                            # [
 2365: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 2366: \]                           #           ]
 2367: )
 2368: [\040\t]*                    # Nab whitespace.
 2369: (?:
 2370: \(                              #  (
 2371: [^\\\x80-\xff\n\015()] *                             #     normal*
 2372: (?:                                 #       (
 2373: (?:  \\ [^\x80-\xff]  |
 2374: \(                            #  (
 2375: [^\\\x80-\xff\n\015()] *                            #     normal*
 2376: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2377: \)                           #                       )
 2378: )    #         special
 2379: [^\\\x80-\xff\n\015()] *                         #         normal*
 2380: )*                                  #            )*
 2381: \)                             #                )
 2382: [\040\t]* )*    # If comment found, allow more spaces.
 2383: # optional trailing comments
 2384: (?:
 2385: \.
 2386: [\040\t]*                    # Nab whitespace.
 2387: (?:
 2388: \(                              #  (
 2389: [^\\\x80-\xff\n\015()] *                             #     normal*
 2390: (?:                                 #       (
 2391: (?:  \\ [^\x80-\xff]  |
 2392: \(                            #  (
 2393: [^\\\x80-\xff\n\015()] *                            #     normal*
 2394: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2395: \)                           #                       )
 2396: )    #         special
 2397: [^\\\x80-\xff\n\015()] *                         #         normal*
 2398: )*                                  #            )*
 2399: \)                             #                )
 2400: [\040\t]* )*    # If comment found, allow more spaces.
 2401: (?:
 2402: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 2403: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 2404: |
 2405: \[                            # [
 2406: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 2407: \]                           #           ]
 2408: )
 2409: [\040\t]*                    # Nab whitespace.
 2410: (?:
 2411: \(                              #  (
 2412: [^\\\x80-\xff\n\015()] *                             #     normal*
 2413: (?:                                 #       (
 2414: (?:  \\ [^\x80-\xff]  |
 2415: \(                            #  (
 2416: [^\\\x80-\xff\n\015()] *                            #     normal*
 2417: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2418: \)                           #                       )
 2419: )    #         special
 2420: [^\\\x80-\xff\n\015()] *                         #         normal*
 2421: )*                                  #            )*
 2422: \)                             #                )
 2423: [\040\t]* )*    # If comment found, allow more spaces.
 2424: # optional trailing comments
 2425: )*
 2426: )*  # additional domains
 2427: :
 2428: [\040\t]*                    # Nab whitespace.
 2429: (?:
 2430: \(                              #  (
 2431: [^\\\x80-\xff\n\015()] *                             #     normal*
 2432: (?:                                 #       (
 2433: (?:  \\ [^\x80-\xff]  |
 2434: \(                            #  (
 2435: [^\\\x80-\xff\n\015()] *                            #     normal*
 2436: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2437: \)                           #                       )
 2438: )    #         special
 2439: [^\\\x80-\xff\n\015()] *                         #         normal*
 2440: )*                                  #            )*
 2441: \)                             #                )
 2442: [\040\t]* )*    # If comment found, allow more spaces.
 2443: # optional trailing comments
 2444: )?     #       optional route
 2445: (?:
 2446: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 2447: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 2448: # Atom
 2449: |                       #  or
 2450: "                                     # "
 2451: [^\\\x80-\xff\n\015"] *                            #   normal
 2452: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 2453: "                                     #        "
 2454: # Quoted string
 2455: )
 2456: [\040\t]*                    # Nab whitespace.
 2457: (?:
 2458: \(                              #  (
 2459: [^\\\x80-\xff\n\015()] *                             #     normal*
 2460: (?:                                 #       (
 2461: (?:  \\ [^\x80-\xff]  |
 2462: \(                            #  (
 2463: [^\\\x80-\xff\n\015()] *                            #     normal*
 2464: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2465: \)                           #                       )
 2466: )    #         special
 2467: [^\\\x80-\xff\n\015()] *                         #         normal*
 2468: )*                                  #            )*
 2469: \)                             #                )
 2470: [\040\t]* )*    # If comment found, allow more spaces.
 2471: (?:
 2472: \.
 2473: [\040\t]*                    # Nab whitespace.
 2474: (?:
 2475: \(                              #  (
 2476: [^\\\x80-\xff\n\015()] *                             #     normal*
 2477: (?:                                 #       (
 2478: (?:  \\ [^\x80-\xff]  |
 2479: \(                            #  (
 2480: [^\\\x80-\xff\n\015()] *                            #     normal*
 2481: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2482: \)                           #                       )
 2483: )    #         special
 2484: [^\\\x80-\xff\n\015()] *                         #         normal*
 2485: )*                                  #            )*
 2486: \)                             #                )
 2487: [\040\t]* )*    # If comment found, allow more spaces.
 2488: (?:
 2489: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 2490: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 2491: # Atom
 2492: |                       #  or
 2493: "                                     # "
 2494: [^\\\x80-\xff\n\015"] *                            #   normal
 2495: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 2496: "                                     #        "
 2497: # Quoted string
 2498: )
 2499: [\040\t]*                    # Nab whitespace.
 2500: (?:
 2501: \(                              #  (
 2502: [^\\\x80-\xff\n\015()] *                             #     normal*
 2503: (?:                                 #       (
 2504: (?:  \\ [^\x80-\xff]  |
 2505: \(                            #  (
 2506: [^\\\x80-\xff\n\015()] *                            #     normal*
 2507: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2508: \)                           #                       )
 2509: )    #         special
 2510: [^\\\x80-\xff\n\015()] *                         #         normal*
 2511: )*                                  #            )*
 2512: \)                             #                )
 2513: [\040\t]* )*    # If comment found, allow more spaces.
 2514: # additional words
 2515: )*
 2516: @
 2517: [\040\t]*                    # Nab whitespace.
 2518: (?:
 2519: \(                              #  (
 2520: [^\\\x80-\xff\n\015()] *                             #     normal*
 2521: (?:                                 #       (
 2522: (?:  \\ [^\x80-\xff]  |
 2523: \(                            #  (
 2524: [^\\\x80-\xff\n\015()] *                            #     normal*
 2525: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2526: \)                           #                       )
 2527: )    #         special
 2528: [^\\\x80-\xff\n\015()] *                         #         normal*
 2529: )*                                  #            )*
 2530: \)                             #                )
 2531: [\040\t]* )*    # If comment found, allow more spaces.
 2532: (?:
 2533: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 2534: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 2535: |
 2536: \[                            # [
 2537: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 2538: \]                           #           ]
 2539: )
 2540: [\040\t]*                    # Nab whitespace.
 2541: (?:
 2542: \(                              #  (
 2543: [^\\\x80-\xff\n\015()] *                             #     normal*
 2544: (?:                                 #       (
 2545: (?:  \\ [^\x80-\xff]  |
 2546: \(                            #  (
 2547: [^\\\x80-\xff\n\015()] *                            #     normal*
 2548: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2549: \)                           #                       )
 2550: )    #         special
 2551: [^\\\x80-\xff\n\015()] *                         #         normal*
 2552: )*                                  #            )*
 2553: \)                             #                )
 2554: [\040\t]* )*    # If comment found, allow more spaces.
 2555: # optional trailing comments
 2556: (?:
 2557: \.
 2558: [\040\t]*                    # Nab whitespace.
 2559: (?:
 2560: \(                              #  (
 2561: [^\\\x80-\xff\n\015()] *                             #     normal*
 2562: (?:                                 #       (
 2563: (?:  \\ [^\x80-\xff]  |
 2564: \(                            #  (
 2565: [^\\\x80-\xff\n\015()] *                            #     normal*
 2566: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2567: \)                           #                       )
 2568: )    #         special
 2569: [^\\\x80-\xff\n\015()] *                         #         normal*
 2570: )*                                  #            )*
 2571: \)                             #                )
 2572: [\040\t]* )*    # If comment found, allow more spaces.
 2573: (?:
 2574: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 2575: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 2576: |
 2577: \[                            # [
 2578: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 2579: \]                           #           ]
 2580: )
 2581: [\040\t]*                    # Nab whitespace.
 2582: (?:
 2583: \(                              #  (
 2584: [^\\\x80-\xff\n\015()] *                             #     normal*
 2585: (?:                                 #       (
 2586: (?:  \\ [^\x80-\xff]  |
 2587: \(                            #  (
 2588: [^\\\x80-\xff\n\015()] *                            #     normal*
 2589: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 2590: \)                           #                       )
 2591: )    #         special
 2592: [^\\\x80-\xff\n\015()] *                         #         normal*
 2593: )*                                  #            )*
 2594: \)                             #                )
 2595: [\040\t]* )*    # If comment found, allow more spaces.
 2596: # optional trailing comments
 2597: )*
 2598: #       address spec
 2599: >                    #                 >
 2600: # name and address
 2601: )
 2602: /x
 2603:     Alan Other <user\@dom.ain>
 2604:  0: Alan Other <user@dom.ain>
 2605:     <user\@dom.ain>
 2606:  0: user@dom.ain
 2607:  1: user@dom
 2608:     user\@dom.ain
 2609:  0: user@dom.ain
 2610:  1: user@dom
 2611:     \"A. Other\" <user.1234\@dom.ain> (a comment)
 2612:  0: "A. Other" <user.1234@dom.ain>
 2613:     A. Other <user.1234\@dom.ain> (a comment)
 2614:  0:  Other <user.1234@dom.ain>
 2615:     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
 2616:  0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
 2617:  1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re
 2618:     A missing angle <user\@some.where
 2619:  0: user@some.where
 2620:  1: user@some
 2621:     *** Failers
 2622: No match
 2623:     The quick brown fox
 2624: No match
 2625: 
 2626: /abc\0def\00pqr\000xyz\0000AB/
 2627:     abc\0def\00pqr\000xyz\0000AB
 2628:  0: abc\x00def\x00pqr\x00xyz\x000AB
 2629:     abc456 abc\0def\00pqr\000xyz\0000ABCDE
 2630:  0: abc\x00def\x00pqr\x00xyz\x000AB
 2631: 
 2632: /abc\x0def\x00pqr\x000xyz\x0000AB/
 2633:     abc\x0def\x00pqr\x000xyz\x0000AB
 2634:  0: abc\x0def\x00pqr\x000xyz\x0000AB
 2635:     abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
 2636:  0: abc\x0def\x00pqr\x000xyz\x0000AB
 2637: 
 2638: /^[\000-\037]/
 2639:     \0A
 2640:  0: \x00
 2641:     \01B
 2642:  0: \x01
 2643:     \037C
 2644:  0: \x1f
 2645: 
 2646: /\0*/
 2647:     \0\0\0\0
 2648:  0: \x00\x00\x00\x00
 2649: 
 2650: /A\x0{2,3}Z/
 2651:     The A\x0\x0Z
 2652:  0: A\x00\x00Z
 2653:     An A\0\x0\0Z
 2654:  0: A\x00\x00\x00Z
 2655:     *** Failers
 2656: No match
 2657:     A\0Z
 2658: No match
 2659:     A\0\x0\0\x0Z
 2660: No match
 2661: 
 2662: /^\s/
 2663:     \040abc
 2664:  0:  
 2665:     \x0cabc
 2666:  0: \x0c
 2667:     \nabc
 2668:  0: \x0a
 2669:     \rabc
 2670:  0: \x0d
 2671:     \tabc
 2672:  0: \x09
 2673:     *** Failers
 2674: No match
 2675:     abc
 2676: No match
 2677: 
 2678: /^a	b
 2679:       c/x
 2680:     abc
 2681:  0: abc
 2682: 
 2683: /ab{1,3}bc/
 2684:     abbbbc
 2685:  0: abbbbc
 2686:     abbbc
 2687:  0: abbbc
 2688:     abbc
 2689:  0: abbc
 2690:     *** Failers
 2691: No match
 2692:     abc
 2693: No match
 2694:     abbbbbc
 2695: No match
 2696: 
 2697: /([^.]*)\.([^:]*):[T ]+(.*)/
 2698:     track1.title:TBlah blah blah
 2699:  0: track1.title:TBlah blah blah
 2700: 
 2701: /([^.]*)\.([^:]*):[T ]+(.*)/i
 2702:     track1.title:TBlah blah blah
 2703:  0: track1.title:TBlah blah blah
 2704: 
 2705: /([^.]*)\.([^:]*):[t ]+(.*)/i
 2706:     track1.title:TBlah blah blah
 2707:  0: track1.title:TBlah blah blah
 2708: 
 2709: /^[W-c]+$/
 2710:     WXY_^abc
 2711:  0: WXY_^abc
 2712:     *** Failers
 2713: No match
 2714:     wxy
 2715: No match
 2716: 
 2717: /^[W-c]+$/i
 2718:     WXY_^abc
 2719:  0: WXY_^abc
 2720:     wxy_^ABC
 2721:  0: wxy_^ABC
 2722: 
 2723: /^[\x3f-\x5F]+$/i
 2724:     WXY_^abc
 2725:  0: WXY_^abc
 2726:     wxy_^ABC
 2727:  0: wxy_^ABC
 2728: 
 2729: /^abc$/m
 2730:     abc
 2731:  0: abc
 2732:     qqq\nabc
 2733:  0: abc
 2734:     abc\nzzz
 2735:  0: abc
 2736:     qqq\nabc\nzzz
 2737:  0: abc
 2738: 
 2739: /^abc$/
 2740:     abc
 2741:  0: abc
 2742:     *** Failers
 2743: No match
 2744:     qqq\nabc
 2745: No match
 2746:     abc\nzzz
 2747: No match
 2748:     qqq\nabc\nzzz
 2749: No match
 2750: 
 2751: /\Aabc\Z/m
 2752:     abc
 2753:  0: abc
 2754:     abc\n 
 2755:  0: abc
 2756:     *** Failers
 2757: No match
 2758:     qqq\nabc
 2759: No match
 2760:     abc\nzzz
 2761: No match
 2762:     qqq\nabc\nzzz
 2763: No match
 2764:     
 2765: /\A(.)*\Z/s
 2766:     abc\ndef
 2767:  0: abc\x0adef
 2768: 
 2769: /\A(.)*\Z/m
 2770:     *** Failers
 2771:  0: *** Failers
 2772:     abc\ndef
 2773: No match
 2774: 
 2775: /(?:b)|(?::+)/
 2776:     b::c
 2777:  0: b
 2778:     c::b
 2779:  0: ::
 2780: 
 2781: /[-az]+/
 2782:     az-
 2783:  0: az-
 2784:     *** Failers
 2785:  0: a
 2786:     b
 2787: No match
 2788: 
 2789: /[az-]+/
 2790:     za-
 2791:  0: za-
 2792:     *** Failers
 2793:  0: a
 2794:     b
 2795: No match
 2796: 
 2797: /[a\-z]+/
 2798:     a-z
 2799:  0: a-z
 2800:     *** Failers
 2801:  0: a
 2802:     b
 2803: No match
 2804: 
 2805: /[a-z]+/
 2806:     abcdxyz
 2807:  0: abcdxyz
 2808: 
 2809: /[\d-]+/
 2810:     12-34
 2811:  0: 12-34
 2812:     *** Failers
 2813: No match
 2814:     aaa
 2815: No match
 2816: 
 2817: /[\d-z]+/
 2818:     12-34z
 2819:  0: 12-34z
 2820:     *** Failers
 2821: No match
 2822:     aaa
 2823: No match
 2824: 
 2825: /\x5c/
 2826:     \\
 2827:  0: \
 2828: 
 2829: /\x20Z/
 2830:     the Zoo
 2831:  0:  Z
 2832:     *** Failers
 2833: No match
 2834:     Zulu
 2835: No match
 2836: 
 2837: /ab{3cd/
 2838:     ab{3cd
 2839:  0: ab{3cd
 2840: 
 2841: /ab{3,cd/
 2842:     ab{3,cd
 2843:  0: ab{3,cd
 2844: 
 2845: /ab{3,4a}cd/
 2846:     ab{3,4a}cd
 2847:  0: ab{3,4a}cd
 2848: 
 2849: /{4,5a}bc/
 2850:     {4,5a}bc
 2851:  0: {4,5a}bc
 2852: 
 2853: /^a.b/<lf>
 2854:     a\rb
 2855:  0: a\x0db
 2856:     *** Failers
 2857: No match
 2858:     a\nb
 2859: No match
 2860: 
 2861: /abc$/
 2862:     abc
 2863:  0: abc
 2864:     abc\n
 2865:  0: abc
 2866:     *** Failers
 2867: No match
 2868:     abc\ndef
 2869: No match
 2870: 
 2871: /(abc)\123/
 2872:     abc\x53
 2873:  0: abcS
 2874: 
 2875: /(abc)\223/
 2876:     abc\x93
 2877:  0: abc\x93
 2878: 
 2879: /(abc)\323/
 2880:     abc\xd3
 2881:  0: abc\xd3
 2882: 
 2883: /(abc)\100/
 2884:     abc\x40
 2885:  0: abc@
 2886:     abc\100
 2887:  0: abc@
 2888: 
 2889: /(abc)\1000/
 2890:     abc\x400
 2891:  0: abc@0
 2892:     abc\x40\x30
 2893:  0: abc@0
 2894:     abc\1000
 2895:  0: abc@0
 2896:     abc\100\x30
 2897:  0: abc@0
 2898:     abc\100\060
 2899:  0: abc@0
 2900:     abc\100\60
 2901:  0: abc@0
 2902: 
 2903: /^A\8B\9C$/
 2904:     A8B9C
 2905:  0: A8B9C
 2906:     *** Failers
 2907: No match
 2908:     A\08B\09C  
 2909: No match
 2910:     
 2911: /^[A\8B\9C]+$/
 2912:     A8B9C
 2913:  0: A8B9C
 2914:     *** Failers 
 2915: No match
 2916:     A8B9C\x00
 2917: No match
 2918:     
 2919: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
 2920:     abcdefghijk\12S
 2921:  0: abcdefghijk\x0aS
 2922: 
 2923: /ab\idef/
 2924:     abidef
 2925:  0: abidef
 2926: 
 2927: /a{0}bc/
 2928:     bc
 2929:  0: bc
 2930: 
 2931: /(a|(bc)){0,0}?xyz/
 2932:     xyz
 2933:  0: xyz
 2934: 
 2935: /abc[\10]de/
 2936:     abc\010de
 2937:  0: abc\x08de
 2938: 
 2939: /abc[\1]de/
 2940:     abc\1de
 2941:  0: abc\x01de
 2942: 
 2943: /(abc)[\1]de/
 2944:     abc\1de
 2945:  0: abc\x01de
 2946: 
 2947: /(?s)a.b/
 2948:     a\nb
 2949:  0: a\x0ab
 2950: 
 2951: /^([^a])([^\b])([^c]*)([^d]{3,4})/
 2952:     baNOTccccd
 2953:  0: baNOTcccc
 2954:  1: baNOTccc
 2955:  2: baNOTcc
 2956:  3: baNOTc
 2957:     baNOTcccd
 2958:  0: baNOTccc
 2959:  1: baNOTcc
 2960:  2: baNOTc
 2961:     baNOTccd
 2962:  0: baNOTcc
 2963:  1: baNOTc
 2964:     bacccd
 2965:  0: baccc
 2966:     *** Failers
 2967:  0: *** Failers
 2968:  1: *** Failer
 2969:  2: *** Faile
 2970:  3: *** Fail
 2971:  4: *** Fai
 2972:  5: *** Fa
 2973:     anything
 2974: No match
 2975:     b\bc   
 2976: No match
 2977:     baccd
 2978: No match
 2979: 
 2980: /[^a]/
 2981:     Abc
 2982:  0: A
 2983:   
 2984: /[^a]/i
 2985:     Abc 
 2986:  0: b
 2987: 
 2988: /[^a]+/
 2989:     AAAaAbc
 2990:  0: AAA
 2991:   
 2992: /[^a]+/i
 2993:     AAAaAbc 
 2994:  0: bc
 2995: 
 2996: /[^a]+/
 2997:     bbb\nccc
 2998:  0: bbb\x0accc
 2999:    
 3000: /[^k]$/
 3001:     abc
 3002:  0: c
 3003:     *** Failers
 3004:  0: s
 3005:     abk   
 3006: No match
 3007:    
 3008: /[^k]{2,3}$/
 3009:     abc
 3010:  0: abc
 3011:     kbc
 3012:  0: bc
 3013:     kabc 
 3014:  0: abc
 3015:     *** Failers
 3016:  0: ers
 3017:     abk
 3018: No match
 3019:     akb
 3020: No match
 3021:     akk 
 3022: No match
 3023: 
 3024: /^\d{8,}\@.+[^k]$/
 3025:     12345678\@a.b.c.d
 3026:  0: 12345678@a.b.c.d
 3027:     123456789\@x.y.z
 3028:  0: 123456789@x.y.z
 3029:     *** Failers
 3030: No match
 3031:     12345678\@x.y.uk
 3032: No match
 3033:     1234567\@a.b.c.d       
 3034: No match
 3035: 
 3036: /[^a]/
 3037:     aaaabcd
 3038:  0: b
 3039:     aaAabcd 
 3040:  0: A
 3041: 
 3042: /[^a]/i
 3043:     aaaabcd
 3044:  0: b
 3045:     aaAabcd 
 3046:  0: b
 3047: 
 3048: /[^az]/
 3049:     aaaabcd
 3050:  0: b
 3051:     aaAabcd 
 3052:  0: A
 3053: 
 3054: /[^az]/i
 3055:     aaaabcd
 3056:  0: b
 3057:     aaAabcd 
 3058:  0: b
 3059: 
 3060: /\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/
 3061:  \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
 3062:  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
 3063: 
 3064: /P[^*]TAIRE[^*]{1,6}?LL/
 3065:     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
 3066:  0: PSTAIREISLL
 3067: 
 3068: /P[^*]TAIRE[^*]{1,}?LL/
 3069:     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
 3070:  0: PSTAIREISLL
 3071: 
 3072: /(\.\d\d[1-9]?)\d+/
 3073:     1.230003938
 3074:  0: .230003938
 3075:     1.875000282   
 3076:  0: .875000282
 3077:     1.235  
 3078:  0: .235
 3079:                   
 3080: /(\.\d\d((?=0)|\d(?=\d)))/
 3081:     1.230003938      
 3082:  0: .230
 3083:  1: .23
 3084:     1.875000282
 3085:  0: .875
 3086:     *** Failers 
 3087: No match
 3088:     1.235 
 3089: No match
 3090:     
 3091: /a(?)b/
 3092:     ab 
 3093:  0: ab
 3094:  
 3095: /\b(foo)\s+(\w+)/i
 3096:     Food is on the foo table
 3097:  0: foo table
 3098:     
 3099: /foo(.*)bar/
 3100:     The food is under the bar in the barn.
 3101:  0: food is under the bar in the bar
 3102:  1: food is under the bar
 3103:     
 3104: /foo(.*?)bar/  
 3105:     The food is under the bar in the barn.
 3106:  0: food is under the bar in the bar
 3107:  1: food is under the bar
 3108: 
 3109: /(.*)(\d*)/O
 3110:     I have 2 numbers: 53147
 3111: Matched, but offsets vector is too small to show all matches
 3112:  0: I have 2 numbers: 53147
 3113:  1: I have 2 numbers: 5314
 3114:  2: I have 2 numbers: 531
 3115:  3: I have 2 numbers: 53
 3116:  4: I have 2 numbers: 5
 3117:  5: I have 2 numbers: 
 3118:  6: I have 2 numbers:
 3119:  7: I have 2 numbers
 3120:  8: I have 2 number
 3121:  9: I have 2 numbe
 3122: 10: I have 2 numb
 3123: 11: I have 2 num
 3124: 12: I have 2 nu
 3125: 13: I have 2 n
 3126: 14: I have 2 
 3127: 15: I have 2
 3128: 16: I have 
 3129: 17: I have
 3130: 18: I hav
 3131: 19: I ha
 3132: 20: I h
 3133: 21: I 
 3134:     
 3135: /(.*)(\d+)/
 3136:     I have 2 numbers: 53147
 3137:  0: I have 2 numbers: 53147
 3138:  1: I have 2
 3139:  
 3140: /(.*?)(\d*)/O
 3141:     I have 2 numbers: 53147
 3142: Matched, but offsets vector is too small to show all matches
 3143:  0: I have 2 numbers: 53147
 3144:  1: I have 2 numbers: 5314
 3145:  2: I have 2 numbers: 531
 3146:  3: I have 2 numbers: 53
 3147:  4: I have 2 numbers: 5
 3148:  5: I have 2 numbers: 
 3149:  6: I have 2 numbers:
 3150:  7: I have 2 numbers
 3151:  8: I have 2 number
 3152:  9: I have 2 numbe
 3153: 10: I have 2 numb
 3154: 11: I have 2 num
 3155: 12: I have 2 nu
 3156: 13: I have 2 n
 3157: 14: I have 2 
 3158: 15: I have 2
 3159: 16: I have 
 3160: 17: I have
 3161: 18: I hav
 3162: 19: I ha
 3163: 20: I h
 3164: 21: I 
 3165: 
 3166: /(.*?)(\d+)/
 3167:     I have 2 numbers: 53147
 3168:  0: I have 2 numbers: 53147
 3169:  1: I have 2
 3170: 
 3171: /(.*)(\d+)$/
 3172:     I have 2 numbers: 53147
 3173:  0: I have 2 numbers: 53147
 3174: 
 3175: /(.*?)(\d+)$/
 3176:     I have 2 numbers: 53147
 3177:  0: I have 2 numbers: 53147
 3178: 
 3179: /(.*)\b(\d+)$/
 3180:     I have 2 numbers: 53147
 3181:  0: I have 2 numbers: 53147
 3182: 
 3183: /(.*\D)(\d+)$/
 3184:     I have 2 numbers: 53147
 3185:  0: I have 2 numbers: 53147
 3186: 
 3187: /^\D*(?!123)/
 3188:     ABC123
 3189:  0: AB
 3190:  1: A
 3191:  2: 
 3192:      
 3193: /^(\D*)(?=\d)(?!123)/
 3194:     ABC445
 3195:  0: ABC
 3196:     *** Failers
 3197: No match
 3198:     ABC123
 3199: No match
 3200:     
 3201: /^[W-]46]/
 3202:     W46]789 
 3203:  0: W46]
 3204:     -46]789
 3205:  0: -46]
 3206:     *** Failers
 3207: No match
 3208:     Wall
 3209: No match
 3210:     Zebra
 3211: No match
 3212:     42
 3213: No match
 3214:     [abcd] 
 3215: No match
 3216:     ]abcd[
 3217: No match
 3218:        
 3219: /^[W-\]46]/
 3220:     W46]789 
 3221:  0: W
 3222:     Wall
 3223:  0: W
 3224:     Zebra
 3225:  0: Z
 3226:     Xylophone  
 3227:  0: X
 3228:     42
 3229:  0: 4
 3230:     [abcd] 
 3231:  0: [
 3232:     ]abcd[
 3233:  0: ]
 3234:     \\backslash 
 3235:  0: \
 3236:     *** Failers
 3237: No match
 3238:     -46]789
 3239: No match
 3240:     well
 3241: No match
 3242:     
 3243: /\d\d\/\d\d\/\d\d\d\d/
 3244:     01/01/2000
 3245:  0: 01/01/2000
 3246: 
 3247: /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
 3248:   word cat dog elephant mussel cow horse canary baboon snake shark otherword
 3249:  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
 3250:   word cat dog elephant mussel cow horse canary baboon snake shark
 3251: No match
 3252: 
 3253: /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
 3254:   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
 3255: No match
 3256: 
 3257: /^(a){0,0}/
 3258:     bcd
 3259:  0: 
 3260:     abc
 3261:  0: 
 3262:     aab     
 3263:  0: 
 3264: 
 3265: /^(a){0,1}/
 3266:     bcd
 3267:  0: 
 3268:     abc
 3269:  0: a
 3270:  1: 
 3271:     aab  
 3272:  0: a
 3273:  1: 
 3274: 
 3275: /^(a){0,2}/
 3276:     bcd
 3277:  0: 
 3278:     abc
 3279:  0: a
 3280:  1: 
 3281:     aab  
 3282:  0: aa
 3283:  1: a
 3284:  2: 
 3285: 
 3286: /^(a){0,3}/
 3287:     bcd
 3288:  0: 
 3289:     abc
 3290:  0: a
 3291:  1: 
 3292:     aab
 3293:  0: aa
 3294:  1: a
 3295:  2: 
 3296:     aaa   
 3297:  0: aaa
 3298:  1: aa
 3299:  2: a
 3300:  3: 
 3301: 
 3302: /^(a){0,}/
 3303:     bcd
 3304:  0: 
 3305:     abc
 3306:  0: a
 3307:  1: 
 3308:     aab
 3309:  0: aa
 3310:  1: a
 3311:  2: 
 3312:     aaa
 3313:  0: aaa
 3314:  1: aa
 3315:  2: a
 3316:  3: 
 3317:     aaaaaaaa    
 3318:  0: aaaaaaaa
 3319:  1: aaaaaaa
 3320:  2: aaaaaa
 3321:  3: aaaaa
 3322:  4: aaaa
 3323:  5: aaa
 3324:  6: aa
 3325:  7: a
 3326:  8: 
 3327: 
 3328: /^(a){1,1}/
 3329:     bcd
 3330: No match
 3331:     abc
 3332:  0: a
 3333:     aab  
 3334:  0: a
 3335: 
 3336: /^(a){1,2}/
 3337:     bcd
 3338: No match
 3339:     abc
 3340:  0: a
 3341:     aab  
 3342:  0: aa
 3343:  1: a
 3344: 
 3345: /^(a){1,3}/
 3346:     bcd
 3347: No match
 3348:     abc
 3349:  0: a
 3350:     aab
 3351:  0: aa
 3352:  1: a
 3353:     aaa   
 3354:  0: aaa
 3355:  1: aa
 3356:  2: a
 3357: 
 3358: /^(a){1,}/
 3359:     bcd
 3360: No match
 3361:     abc
 3362:  0: a
 3363:     aab
 3364:  0: aa
 3365:  1: a
 3366:     aaa
 3367:  0: aaa
 3368:  1: aa
 3369:  2: a
 3370:     aaaaaaaa    
 3371:  0: aaaaaaaa
 3372:  1: aaaaaaa
 3373:  2: aaaaaa
 3374:  3: aaaaa
 3375:  4: aaaa
 3376:  5: aaa
 3377:  6: aa
 3378:  7: a
 3379: 
 3380: /.*\.gif/
 3381:     borfle\nbib.gif\nno
 3382:  0: bib.gif
 3383: 
 3384: /.{0,}\.gif/
 3385:     borfle\nbib.gif\nno
 3386:  0: bib.gif
 3387: 
 3388: /.*\.gif/m
 3389:     borfle\nbib.gif\nno
 3390:  0: bib.gif
 3391: 
 3392: /.*\.gif/s
 3393:     borfle\nbib.gif\nno
 3394:  0: borfle\x0abib.gif
 3395: 
 3396: /.*\.gif/ms
 3397:     borfle\nbib.gif\nno
 3398:  0: borfle\x0abib.gif
 3399:     
 3400: /.*$/
 3401:     borfle\nbib.gif\nno
 3402:  0: no
 3403: 
 3404: /.*$/m
 3405:     borfle\nbib.gif\nno
 3406:  0: borfle
 3407: 
 3408: /.*$/s
 3409:     borfle\nbib.gif\nno
 3410:  0: borfle\x0abib.gif\x0ano
 3411: 
 3412: /.*$/ms
 3413:     borfle\nbib.gif\nno
 3414:  0: borfle\x0abib.gif\x0ano
 3415:  1: borfle\x0abib.gif
 3416:  2: borfle
 3417:     
 3418: /.*$/
 3419:     borfle\nbib.gif\nno\n
 3420:  0: no
 3421: 
 3422: /.*$/m
 3423:     borfle\nbib.gif\nno\n
 3424:  0: borfle
 3425: 
 3426: /.*$/s
 3427:     borfle\nbib.gif\nno\n
 3428:  0: borfle\x0abib.gif\x0ano\x0a
 3429:  1: borfle\x0abib.gif\x0ano
 3430: 
 3431: /.*$/ms
 3432:     borfle\nbib.gif\nno\n
 3433:  0: borfle\x0abib.gif\x0ano\x0a
 3434:  1: borfle\x0abib.gif\x0ano
 3435:  2: borfle\x0abib.gif
 3436:  3: borfle
 3437:     
 3438: /(.*X|^B)/
 3439:     abcde\n1234Xyz
 3440:  0: 1234X
 3441:     BarFoo 
 3442:  0: B
 3443:     *** Failers
 3444: No match
 3445:     abcde\nBar  
 3446: No match
 3447: 
 3448: /(.*X|^B)/m
 3449:     abcde\n1234Xyz
 3450:  0: 1234X
 3451:     BarFoo 
 3452:  0: B
 3453:     abcde\nBar  
 3454:  0: B
 3455: 
 3456: /(.*X|^B)/s
 3457:     abcde\n1234Xyz
 3458:  0: abcde\x0a1234X
 3459:     BarFoo 
 3460:  0: B
 3461:     *** Failers
 3462: No match
 3463:     abcde\nBar  
 3464: No match
 3465: 
 3466: /(.*X|^B)/ms
 3467:     abcde\n1234Xyz
 3468:  0: abcde\x0a1234X
 3469:     BarFoo 
 3470:  0: B
 3471:     abcde\nBar  
 3472:  0: B
 3473: 
 3474: /(?s)(.*X|^B)/
 3475:     abcde\n1234Xyz
 3476:  0: abcde\x0a1234X
 3477:     BarFoo 
 3478:  0: B
 3479:     *** Failers 
 3480: No match
 3481:     abcde\nBar  
 3482: No match
 3483: 
 3484: /(?s:.*X|^B)/
 3485:     abcde\n1234Xyz
 3486:  0: abcde\x0a1234X
 3487:     BarFoo 
 3488:  0: B
 3489:     *** Failers 
 3490: No match
 3491:     abcde\nBar  
 3492: No match
 3493: 
 3494: /^.*B/
 3495:     **** Failers
 3496: No match
 3497:     abc\nB
 3498: No match
 3499:      
 3500: /(?s)^.*B/
 3501:     abc\nB
 3502:  0: abc\x0aB
 3503: 
 3504: /(?m)^.*B/
 3505:     abc\nB
 3506:  0: B
 3507:      
 3508: /(?ms)^.*B/
 3509:     abc\nB
 3510:  0: abc\x0aB
 3511: 
 3512: /(?ms)^B/
 3513:     abc\nB
 3514:  0: B
 3515: 
 3516: /(?s)B$/
 3517:     B\n
 3518:  0: B
 3519: 
 3520: /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
 3521:     123456654321
 3522:  0: 123456654321
 3523:   
 3524: /^\d\d\d\d\d\d\d\d\d\d\d\d/
 3525:     123456654321 
 3526:  0: 123456654321
 3527: 
 3528: /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
 3529:     123456654321
 3530:  0: 123456654321
 3531:   
 3532: /^[abc]{12}/
 3533:     abcabcabcabc
 3534:  0: abcabcabcabc
 3535:     
 3536: /^[a-c]{12}/
 3537:     abcabcabcabc
 3538:  0: abcabcabcabc
 3539:     
 3540: /^(a|b|c){12}/
 3541:     abcabcabcabc 
 3542:  0: abcabcabcabc
 3543: 
 3544: /^[abcdefghijklmnopqrstuvwxy0123456789]/
 3545:     n
 3546:  0: n
 3547:     *** Failers 
 3548: No match
 3549:     z 
 3550: No match
 3551: 
 3552: /abcde{0,0}/
 3553:     abcd
 3554:  0: abcd
 3555:     *** Failers
 3556: No match
 3557:     abce  
 3558: No match
 3559: 
 3560: /ab[cd]{0,0}e/
 3561:     abe
 3562:  0: abe
 3563:     *** Failers
 3564: No match
 3565:     abcde 
 3566: No match
 3567:     
 3568: /ab(c){0,0}d/
 3569:     abd
 3570:  0: abd
 3571:     *** Failers
 3572: No match
 3573:     abcd   
 3574: No match
 3575: 
 3576: /a(b*)/
 3577:     a
 3578:  0: a
 3579:     ab
 3580:  0: ab
 3581:     abbbb
 3582:  0: abbbb
 3583:     *** Failers
 3584:  0: a
 3585:     bbbbb    
 3586: No match
 3587:     
 3588: /ab\d{0}e/
 3589:     abe
 3590:  0: abe
 3591:     *** Failers
 3592: No match
 3593:     ab1e   
 3594: No match
 3595:     
 3596: /"([^\\"]+|\\.)*"/
 3597:     the \"quick\" brown fox
 3598:  0: "quick"
 3599:     \"the \\\"quick\\\" brown fox\" 
 3600:  0: "the \"quick\" brown fox"
 3601: 
 3602: /.*?/g+
 3603:     abc
 3604:  0: abc
 3605:  0+ 
 3606:  1: ab
 3607:  2: a
 3608:  3: 
 3609:  0: 
 3610:  0+ 
 3611:   
 3612: /\b/g+
 3613:     abc 
 3614:  0: 
 3615:  0+ abc
 3616:  0: 
 3617:  0+ 
 3618: 
 3619: /\b/+g
 3620:     abc 
 3621:  0: 
 3622:  0+ abc
 3623:  0: 
 3624:  0+ 
 3625: 
 3626: //g
 3627:     abc
 3628:  0: 
 3629:  0: 
 3630:  0: 
 3631:  0: 
 3632: 
 3633: /<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
 3634:   <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>
 3635:  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>
 3636: 
 3637: /a[^a]b/
 3638:     acb
 3639:  0: acb
 3640:     a\nb
 3641:  0: a\x0ab
 3642:     
 3643: /a.b/
 3644:     acb
 3645:  0: acb
 3646:     *** Failers 
 3647: No match
 3648:     a\nb   
 3649: No match
 3650:     
 3651: /a[^a]b/s
 3652:     acb
 3653:  0: acb
 3654:     a\nb  
 3655:  0: a\x0ab
 3656:     
 3657: /a.b/s
 3658:     acb
 3659:  0: acb
 3660:     a\nb  
 3661:  0: a\x0ab
 3662: 
 3663: /^(b+?|a){1,2}?c/
 3664:     bac
 3665:  0: bac
 3666:     bbac
 3667:  0: bbac
 3668:     bbbac
 3669:  0: bbbac
 3670:     bbbbac
 3671:  0: bbbbac
 3672:     bbbbbac 
 3673:  0: bbbbbac
 3674: 
 3675: /^(b+|a){1,2}?c/
 3676:     bac
 3677:  0: bac
 3678:     bbac
 3679:  0: bbac
 3680:     bbbac
 3681:  0: bbbac
 3682:     bbbbac
 3683:  0: bbbbac
 3684:     bbbbbac 
 3685:  0: bbbbbac
 3686:     
 3687: /(?!\A)x/m
 3688:     x\nb\n
 3689: No match
 3690:     a\bx\n  
 3691:  0: x
 3692:     
 3693: /\x0{ab}/
 3694:     \0{ab} 
 3695:  0: \x00{ab}
 3696: 
 3697: /(A|B)*?CD/
 3698:     CD 
 3699:  0: CD
 3700:     
 3701: /(A|B)*CD/
 3702:     CD 
 3703:  0: CD
 3704: 
 3705: /(?<!bar)foo/
 3706:     foo
 3707:  0: foo
 3708:     catfood
 3709:  0: foo
 3710:     arfootle
 3711:  0: foo
 3712:     rfoosh
 3713:  0: foo
 3714:     *** Failers
 3715: No match
 3716:     barfoo
 3717: No match
 3718:     towbarfoo
 3719: No match
 3720: 
 3721: /\w{3}(?<!bar)foo/
 3722:     catfood
 3723:  0: catfoo
 3724:     *** Failers
 3725: No match
 3726:     foo
 3727: No match
 3728:     barfoo
 3729: No match
 3730:     towbarfoo
 3731: No match
 3732: 
 3733: /(?<=(foo)a)bar/
 3734:     fooabar
 3735:  0: bar
 3736:     *** Failers
 3737: No match
 3738:     bar
 3739: No match
 3740:     foobbar
 3741: No match
 3742:       
 3743: /\Aabc\z/m
 3744:     abc
 3745:  0: abc
 3746:     *** Failers
 3747: No match
 3748:     abc\n   
 3749: No match
 3750:     qqq\nabc
 3751: No match
 3752:     abc\nzzz
 3753: No match
 3754:     qqq\nabc\nzzz
 3755: No match
 3756: 
 3757: "(?>.*/)foo"
 3758:     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
 3759: No match
 3760: 
 3761: "(?>.*/)foo"
 3762:     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
 3763:  0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
 3764: 
 3765: /(?>(\.\d\d[1-9]?))\d+/
 3766:     1.230003938
 3767:  0: .230003938
 3768:     1.875000282
 3769:  0: .875000282
 3770:     *** Failers 
 3771: No match
 3772:     1.235 
 3773: No match
 3774: 
 3775: /^((?>\w+)|(?>\s+))*$/
 3776:     now is the time for all good men to come to the aid of the party
 3777:  0: now is the time for all good men to come to the aid of the party
 3778:     *** Failers
 3779: No match
 3780:     this is not a line with only words and spaces!
 3781: No match
 3782:     
 3783: /(\d+)(\w)/
 3784:     12345a
 3785:  0: 12345a
 3786:  1: 12345
 3787:  2: 1234
 3788:  3: 123
 3789:  4: 12
 3790:     12345+ 
 3791:  0: 12345
 3792:  1: 1234
 3793:  2: 123
 3794:  3: 12
 3795: 
 3796: /((?>\d+))(\w)/
 3797:     12345a
 3798:  0: 12345a
 3799:     *** Failers
 3800: No match
 3801:     12345+ 
 3802: No match
 3803: 
 3804: /(?>a+)b/
 3805:     aaab
 3806:  0: aaab
 3807: 
 3808: /((?>a+)b)/
 3809:     aaab
 3810:  0: aaab
 3811: 
 3812: /(?>(a+))b/
 3813:     aaab
 3814:  0: aaab
 3815: 
 3816: /(?>b)+/
 3817:     aaabbbccc
 3818:  0: bbb
 3819:  1: bb
 3820:  2: b
 3821: 
 3822: /(?>a+|b+|c+)*c/
 3823:     aaabbbbccccd
 3824:  0: aaabbbbcccc
 3825:  1: aaabbbbc
 3826:     
 3827: /(a+|b+|c+)*c/
 3828:     aaabbbbccccd
 3829:  0: aaabbbbcccc
 3830:  1: aaabbbbccc
 3831:  2: aaabbbbcc
 3832:  3: aaabbbbc
 3833: 
 3834: /((?>[^()]+)|\([^()]*\))+/
 3835:     ((abc(ade)ufh()()x
 3836:  0: abc(ade)ufh()()x
 3837:  1: abc(ade)ufh()()
 3838:  2: abc(ade)ufh()
 3839:  3: abc(ade)ufh
 3840:  4: abc(ade)
 3841:  5: abc
 3842:     
 3843: /\(((?>[^()]+)|\([^()]+\))+\)/ 
 3844:     (abc)
 3845:  0: (abc)
 3846:     (abc(def)xyz)
 3847:  0: (abc(def)xyz)
 3848:     *** Failers
 3849: No match
 3850:     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
 3851: No match
 3852: 
 3853: /a(?-i)b/i
 3854:     ab
 3855:  0: ab
 3856:     Ab
 3857:  0: Ab
 3858:     *** Failers 
 3859: No match
 3860:     aB
 3861: No match
 3862:     AB
 3863: No match
 3864:         
 3865: /(a (?x)b c)d e/
 3866:     a bcd e
 3867:  0: a bcd e
 3868:     *** Failers
 3869: No match
 3870:     a b cd e
 3871: No match
 3872:     abcd e   
 3873: No match
 3874:     a bcde 
 3875: No match
 3876:  
 3877: /(a b(?x)c d (?-x)e f)/
 3878:     a bcde f
 3879:  0: a bcde f
 3880:     *** Failers
 3881: No match
 3882:     abcdef  
 3883: No match
 3884: 
 3885: /(a(?i)b)c/
 3886:     abc
 3887:  0: abc
 3888:     aBc
 3889:  0: aBc
 3890:     *** Failers
 3891: No match
 3892:     abC
 3893: No match
 3894:     aBC  
 3895: No match
 3896:     Abc
 3897: No match
 3898:     ABc
 3899: No match
 3900:     ABC
 3901: No match
 3902:     AbC
 3903: No match
 3904:     
 3905: /a(?i:b)c/
 3906:     abc
 3907:  0: abc
 3908:     aBc
 3909:  0: aBc
 3910:     *** Failers 
 3911: No match
 3912:     ABC
 3913: No match
 3914:     abC
 3915: No match
 3916:     aBC
 3917: No match
 3918:     
 3919: /a(?i:b)*c/
 3920:     aBc
 3921:  0: aBc
 3922:     aBBc
 3923:  0: aBBc
 3924:     *** Failers 
 3925: No match
 3926:     aBC
 3927: No match
 3928:     aBBC
 3929: No match
 3930:     
 3931: /a(?=b(?i)c)\w\wd/
 3932:     abcd
 3933:  0: abcd
 3934:     abCd
 3935:  0: abCd
 3936:     *** Failers
 3937: No match
 3938:     aBCd
 3939: No match
 3940:     abcD     
 3941: No match
 3942:     
 3943: /(?s-i:more.*than).*million/i
 3944:     more than million
 3945:  0: more than million
 3946:     more than MILLION
 3947:  0: more than MILLION
 3948:     more \n than Million 
 3949:  0: more \x0a than Million
 3950:     *** Failers
 3951: No match
 3952:     MORE THAN MILLION    
 3953: No match
 3954:     more \n than \n million 
 3955: No match
 3956: 
 3957: /(?:(?s-i)more.*than).*million/i
 3958:     more than million
 3959:  0: more than million
 3960:     more than MILLION
 3961:  0: more than MILLION
 3962:     more \n than Million 
 3963:  0: more \x0a than Million
 3964:     *** Failers
 3965: No match
 3966:     MORE THAN MILLION    
 3967: No match
 3968:     more \n than \n million 
 3969: No match
 3970:     
 3971: /(?>a(?i)b+)+c/ 
 3972:     abc
 3973:  0: abc
 3974:     aBbc
 3975:  0: aBbc
 3976:     aBBc 
 3977:  0: aBBc
 3978:     *** Failers
 3979: No match
 3980:     Abc
 3981: No match
 3982:     abAb    
 3983: No match
 3984:     abbC 
 3985: No match
 3986:     
 3987: /(?=a(?i)b)\w\wc/
 3988:     abc
 3989:  0: abc
 3990:     aBc
 3991:  0: aBc
 3992:     *** Failers
 3993: No match
 3994:     Ab 
 3995: No match
 3996:     abC
 3997: No match
 3998:     aBC     
 3999: No match
 4000:     
 4001: /(?<=a(?i)b)(\w\w)c/
 4002:     abxxc
 4003:  0: xxc
 4004:     aBxxc
 4005:  0: xxc
 4006:     *** Failers
 4007: No match
 4008:     Abxxc
 4009: No match
 4010:     ABxxc
 4011: No match
 4012:     abxxC      
 4013: No match
 4014: 
 4015: /^(?(?=abc)\w{3}:|\d\d)$/
 4016:     abc:
 4017:  0: abc:
 4018:     12
 4019:  0: 12
 4020:     *** Failers
 4021: No match
 4022:     123
 4023: No match
 4024:     xyz    
 4025: No match
 4026: 
 4027: /^(?(?!abc)\d\d|\w{3}:)$/
 4028:     abc:
 4029:  0: abc:
 4030:     12
 4031:  0: 12
 4032:     *** Failers
 4033: No match
 4034:     123
 4035: No match
 4036:     xyz    
 4037: No match
 4038:     
 4039: /(?(?<=foo)bar|cat)/
 4040:     foobar
 4041:  0: bar
 4042:     cat
 4043:  0: cat
 4044:     fcat
 4045:  0: cat
 4046:     focat   
 4047:  0: cat
 4048:     *** Failers
 4049: No match
 4050:     foocat  
 4051: No match
 4052: 
 4053: /(?(?<!foo)cat|bar)/
 4054:     foobar
 4055:  0: bar
 4056:     cat
 4057:  0: cat
 4058:     fcat
 4059:  0: cat
 4060:     focat   
 4061:  0: cat
 4062:     *** Failers
 4063: No match
 4064:     foocat  
 4065: No match
 4066: 
 4067: /(?>a*)*/
 4068:     a
 4069:  0: a
 4070:  1: 
 4071:     aa
 4072:  0: aa
 4073:  1: 
 4074:     aaaa
 4075:  0: aaaa
 4076:  1: 
 4077:     
 4078: /(abc|)+/
 4079:     abc
 4080:  0: abc
 4081:  1: 
 4082:     abcabc
 4083:  0: abcabc
 4084:  1: abc
 4085:  2: 
 4086:     abcabcabc
 4087:  0: abcabcabc
 4088:  1: abcabc
 4089:  2: abc
 4090:  3: 
 4091:     xyz      
 4092:  0: 
 4093: 
 4094: /([a]*)*/
 4095:     a
 4096:  0: a
 4097:  1: 
 4098:     aaaaa 
 4099:  0: aaaaa
 4100:  1: aaaa
 4101:  2: aaa
 4102:  3: aa
 4103:  4: a
 4104:  5: 
 4105:  
 4106: /([ab]*)*/
 4107:     a
 4108:  0: a
 4109:  1: 
 4110:     b
 4111:  0: b
 4112:  1: 
 4113:     ababab
 4114:  0: ababab
 4115:  1: ababa
 4116:  2: abab
 4117:  3: aba
 4118:  4: ab
 4119:  5: a
 4120:  6: 
 4121:     aaaabcde
 4122:  0: aaaab
 4123:  1: aaaa
 4124:  2: aaa
 4125:  3: aa
 4126:  4: a
 4127:  5: 
 4128:     bbbb    
 4129:  0: bbbb
 4130:  1: bbb
 4131:  2: bb
 4132:  3: b
 4133:  4: 
 4134:  
 4135: /([^a]*)*/
 4136:     b
 4137:  0: b
 4138:  1: 
 4139:     bbbb
 4140:  0: bbbb
 4141:  1: bbb
 4142:  2: bb
 4143:  3: b
 4144:  4: 
 4145:     aaa   
 4146:  0: 
 4147:  
 4148: /([^ab]*)*/
 4149:     cccc
 4150:  0: cccc
 4151:  1: ccc
 4152:  2: cc
 4153:  3: c
 4154:  4: 
 4155:     abab  
 4156:  0: 
 4157:  
 4158: /([a]*?)*/
 4159:     a
 4160:  0: a
 4161:  1: 
 4162:     aaaa 
 4163:  0: aaaa
 4164:  1: aaa
 4165:  2: aa
 4166:  3: a
 4167:  4: 
 4168:  
 4169: /([ab]*?)*/
 4170:     a
 4171:  0: a
 4172:  1: 
 4173:     b
 4174:  0: b
 4175:  1: 
 4176:     abab
 4177:  0: abab
 4178:  1: aba
 4179:  2: ab
 4180:  3: a
 4181:  4: 
 4182:     baba   
 4183:  0: baba
 4184:  1: bab
 4185:  2: ba
 4186:  3: b
 4187:  4: 
 4188:  
 4189: /([^a]*?)*/
 4190:     b
 4191:  0: b
 4192:  1: 
 4193:     bbbb
 4194:  0: bbbb
 4195:  1: bbb
 4196:  2: bb
 4197:  3: b
 4198:  4: 
 4199:     aaa   
 4200:  0: 
 4201:  
 4202: /([^ab]*?)*/
 4203:     c
 4204:  0: c
 4205:  1: 
 4206:     cccc
 4207:  0: cccc
 4208:  1: ccc
 4209:  2: cc
 4210:  3: c
 4211:  4: 
 4212:     baba   
 4213:  0: 
 4214:  
 4215: /(?>a*)*/
 4216:     a
 4217:  0: a
 4218:  1: 
 4219:     aaabcde 
 4220:  0: aaa
 4221:  1: 
 4222:  
 4223: /((?>a*))*/
 4224:     aaaaa
 4225:  0: aaaaa
 4226:  1: 
 4227:     aabbaa 
 4228:  0: aa
 4229:  1: 
 4230:  
 4231: /((?>a*?))*/
 4232:     aaaaa
 4233:  0: aaaaa
 4234:  1: 
 4235:     aabbaa 
 4236:  0: aa
 4237:  1: 
 4238: 
 4239: /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
 4240:     12-sep-98
 4241:  0: 12-sep-98
 4242:     12-09-98
 4243:  0: 12-09-98
 4244:     *** Failers
 4245: No match
 4246:     sep-12-98
 4247: No match
 4248:         
 4249: /(?i:saturday|sunday)/
 4250:     saturday
 4251:  0: saturday
 4252:     sunday
 4253:  0: sunday
 4254:     Saturday
 4255:  0: Saturday
 4256:     Sunday
 4257:  0: Sunday
 4258:     SATURDAY
 4259:  0: SATURDAY
 4260:     SUNDAY
 4261:  0: SUNDAY
 4262:     SunDay
 4263:  0: SunDay
 4264:     
 4265: /(a(?i)bc|BB)x/
 4266:     abcx
 4267:  0: abcx
 4268:     aBCx
 4269:  0: aBCx
 4270:     bbx
 4271:  0: bbx
 4272:     BBx
 4273:  0: BBx
 4274:     *** Failers
 4275: No match
 4276:     abcX
 4277: No match
 4278:     aBCX
 4279: No match
 4280:     bbX
 4281: No match
 4282:     BBX               
 4283: No match
 4284: 
 4285: /^([ab](?i)[cd]|[ef])/
 4286:     ac
 4287:  0: ac
 4288:     aC
 4289:  0: aC
 4290:     bD
 4291:  0: bD
 4292:     elephant
 4293:  0: e
 4294:     Europe 
 4295:  0: E
 4296:     frog
 4297:  0: f
 4298:     France
 4299:  0: F
 4300:     *** Failers
 4301: No match
 4302:     Africa     
 4303: No match
 4304: 
 4305: /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
 4306:     ab
 4307:  0: ab
 4308:     aBd
 4309:  0: aBd
 4310:     xy
 4311:  0: xy
 4312:     xY
 4313:  0: xY
 4314:     zebra
 4315:  0: z
 4316:     Zambesi
 4317:  0: Z
 4318:     *** Failers
 4319: No match
 4320:     aCD  
 4321: No match
 4322:     XY  
 4323: No match
 4324: 
 4325: /(?<=foo\n)^bar/m
 4326:     foo\nbar
 4327:  0: bar
 4328:     *** Failers
 4329: No match
 4330:     bar
 4331: No match
 4332:     baz\nbar   
 4333: No match
 4334: 
 4335: /(?<=(?<!foo)bar)baz/
 4336:     barbaz
 4337:  0: baz
 4338:     barbarbaz 
 4339:  0: baz
 4340:     koobarbaz 
 4341:  0: baz
 4342:     *** Failers
 4343: No match
 4344:     baz
 4345: No match
 4346:     foobarbaz 
 4347: No match
 4348: 
 4349: /The following tests are taken from the Perl 5.005 test suite; some of them/
 4350: /are compatible with 5.004, but I'd rather not have to sort them out./
 4351: No match
 4352: 
 4353: /abc/
 4354:     abc
 4355:  0: abc
 4356:     xabcy
 4357:  0: abc
 4358:     ababc
 4359:  0: abc
 4360:     *** Failers
 4361: No match
 4362:     xbc
 4363: No match
 4364:     axc
 4365: No match
 4366:     abx
 4367: No match
 4368: 
 4369: /ab*c/
 4370:     abc
 4371:  0: abc
 4372: 
 4373: /ab*bc/
 4374:     abc
 4375:  0: abc
 4376:     abbc
 4377:  0: abbc
 4378:     abbbbc
 4379:  0: abbbbc
 4380: 
 4381: /.{1}/
 4382:     abbbbc
 4383:  0: a
 4384: 
 4385: /.{3,4}/
 4386:     abbbbc
 4387:  0: abbb
 4388: 
 4389: /ab{0,}bc/
 4390:     abbbbc
 4391:  0: abbbbc
 4392: 
 4393: /ab+bc/
 4394:     abbc
 4395:  0: abbc
 4396:     *** Failers
 4397: No match
 4398:     abc
 4399: No match
 4400:     abq
 4401: No match
 4402: 
 4403: /ab+bc/
 4404:     abbbbc
 4405:  0: abbbbc
 4406: 
 4407: /ab{1,}bc/
 4408:     abbbbc
 4409:  0: abbbbc
 4410: 
 4411: /ab{1,3}bc/
 4412:     abbbbc
 4413:  0: abbbbc
 4414: 
 4415: /ab{3,4}bc/
 4416:     abbbbc
 4417:  0: abbbbc
 4418: 
 4419: /ab{4,5}bc/
 4420:     *** Failers
 4421: No match
 4422:     abq
 4423: No match
 4424:     abbbbc
 4425: No match
 4426: 
 4427: /ab?bc/
 4428:     abbc
 4429:  0: abbc
 4430:     abc
 4431:  0: abc
 4432: 
 4433: /ab{0,1}bc/
 4434:     abc
 4435:  0: abc
 4436: 
 4437: /ab?bc/
 4438: 
 4439: /ab?c/
 4440:     abc
 4441:  0: abc
 4442: 
 4443: /ab{0,1}c/
 4444:     abc
 4445:  0: abc
 4446: 
 4447: /^abc$/
 4448:     abc
 4449:  0: abc
 4450:     *** Failers
 4451: No match
 4452:     abbbbc
 4453: No match
 4454:     abcc
 4455: No match
 4456: 
 4457: /^abc/
 4458:     abcc
 4459:  0: abc
 4460: 
 4461: /^abc$/
 4462: 
 4463: /abc$/
 4464:     aabc
 4465:  0: abc
 4466:     *** Failers
 4467: No match
 4468:     aabc
 4469:  0: abc
 4470:     aabcd
 4471: No match
 4472: 
 4473: /^/
 4474:     abc
 4475:  0: 
 4476: 
 4477: /$/
 4478:     abc
 4479:  0: 
 4480: 
 4481: /a.c/
 4482:     abc
 4483:  0: abc
 4484:     axc
 4485:  0: axc
 4486: 
 4487: /a.*c/
 4488:     axyzc
 4489:  0: axyzc
 4490: 
 4491: /a[bc]d/
 4492:     abd
 4493:  0: abd
 4494:     *** Failers
 4495: No match
 4496:     axyzd
 4497: No match
 4498:     abc
 4499: No match
 4500: 
 4501: /a[b-d]e/
 4502:     ace
 4503:  0: ace
 4504: 
 4505: /a[b-d]/
 4506:     aac
 4507:  0: ac
 4508: 
 4509: /a[-b]/
 4510:     a-
 4511:  0: a-
 4512: 
 4513: /a[b-]/
 4514:     a-
 4515:  0: a-
 4516: 
 4517: /a]/
 4518:     a]
 4519:  0: a]
 4520: 
 4521: /a[]]b/
 4522:     a]b
 4523:  0: a]b
 4524: 
 4525: /a[^bc]d/
 4526:     aed
 4527:  0: aed
 4528:     *** Failers
 4529: No match
 4530:     abd
 4531: No match
 4532:     abd
 4533: No match
 4534: 
 4535: /a[^-b]c/
 4536:     adc
 4537:  0: adc
 4538: 
 4539: /a[^]b]c/
 4540:     adc
 4541:  0: adc
 4542:     *** Failers
 4543: No match
 4544:     a-c
 4545:  0: a-c
 4546:     a]c
 4547: No match
 4548: 
 4549: /\ba\b/
 4550:     a-
 4551:  0: a
 4552:     -a
 4553:  0: a
 4554:     -a-
 4555:  0: a
 4556: 
 4557: /\by\b/
 4558:     *** Failers
 4559: No match
 4560:     xy
 4561: No match
 4562:     yz
 4563: No match
 4564:     xyz
 4565: No match
 4566: 
 4567: /\Ba\B/
 4568:     *** Failers
 4569:  0: a
 4570:     a-
 4571: No match
 4572:     -a
 4573: No match
 4574:     -a-
 4575: No match
 4576: 
 4577: /\By\b/
 4578:     xy
 4579:  0: y
 4580: 
 4581: /\by\B/
 4582:     yz
 4583:  0: y
 4584: 
 4585: /\By\B/
 4586:     xyz
 4587:  0: y
 4588: 
 4589: /\w/
 4590:     a
 4591:  0: a
 4592: 
 4593: /\W/
 4594:     -
 4595:  0: -
 4596:     *** Failers
 4597:  0: *
 4598:     -
 4599:  0: -
 4600:     a
 4601: No match
 4602: 
 4603: /a\sb/
 4604:     a b
 4605:  0: a b
 4606: 
 4607: /a\Sb/
 4608:     a-b
 4609:  0: a-b
 4610:     *** Failers
 4611: No match
 4612:     a-b
 4613:  0: a-b
 4614:     a b
 4615: No match
 4616: 
 4617: /\d/
 4618:     1
 4619:  0: 1
 4620: 
 4621: /\D/
 4622:     -
 4623:  0: -
 4624:     *** Failers
 4625:  0: *
 4626:     -
 4627:  0: -
 4628:     1
 4629: No match
 4630: 
 4631: /[\w]/
 4632:     a
 4633:  0: a
 4634: 
 4635: /[\W]/
 4636:     -
 4637:  0: -
 4638:     *** Failers
 4639:  0: *
 4640:     -
 4641:  0: -
 4642:     a
 4643: No match
 4644: 
 4645: /a[\s]b/
 4646:     a b
 4647:  0: a b
 4648: 
 4649: /a[\S]b/
 4650:     a-b
 4651:  0: a-b
 4652:     *** Failers
 4653: No match
 4654:     a-b
 4655:  0: a-b
 4656:     a b
 4657: No match
 4658: 
 4659: /[\d]/
 4660:     1
 4661:  0: 1
 4662: 
 4663: /[\D]/
 4664:     -
 4665:  0: -
 4666:     *** Failers
 4667:  0: *
 4668:     -
 4669:  0: -
 4670:     1
 4671: No match
 4672: 
 4673: /ab|cd/
 4674:     abc
 4675:  0: ab
 4676:     abcd
 4677:  0: ab
 4678: 
 4679: /()ef/
 4680:     def
 4681:  0: ef
 4682: 
 4683: /$b/
 4684: 
 4685: /a\(b/
 4686:     a(b
 4687:  0: a(b
 4688: 
 4689: /a\(*b/
 4690:     ab
 4691:  0: ab
 4692:     a((b
 4693:  0: a((b
 4694: 
 4695: /a\\b/
 4696:     a\b
 4697: No match
 4698: 
 4699: /((a))/
 4700:     abc
 4701:  0: a
 4702: 
 4703: /(a)b(c)/
 4704:     abc
 4705:  0: abc
 4706: 
 4707: /a+b+c/
 4708:     aabbabc
 4709:  0: abc
 4710: 
 4711: /a{1,}b{1,}c/
 4712:     aabbabc
 4713:  0: abc
 4714: 
 4715: /a.+?c/
 4716:     abcabc
 4717:  0: abcabc
 4718:  1: abc
 4719: 
 4720: /(a+|b)*/
 4721:     ab
 4722:  0: ab
 4723:  1: a
 4724:  2: 
 4725: 
 4726: /(a+|b){0,}/
 4727:     ab
 4728:  0: ab
 4729:  1: a
 4730:  2: 
 4731: 
 4732: /(a+|b)+/
 4733:     ab
 4734:  0: ab
 4735:  1: a
 4736: 
 4737: /(a+|b){1,}/
 4738:     ab
 4739:  0: ab
 4740:  1: a
 4741: 
 4742: /(a+|b)?/
 4743:     ab
 4744:  0: a
 4745:  1: 
 4746: 
 4747: /(a+|b){0,1}/
 4748:     ab
 4749:  0: a
 4750:  1: 
 4751: 
 4752: /[^ab]*/
 4753:     cde
 4754:  0: cde
 4755: 
 4756: /abc/
 4757:     *** Failers
 4758: No match
 4759:     b
 4760: No match
 4761:     
 4762: 
 4763: /a*/
 4764:     
 4765: 
 4766: /([abc])*d/
 4767:     abbbcd
 4768:  0: abbbcd
 4769: 
 4770: /([abc])*bcd/
 4771:     abcd
 4772:  0: abcd
 4773: 
 4774: /a|b|c|d|e/
 4775:     e
 4776:  0: e
 4777: 
 4778: /(a|b|c|d|e)f/
 4779:     ef
 4780:  0: ef
 4781: 
 4782: /abcd*efg/
 4783:     abcdefg
 4784:  0: abcdefg
 4785: 
 4786: /ab*/
 4787:     xabyabbbz
 4788:  0: ab
 4789:     xayabbbz
 4790:  0: a
 4791: 
 4792: /(ab|cd)e/
 4793:     abcde
 4794:  0: cde
 4795: 
 4796: /[abhgefdc]ij/
 4797:     hij
 4798:  0: hij
 4799: 
 4800: /^(ab|cd)e/
 4801: 
 4802: /(abc|)ef/
 4803:     abcdef
 4804:  0: ef
 4805: 
 4806: /(a|b)c*d/
 4807:     abcd
 4808:  0: bcd
 4809: 
 4810: /(ab|ab*)bc/
 4811:     abc
 4812:  0: abc
 4813: 
 4814: /a([bc]*)c*/
 4815:     abc
 4816:  0: abc
 4817:  1: a
 4818: 
 4819: /a([bc]*)(c*d)/
 4820:     abcd
 4821:  0: abcd
 4822: 
 4823: /a([bc]+)(c*d)/
 4824:     abcd
 4825:  0: abcd
 4826: 
 4827: /a([bc]*)(c+d)/
 4828:     abcd
 4829:  0: abcd
 4830: 
 4831: /a[bcd]*dcdcde/
 4832:     adcdcde
 4833:  0: adcdcde
 4834: 
 4835: /a[bcd]+dcdcde/
 4836:     *** Failers
 4837: No match
 4838:     abcde
 4839: No match
 4840:     adcdcde
 4841: No match
 4842: 
 4843: /(ab|a)b*c/
 4844:     abc
 4845:  0: abc
 4846: 
 4847: /((a)(b)c)(d)/
 4848:     abcd
 4849:  0: abcd
 4850: 
 4851: /[a-zA-Z_][a-zA-Z0-9_]*/
 4852:     alpha
 4853:  0: alpha
 4854: 
 4855: /^a(bc+|b[eh])g|.h$/
 4856:     abh
 4857:  0: bh
 4858: 
 4859: /(bc+d$|ef*g.|h?i(j|k))/
 4860:     effgz
 4861:  0: effgz
 4862:     ij
 4863:  0: ij
 4864:     reffgz
 4865:  0: effgz
 4866:     *** Failers
 4867: No match
 4868:     effg
 4869: No match
 4870:     bcdd
 4871: No match
 4872: 
 4873: /((((((((((a))))))))))/
 4874:     a
 4875:  0: a
 4876: 
 4877: /(((((((((a)))))))))/
 4878:     a
 4879:  0: a
 4880: 
 4881: /multiple words of text/
 4882:     *** Failers
 4883: No match
 4884:     aa
 4885: No match
 4886:     uh-uh
 4887: No match
 4888: 
 4889: /multiple words/
 4890:     multiple words, yeah
 4891:  0: multiple words
 4892: 
 4893: /(.*)c(.*)/
 4894:     abcde
 4895:  0: abcde
 4896: 
 4897: /\((.*), (.*)\)/
 4898:     (a, b)
 4899:  0: (a, b)
 4900: 
 4901: /[k]/
 4902: 
 4903: /abcd/
 4904:     abcd
 4905:  0: abcd
 4906: 
 4907: /a(bc)d/
 4908:     abcd
 4909:  0: abcd
 4910: 
 4911: /a[-]?c/
 4912:     ac
 4913:  0: ac
 4914: 
 4915: /abc/i
 4916:     ABC
 4917:  0: ABC
 4918:     XABCY
 4919:  0: ABC
 4920:     ABABC
 4921:  0: ABC
 4922:     *** Failers
 4923: No match
 4924:     aaxabxbaxbbx
 4925: No match
 4926:     XBC
 4927: No match
 4928:     AXC
 4929: No match
 4930:     ABX
 4931: No match
 4932: 
 4933: /ab*c/i
 4934:     ABC
 4935:  0: ABC
 4936: 
 4937: /ab*bc/i
 4938:     ABC
 4939:  0: ABC
 4940:     ABBC
 4941:  0: ABBC
 4942: 
 4943: /ab*?bc/i
 4944:     ABBBBC
 4945:  0: ABBBBC
 4946: 
 4947: /ab{0,}?bc/i
 4948:     ABBBBC
 4949:  0: ABBBBC
 4950: 
 4951: /ab+?bc/i
 4952:     ABBC
 4953:  0: ABBC
 4954: 
 4955: /ab+bc/i
 4956:     *** Failers
 4957: No match
 4958:     ABC
 4959: No match
 4960:     ABQ
 4961: No match
 4962: 
 4963: /ab{1,}bc/i
 4964: 
 4965: /ab+bc/i
 4966:     ABBBBC
 4967:  0: ABBBBC
 4968: 
 4969: /ab{1,}?bc/i
 4970:     ABBBBC
 4971:  0: ABBBBC
 4972: 
 4973: /ab{1,3}?bc/i
 4974:     ABBBBC
 4975:  0: ABBBBC
 4976: 
 4977: /ab{3,4}?bc/i
 4978:     ABBBBC
 4979:  0: ABBBBC
 4980: 
 4981: /ab{4,5}?bc/i
 4982:     *** Failers
 4983: No match
 4984:     ABQ
 4985: No match
 4986:     ABBBBC
 4987: No match
 4988: 
 4989: /ab??bc/i
 4990:     ABBC
 4991:  0: ABBC
 4992:     ABC
 4993:  0: ABC
 4994: 
 4995: /ab{0,1}?bc/i
 4996:     ABC
 4997:  0: ABC
 4998: 
 4999: /ab??bc/i
 5000: 
 5001: /ab??c/i
 5002:     ABC
 5003:  0: ABC
 5004: 
 5005: /ab{0,1}?c/i
 5006:     ABC
 5007:  0: ABC
 5008: 
 5009: /^abc$/i
 5010:     ABC
 5011:  0: ABC
 5012:     *** Failers
 5013: No match
 5014:     ABBBBC
 5015: No match
 5016:     ABCC
 5017: No match
 5018: 
 5019: /^abc/i
 5020:     ABCC
 5021:  0: ABC
 5022: 
 5023: /^abc$/i
 5024: 
 5025: /abc$/i
 5026:     AABC
 5027:  0: ABC
 5028: 
 5029: /^/i
 5030:     ABC
 5031:  0: 
 5032: 
 5033: /$/i
 5034:     ABC
 5035:  0: 
 5036: 
 5037: /a.c/i
 5038:     ABC
 5039:  0: ABC
 5040:     AXC
 5041:  0: AXC
 5042: 
 5043: /a.*?c/i
 5044:     AXYZC
 5045:  0: AXYZC
 5046: 
 5047: /a.*c/i
 5048:     *** Failers
 5049: No match
 5050:     AABC
 5051:  0: AABC
 5052:     AXYZD
 5053: No match
 5054: 
 5055: /a[bc]d/i
 5056:     ABD
 5057:  0: ABD
 5058: 
 5059: /a[b-d]e/i
 5060:     ACE
 5061:  0: ACE
 5062:     *** Failers
 5063: No match
 5064:     ABC
 5065: No match
 5066:     ABD
 5067: No match
 5068: 
 5069: /a[b-d]/i
 5070:     AAC
 5071:  0: AC
 5072: 
 5073: /a[-b]/i
 5074:     A-
 5075:  0: A-
 5076: 
 5077: /a[b-]/i
 5078:     A-
 5079:  0: A-
 5080: 
 5081: /a]/i
 5082:     A]
 5083:  0: A]
 5084: 
 5085: /a[]]b/i
 5086:     A]B
 5087:  0: A]B
 5088: 
 5089: /a[^bc]d/i
 5090:     AED
 5091:  0: AED
 5092: 
 5093: /a[^-b]c/i
 5094:     ADC
 5095:  0: ADC
 5096:     *** Failers
 5097: No match
 5098:     ABD
 5099: No match
 5100:     A-C
 5101: No match
 5102: 
 5103: /a[^]b]c/i
 5104:     ADC
 5105:  0: ADC
 5106: 
 5107: /ab|cd/i
 5108:     ABC
 5109:  0: AB
 5110:     ABCD
 5111:  0: AB
 5112: 
 5113: /()ef/i
 5114:     DEF
 5115:  0: EF
 5116: 
 5117: /$b/i
 5118:     *** Failers
 5119: No match
 5120:     A]C
 5121: No match
 5122:     B
 5123: No match
 5124: 
 5125: /a\(b/i
 5126:     A(B
 5127:  0: A(B
 5128: 
 5129: /a\(*b/i
 5130:     AB
 5131:  0: AB
 5132:     A((B
 5133:  0: A((B
 5134: 
 5135: /a\\b/i
 5136:     A\B
 5137: No match
 5138: 
 5139: /((a))/i
 5140:     ABC
 5141:  0: A
 5142: 
 5143: /(a)b(c)/i
 5144:     ABC
 5145:  0: ABC
 5146: 
 5147: /a+b+c/i
 5148:     AABBABC
 5149:  0: ABC
 5150: 
 5151: /a{1,}b{1,}c/i
 5152:     AABBABC
 5153:  0: ABC
 5154: 
 5155: /a.+?c/i
 5156:     ABCABC
 5157:  0: ABCABC
 5158:  1: ABC
 5159: 
 5160: /a.*?c/i
 5161:     ABCABC
 5162:  0: ABCABC
 5163:  1: ABC
 5164: 
 5165: /a.{0,5}?c/i
 5166:     ABCABC
 5167:  0: ABCABC
 5168:  1: ABC
 5169: 
 5170: /(a+|b)*/i
 5171:     AB
 5172:  0: AB
 5173:  1: A
 5174:  2: 
 5175: 
 5176: /(a+|b){0,}/i
 5177:     AB
 5178:  0: AB
 5179:  1: A
 5180:  2: 
 5181: 
 5182: /(a+|b)+/i
 5183:     AB
 5184:  0: AB
 5185:  1: A
 5186: 
 5187: /(a+|b){1,}/i
 5188:     AB
 5189:  0: AB
 5190:  1: A
 5191: 
 5192: /(a+|b)?/i
 5193:     AB
 5194:  0: A
 5195:  1: 
 5196: 
 5197: /(a+|b){0,1}/i
 5198:     AB
 5199:  0: A
 5200:  1: 
 5201: 
 5202: /(a+|b){0,1}?/i
 5203:     AB
 5204:  0: A
 5205:  1: 
 5206: 
 5207: /[^ab]*/i
 5208:     CDE
 5209:  0: CDE
 5210: 
 5211: /abc/i
 5212: 
 5213: /a*/i
 5214:     
 5215: 
 5216: /([abc])*d/i
 5217:     ABBBCD
 5218:  0: ABBBCD
 5219: 
 5220: /([abc])*bcd/i
 5221:     ABCD
 5222:  0: ABCD
 5223: 
 5224: /a|b|c|d|e/i
 5225:     E
 5226:  0: E
 5227: 
 5228: /(a|b|c|d|e)f/i
 5229:     EF
 5230:  0: EF
 5231: 
 5232: /abcd*efg/i
 5233:     ABCDEFG
 5234:  0: ABCDEFG
 5235: 
 5236: /ab*/i
 5237:     XABYABBBZ
 5238:  0: AB
 5239:     XAYABBBZ
 5240:  0: A
 5241: 
 5242: /(ab|cd)e/i
 5243:     ABCDE
 5244:  0: CDE
 5245: 
 5246: /[abhgefdc]ij/i
 5247:     HIJ
 5248:  0: HIJ
 5249: 
 5250: /^(ab|cd)e/i
 5251:     ABCDE
 5252: No match
 5253: 
 5254: /(abc|)ef/i
 5255:     ABCDEF
 5256:  0: EF
 5257: 
 5258: /(a|b)c*d/i
 5259:     ABCD
 5260:  0: BCD
 5261: 
 5262: /(ab|ab*)bc/i
 5263:     ABC
 5264:  0: ABC
 5265: 
 5266: /a([bc]*)c*/i
 5267:     ABC
 5268:  0: ABC
 5269:  1: A
 5270: 
 5271: /a([bc]*)(c*d)/i
 5272:     ABCD
 5273:  0: ABCD
 5274: 
 5275: /a([bc]+)(c*d)/i
 5276:     ABCD
 5277:  0: ABCD
 5278: 
 5279: /a([bc]*)(c+d)/i
 5280:     ABCD
 5281:  0: ABCD
 5282: 
 5283: /a[bcd]*dcdcde/i
 5284:     ADCDCDE
 5285:  0: ADCDCDE
 5286: 
 5287: /a[bcd]+dcdcde/i
 5288: 
 5289: /(ab|a)b*c/i
 5290:     ABC
 5291:  0: ABC
 5292: 
 5293: /((a)(b)c)(d)/i
 5294:     ABCD
 5295:  0: ABCD
 5296: 
 5297: /[a-zA-Z_][a-zA-Z0-9_]*/i
 5298:     ALPHA
 5299:  0: ALPHA
 5300: 
 5301: /^a(bc+|b[eh])g|.h$/i
 5302:     ABH
 5303:  0: BH
 5304: 
 5305: /(bc+d$|ef*g.|h?i(j|k))/i
 5306:     EFFGZ
 5307:  0: EFFGZ
 5308:     IJ
 5309:  0: IJ
 5310:     REFFGZ
 5311:  0: EFFGZ
 5312:     *** Failers
 5313: No match
 5314:     ADCDCDE
 5315: No match
 5316:     EFFG
 5317: No match
 5318:     BCDD
 5319: No match
 5320: 
 5321: /((((((((((a))))))))))/i
 5322:     A
 5323:  0: A
 5324: 
 5325: /(((((((((a)))))))))/i
 5326:     A
 5327:  0: A
 5328: 
 5329: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
 5330:     A
 5331:  0: A
 5332: 
 5333: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
 5334:     C
 5335:  0: C
 5336: 
 5337: /multiple words of text/i
 5338:     *** Failers
 5339: No match
 5340:     AA
 5341: No match
 5342:     UH-UH
 5343: No match
 5344: 
 5345: /multiple words/i
 5346:     MULTIPLE WORDS, YEAH
 5347:  0: MULTIPLE WORDS
 5348: 
 5349: /(.*)c(.*)/i
 5350:     ABCDE
 5351:  0: ABCDE
 5352: 
 5353: /\((.*), (.*)\)/i
 5354:     (A, B)
 5355:  0: (A, B)
 5356: 
 5357: /[k]/i
 5358: 
 5359: /abcd/i
 5360:     ABCD
 5361:  0: ABCD
 5362: 
 5363: /a(bc)d/i
 5364:     ABCD
 5365:  0: ABCD
 5366: 
 5367: /a[-]?c/i
 5368:     AC
 5369:  0: AC
 5370: 
 5371: /a(?!b)./
 5372:     abad
 5373:  0: ad
 5374: 
 5375: /a(?=d)./
 5376:     abad
 5377:  0: ad
 5378: 
 5379: /a(?=c|d)./
 5380:     abad
 5381:  0: ad
 5382: 
 5383: /a(?:b|c|d)(.)/
 5384:     ace
 5385:  0: ace
 5386: 
 5387: /a(?:b|c|d)*(.)/
 5388:     ace
 5389:  0: ace
 5390:  1: ac
 5391: 
 5392: /a(?:b|c|d)+?(.)/
 5393:     ace
 5394:  0: ace
 5395:     acdbcdbe
 5396:  0: acdbcdbe
 5397:  1: acdbcdb
 5398:  2: acdbcd
 5399:  3: acdbc
 5400:  4: acdb
 5401:  5: acd
 5402: 
 5403: /a(?:b|c|d)+(.)/
 5404:     acdbcdbe
 5405:  0: acdbcdbe
 5406:  1: acdbcdb
 5407:  2: acdbcd
 5408:  3: acdbc
 5409:  4: acdb
 5410:  5: acd
 5411: 
 5412: /a(?:b|c|d){2}(.)/
 5413:     acdbcdbe
 5414:  0: acdb
 5415: 
 5416: /a(?:b|c|d){4,5}(.)/
 5417:     acdbcdbe
 5418:  0: acdbcdb
 5419:  1: acdbcd
 5420: 
 5421: /a(?:b|c|d){4,5}?(.)/
 5422:     acdbcdbe
 5423:  0: acdbcdb
 5424:  1: acdbcd
 5425: 
 5426: /((foo)|(bar))*/
 5427:     foobar
 5428:  0: foobar
 5429:  1: foo
 5430:  2: 
 5431: 
 5432: /a(?:b|c|d){6,7}(.)/
 5433:     acdbcdbe
 5434:  0: acdbcdbe
 5435: 
 5436: /a(?:b|c|d){6,7}?(.)/
 5437:     acdbcdbe
 5438:  0: acdbcdbe
 5439: 
 5440: /a(?:b|c|d){5,6}(.)/
 5441:     acdbcdbe
 5442:  0: acdbcdbe
 5443:  1: acdbcdb
 5444: 
 5445: /a(?:b|c|d){5,6}?(.)/
 5446:     acdbcdbe
 5447:  0: acdbcdbe
 5448:  1: acdbcdb
 5449: 
 5450: /a(?:b|c|d){5,7}(.)/
 5451:     acdbcdbe
 5452:  0: acdbcdbe
 5453:  1: acdbcdb
 5454: 
 5455: /a(?:b|c|d){5,7}?(.)/
 5456:     acdbcdbe
 5457:  0: acdbcdbe
 5458:  1: acdbcdb
 5459: 
 5460: /a(?:b|(c|e){1,2}?|d)+?(.)/
 5461:     ace
 5462:  0: ace
 5463: 
 5464: /^(.+)?B/
 5465:     AB
 5466:  0: AB
 5467: 
 5468: /^([^a-z])|(\^)$/
 5469:     .
 5470:  0: .
 5471: 
 5472: /^[<>]&/
 5473:     <&OUT
 5474:  0: <&
 5475: 
 5476: /(?:(f)(o)(o)|(b)(a)(r))*/
 5477:     foobar
 5478:  0: foobar
 5479:  1: foo
 5480:  2: 
 5481: 
 5482: /(?<=a)b/
 5483:     ab
 5484:  0: b
 5485:     *** Failers
 5486: No match
 5487:     cb
 5488: No match
 5489:     b
 5490: No match
 5491: 
 5492: /(?<!c)b/
 5493:     ab
 5494:  0: b
 5495:     b
 5496:  0: b
 5497:     b
 5498:  0: b
 5499: 
 5500: /(?:..)*a/
 5501:     aba
 5502:  0: aba
 5503:  1: a
 5504: 
 5505: /(?:..)*?a/
 5506:     aba
 5507:  0: aba
 5508:  1: a
 5509: 
 5510: /^(){3,5}/
 5511:     abc
 5512:  0: 
 5513: 
 5514: /^(a+)*ax/
 5515:     aax
 5516:  0: aax
 5517: 
 5518: /^((a|b)+)*ax/
 5519:     aax
 5520:  0: aax
 5521: 
 5522: /^((a|bc)+)*ax/
 5523:     aax
 5524:  0: aax
 5525: 
 5526: /(a|x)*ab/
 5527:     cab
 5528:  0: ab
 5529: 
 5530: /(a)*ab/
 5531:     cab
 5532:  0: ab
 5533: 
 5534: /(?:(?i)a)b/
 5535:     ab
 5536:  0: ab
 5537: 
 5538: /((?i)a)b/
 5539:     ab
 5540:  0: ab
 5541: 
 5542: /(?:(?i)a)b/
 5543:     Ab
 5544:  0: Ab
 5545: 
 5546: /((?i)a)b/
 5547:     Ab
 5548:  0: Ab
 5549: 
 5550: /(?:(?i)a)b/
 5551:     *** Failers
 5552: No match
 5553:     cb
 5554: No match
 5555:     aB
 5556: No match
 5557: 
 5558: /((?i)a)b/
 5559: 
 5560: /(?i:a)b/
 5561:     ab
 5562:  0: ab
 5563: 
 5564: /((?i:a))b/
 5565:     ab
 5566:  0: ab
 5567: 
 5568: /(?i:a)b/
 5569:     Ab
 5570:  0: Ab
 5571: 
 5572: /((?i:a))b/
 5573:     Ab
 5574:  0: Ab
 5575: 
 5576: /(?i:a)b/
 5577:     *** Failers
 5578: No match
 5579:     aB
 5580: No match
 5581:     aB
 5582: No match
 5583: 
 5584: /((?i:a))b/
 5585: 
 5586: /(?:(?-i)a)b/i
 5587:     ab
 5588:  0: ab
 5589: 
 5590: /((?-i)a)b/i
 5591:     ab
 5592:  0: ab
 5593: 
 5594: /(?:(?-i)a)b/i
 5595:     aB
 5596:  0: aB
 5597: 
 5598: /((?-i)a)b/i
 5599:     aB
 5600:  0: aB
 5601: 
 5602: /(?:(?-i)a)b/i
 5603:     *** Failers
 5604: No match
 5605:     aB
 5606:  0: aB
 5607:     Ab
 5608: No match
 5609: 
 5610: /((?-i)a)b/i
 5611: 
 5612: /(?:(?-i)a)b/i
 5613:     aB
 5614:  0: aB
 5615: 
 5616: /((?-i)a)b/i
 5617:     aB
 5618:  0: aB
 5619: 
 5620: /(?:(?-i)a)b/i
 5621:     *** Failers
 5622: No match
 5623:     Ab
 5624: No match
 5625:     AB
 5626: No match
 5627: 
 5628: /((?-i)a)b/i
 5629: 
 5630: /(?-i:a)b/i
 5631:     ab
 5632:  0: ab
 5633: 
 5634: /((?-i:a))b/i
 5635:     ab
 5636:  0: ab
 5637: 
 5638: /(?-i:a)b/i
 5639:     aB
 5640:  0: aB
 5641: 
 5642: /((?-i:a))b/i
 5643:     aB
 5644:  0: aB
 5645: 
 5646: /(?-i:a)b/i
 5647:     *** Failers
 5648: No match
 5649:     AB
 5650: No match
 5651:     Ab
 5652: No match
 5653: 
 5654: /((?-i:a))b/i
 5655: 
 5656: /(?-i:a)b/i
 5657:     aB
 5658:  0: aB
 5659: 
 5660: /((?-i:a))b/i
 5661:     aB
 5662:  0: aB
 5663: 
 5664: /(?-i:a)b/i
 5665:     *** Failers
 5666: No match
 5667:     Ab
 5668: No match
 5669:     AB
 5670: No match
 5671: 
 5672: /((?-i:a))b/i
 5673: 
 5674: /((?-i:a.))b/i
 5675:     *** Failers
 5676: No match
 5677:     AB
 5678: No match
 5679:     a\nB
 5680: No match
 5681: 
 5682: /((?s-i:a.))b/i
 5683:     a\nB
 5684:  0: a\x0aB
 5685: 
 5686: /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
 5687:     cabbbb
 5688:  0: cabbbb
 5689: 
 5690: /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
 5691:     caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 5692:  0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 5693: 
 5694: /foo\w*\d{4}baz/
 5695:     foobar1234baz
 5696:  0: foobar1234baz
 5697: 
 5698: /x(~~)*(?:(?:F)?)?/
 5699:     x~~
 5700:  0: x~~
 5701:  1: x
 5702: 
 5703: /^a(?#xxx){3}c/
 5704:     aaac
 5705:  0: aaac
 5706: 
 5707: /^a (?#xxx) (?#yyy) {3}c/x
 5708:     aaac
 5709:  0: aaac
 5710: 
 5711: /(?<![cd])b/
 5712:     *** Failers
 5713: No match
 5714:     B\nB
 5715: No match
 5716:     dbcb
 5717: No match
 5718: 
 5719: /(?<![cd])[ab]/
 5720:     dbaacb
 5721:  0: a
 5722: 
 5723: /(?<!(c|d))b/
 5724: 
 5725: /(?<!(c|d))[ab]/
 5726:     dbaacb
 5727:  0: a
 5728: 
 5729: /(?<!cd)[ab]/
 5730:     cdaccb
 5731:  0: b
 5732: 
 5733: /^(?:a?b?)*$/
 5734:     *** Failers
 5735: No match
 5736:     dbcb
 5737: No match
 5738:     a--
 5739: No match
 5740: 
 5741: /((?s)^a(.))((?m)^b$)/
 5742:     a\nb\nc\n
 5743:  0: a\x0ab
 5744: 
 5745: /((?m)^b$)/
 5746:     a\nb\nc\n
 5747:  0: b
 5748: 
 5749: /(?m)^b/
 5750:     a\nb\n
 5751:  0: b
 5752: 
 5753: /(?m)^(b)/
 5754:     a\nb\n
 5755:  0: b
 5756: 
 5757: /((?m)^b)/
 5758:     a\nb\n
 5759:  0: b
 5760: 
 5761: /\n((?m)^b)/
 5762:     a\nb\n
 5763:  0: \x0ab
 5764: 
 5765: /((?s).)c(?!.)/
 5766:     a\nb\nc\n
 5767:  0: \x0ac
 5768:     a\nb\nc\n
 5769:  0: \x0ac
 5770: 
 5771: /((?s)b.)c(?!.)/
 5772:     a\nb\nc\n
 5773:  0: b\x0ac
 5774:     a\nb\nc\n
 5775:  0: b\x0ac
 5776: 
 5777: /^b/
 5778: 
 5779: /()^b/
 5780:     *** Failers
 5781: No match
 5782:     a\nb\nc\n
 5783: No match
 5784:     a\nb\nc\n
 5785: No match
 5786: 
 5787: /((?m)^b)/
 5788:     a\nb\nc\n
 5789:  0: b
 5790: 
 5791: /(?(?!a)a|b)/
 5792: 
 5793: /(?(?!a)b|a)/
 5794:     a
 5795:  0: a
 5796: 
 5797: /(?(?=a)b|a)/
 5798:     *** Failers
 5799: No match
 5800:     a
 5801: No match
 5802:     a
 5803: No match
 5804: 
 5805: /(?(?=a)a|b)/
 5806:     a
 5807:  0: a
 5808: 
 5809: /(\w+:)+/
 5810:     one:
 5811:  0: one:
 5812: 
 5813: /$(?<=^(a))/
 5814:     a
 5815:  0: 
 5816: 
 5817: /([\w:]+::)?(\w+)$/
 5818:     abcd
 5819:  0: abcd
 5820:     xy:z:::abcd
 5821:  0: xy:z:::abcd
 5822: 
 5823: /^[^bcd]*(c+)/
 5824:     aexycd
 5825:  0: aexyc
 5826: 
 5827: /(a*)b+/
 5828:     caab
 5829:  0: aab
 5830: 
 5831: /([\w:]+::)?(\w+)$/
 5832:     abcd
 5833:  0: abcd
 5834:     xy:z:::abcd
 5835:  0: xy:z:::abcd
 5836:     *** Failers
 5837:  0: Failers
 5838:     abcd:
 5839: No match
 5840:     abcd:
 5841: No match
 5842: 
 5843: /^[^bcd]*(c+)/
 5844:     aexycd
 5845:  0: aexyc
 5846: 
 5847: /(>a+)ab/
 5848: 
 5849: /(?>a+)b/
 5850:     aaab
 5851:  0: aaab
 5852: 
 5853: /([[:]+)/
 5854:     a:[b]:
 5855:  0: :[
 5856: 
 5857: /([[=]+)/
 5858:     a=[b]=
 5859:  0: =[
 5860: 
 5861: /([[.]+)/
 5862:     a.[b].
 5863:  0: .[
 5864: 
 5865: /((?>a+)b)/
 5866:     aaab
 5867:  0: aaab
 5868: 
 5869: /(?>(a+))b/
 5870:     aaab
 5871:  0: aaab
 5872: 
 5873: /((?>[^()]+)|\([^()]*\))+/
 5874:     ((abc(ade)ufh()()x
 5875:  0: abc(ade)ufh()()x
 5876:  1: abc(ade)ufh()()
 5877:  2: abc(ade)ufh()
 5878:  3: abc(ade)ufh
 5879:  4: abc(ade)
 5880:  5: abc
 5881: 
 5882: /a\Z/
 5883:     *** Failers
 5884: No match
 5885:     aaab
 5886: No match
 5887:     a\nb\n
 5888: No match
 5889: 
 5890: /b\Z/
 5891:     a\nb\n
 5892:  0: b
 5893: 
 5894: /b\z/
 5895: 
 5896: /b\Z/
 5897:     a\nb
 5898:  0: b
 5899: 
 5900: /b\z/
 5901:     a\nb
 5902:  0: b
 5903:     *** Failers
 5904: No match
 5905:     
 5906: /(?>.*)(?<=(abcd|wxyz))/
 5907:     alphabetabcd
 5908:  0: alphabetabcd
 5909:     endingwxyz
 5910:  0: endingwxyz
 5911:     *** Failers
 5912: No match
 5913:     a rather long string that doesn't end with one of them
 5914: No match
 5915: 
 5916: /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
 5917:     word cat dog elephant mussel cow horse canary baboon snake shark otherword
 5918:  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
 5919:     word cat dog elephant mussel cow horse canary baboon snake shark
 5920: No match
 5921:   
 5922: /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
 5923:     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
 5924: No match
 5925: 
 5926: /(?<=\d{3}(?!999))foo/
 5927:     999foo
 5928:  0: foo
 5929:     123999foo 
 5930:  0: foo
 5931:     *** Failers
 5932: No match
 5933:     123abcfoo
 5934: No match
 5935:     
 5936: /(?<=(?!...999)\d{3})foo/
 5937:     999foo
 5938:  0: foo
 5939:     123999foo 
 5940:  0: foo
 5941:     *** Failers
 5942: No match
 5943:     123abcfoo
 5944: No match
 5945: 
 5946: /(?<=\d{3}(?!999)...)foo/
 5947:     123abcfoo
 5948:  0: foo
 5949:     123456foo 
 5950:  0: foo
 5951:     *** Failers
 5952: No match
 5953:     123999foo  
 5954: No match
 5955:     
 5956: /(?<=\d{3}...)(?<!999)foo/
 5957:     123abcfoo   
 5958:  0: foo
 5959:     123456foo 
 5960:  0: foo
 5961:     *** Failers
 5962: No match
 5963:     123999foo  
 5964: No match
 5965: 
 5966: /((Z)+|A)*/
 5967:     ZABCDEFG
 5968:  0: ZA
 5969:  1: Z
 5970:  2: 
 5971: 
 5972: /(Z()|A)*/
 5973:     ZABCDEFG
 5974:  0: ZA
 5975:  1: Z
 5976:  2: 
 5977: 
 5978: /(Z(())|A)*/
 5979:     ZABCDEFG
 5980:  0: ZA
 5981:  1: Z
 5982:  2: 
 5983: 
 5984: /((?>Z)+|A)*/
 5985:     ZABCDEFG
 5986:  0: ZA
 5987:  1: Z
 5988:  2: 
 5989: 
 5990: /((?>)+|A)*/
 5991:     ZABCDEFG
 5992:  0: 
 5993: 
 5994: /a*/g
 5995:     abbab
 5996:  0: a
 5997:  0: 
 5998:  0: 
 5999:  0: a
 6000:  0: 
 6001:  0: 
 6002: 
 6003: /^[\d-a]/
 6004:     abcde
 6005:  0: a
 6006:     -things
 6007:  0: -
 6008:     0digit
 6009:  0: 0
 6010:     *** Failers
 6011: No match
 6012:     bcdef    
 6013: No match
 6014:     
 6015: /[[:space:]]+/
 6016:     > \x09\x0a\x0c\x0d\x0b<
 6017:  0:  \x09\x0a\x0c\x0d\x0b
 6018:      
 6019: /[[:blank:]]+/
 6020:     > \x09\x0a\x0c\x0d\x0b<
 6021:  0:  \x09
 6022:      
 6023: /[\s]+/
 6024:     > \x09\x0a\x0c\x0d\x0b<
 6025:  0:  \x09\x0a\x0c\x0d\x0b
 6026:      
 6027: /\s+/
 6028:     > \x09\x0a\x0c\x0d\x0b<
 6029:  0:  \x09\x0a\x0c\x0d\x0b
 6030:      
 6031: /ab/x
 6032:     ab
 6033:  0: ab
 6034: 
 6035: /(?!\A)x/m
 6036:   a\nxb\n
 6037:  0: x
 6038: 
 6039: /(?!^)x/m
 6040:   a\nxb\n
 6041: No match
 6042: 
 6043: /abc\Qabc\Eabc/
 6044:     abcabcabc
 6045:  0: abcabcabc
 6046:     
 6047: /abc\Q(*+|\Eabc/
 6048:     abc(*+|abc 
 6049:  0: abc(*+|abc
 6050: 
 6051: /   abc\Q abc\Eabc/x
 6052:     abc abcabc
 6053:  0: abc abcabc
 6054:     *** Failers
 6055: No match
 6056:     abcabcabc  
 6057: No match
 6058:     
 6059: /abc#comment
 6060:     \Q#not comment
 6061:     literal\E/x
 6062:     abc#not comment\n    literal     
 6063:  0: abc#not comment\x0a    literal
 6064: 
 6065: /abc#comment
 6066:     \Q#not comment
 6067:     literal/x
 6068:     abc#not comment\n    literal     
 6069:  0: abc#not comment\x0a    literal
 6070: 
 6071: /abc#comment
 6072:     \Q#not comment
 6073:     literal\E #more comment
 6074:     /x
 6075:     abc#not comment\n    literal     
 6076:  0: abc#not comment\x0a    literal
 6077: 
 6078: /abc#comment
 6079:     \Q#not comment
 6080:     literal\E #more comment/x
 6081:     abc#not comment\n    literal     
 6082:  0: abc#not comment\x0a    literal
 6083: 
 6084: /\Qabc\$xyz\E/
 6085:     abc\\\$xyz
 6086:  0: abc\$xyz
 6087: 
 6088: /\Qabc\E\$\Qxyz\E/
 6089:     abc\$xyz
 6090:  0: abc$xyz
 6091: 
 6092: /\Gabc/
 6093:     abc
 6094:  0: abc
 6095:     *** Failers
 6096: No match
 6097:     xyzabc  
 6098: No match
 6099: 
 6100: /\Gabc./g
 6101:     abc1abc2xyzabc3
 6102:  0: abc1
 6103:  0: abc2
 6104: 
 6105: /abc./g
 6106:     abc1abc2xyzabc3 
 6107:  0: abc1
 6108:  0: abc2
 6109:  0: abc3
 6110: 
 6111: /a(?x: b c )d/
 6112:     XabcdY
 6113:  0: abcd
 6114:     *** Failers 
 6115: No match
 6116:     Xa b c d Y 
 6117: No match
 6118: 
 6119: /((?x)x y z | a b c)/
 6120:     XabcY
 6121:  0: abc
 6122:     AxyzB 
 6123:  0: xyz
 6124: 
 6125: /(?i)AB(?-i)C/
 6126:     XabCY
 6127:  0: abC
 6128:     *** Failers
 6129: No match
 6130:     XabcY  
 6131: No match
 6132: 
 6133: /((?i)AB(?-i)C|D)E/
 6134:     abCE
 6135:  0: abCE
 6136:     DE
 6137:  0: DE
 6138:     *** Failers
 6139: No match
 6140:     abcE
 6141: No match
 6142:     abCe  
 6143: No match
 6144:     dE
 6145: No match
 6146:     De    
 6147: No match
 6148: 
 6149: /[z\Qa-d]\E]/
 6150:     z
 6151:  0: z
 6152:     a
 6153:  0: a
 6154:     -
 6155:  0: -
 6156:     d
 6157:  0: d
 6158:     ] 
 6159:  0: ]
 6160:     *** Failers
 6161:  0: a
 6162:     b     
 6163: No match
 6164: 
 6165: /[\z\C]/
 6166:     z
 6167:  0: z
 6168:     C 
 6169:  0: C
 6170:     
 6171: /\M/
 6172:     M 
 6173:  0: M
 6174:     
 6175: /(a+)*b/
 6176:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
 6177: No match
 6178:     
 6179: /(?i)reg(?:ul(?:[aä]|ae)r|ex)/
 6180:     REGular
 6181:  0: REGular
 6182:     regulaer
 6183:  0: regulaer
 6184:     Regex  
 6185:  0: Regex
 6186:     regulär 
 6187:  0: regul\xe4r
 6188: 
 6189: /Åæåä[à-ÿÀ-ß]+/
 6190:     Åæåäà
 6191:  0: \xc5\xe6\xe5\xe4\xe0
 6192:     Åæåäÿ
 6193:  0: \xc5\xe6\xe5\xe4\xff
 6194:     ÅæåäÀ
 6195:  0: \xc5\xe6\xe5\xe4\xc0
 6196:     Åæåäß
 6197:  0: \xc5\xe6\xe5\xe4\xdf
 6198: 
 6199: /(?<=Z)X./
 6200:     \x84XAZXB
 6201:  0: XB
 6202: 
 6203: /^(?(2)a|(1)(2))+$/
 6204:     123a
 6205: Error -17 (backreference condition or recursion test not supported for DFA matching)
 6206: 
 6207: /(?<=a|bbbb)c/
 6208:     ac
 6209:  0: c
 6210:     bbbbc
 6211:  0: c
 6212: 
 6213: /abc/SS>testsavedregex
 6214: Compiled pattern written to testsavedregex
 6215: <testsavedregex
 6216: Compiled pattern loaded from testsavedregex
 6217: No study data
 6218:     abc
 6219:  0: abc
 6220:     *** Failers
 6221: No match
 6222:     bca
 6223: No match
 6224:     
 6225: /abc/FSS>testsavedregex
 6226: Compiled pattern written to testsavedregex
 6227: <testsavedregex
 6228: Compiled pattern (byte-inverted) loaded from testsavedregex
 6229: No study data
 6230:     abc
 6231:  0: abc
 6232:     *** Failers
 6233: No match
 6234:     bca
 6235: No match
 6236: 
 6237: /(a|b)/S>testsavedregex
 6238: Compiled pattern written to testsavedregex
 6239: Study data written to testsavedregex
 6240: <testsavedregex
 6241: Compiled pattern loaded from testsavedregex
 6242: Study data loaded from testsavedregex
 6243:     abc
 6244:  0: a
 6245:     *** Failers
 6246:  0: a
 6247:     def  
 6248: No match
 6249:     
 6250: /(a|b)/SF>testsavedregex
 6251: Compiled pattern written to testsavedregex
 6252: Study data written to testsavedregex
 6253: <testsavedregex
 6254: Compiled pattern (byte-inverted) loaded from testsavedregex
 6255: Study data loaded from testsavedregex
 6256:     abc
 6257:  0: a
 6258:     *** Failers
 6259:  0: a
 6260:     def  
 6261: No match
 6262:     
 6263: /line\nbreak/
 6264:     this is a line\nbreak
 6265:  0: line\x0abreak
 6266:     line one\nthis is a line\nbreak in the second line 
 6267:  0: line\x0abreak
 6268: 
 6269: /line\nbreak/f
 6270:     this is a line\nbreak
 6271:  0: line\x0abreak
 6272:     ** Failers 
 6273: No match
 6274:     line one\nthis is a line\nbreak in the second line 
 6275: No match
 6276: 
 6277: /line\nbreak/mf
 6278:     this is a line\nbreak
 6279:  0: line\x0abreak
 6280:     ** Failers 
 6281: No match
 6282:     line one\nthis is a line\nbreak in the second line 
 6283: No match
 6284: 
 6285: /1234/
 6286:     123\P
 6287: Partial match: 123
 6288:     a4\P\R
 6289: No match
 6290: 
 6291: /1234/
 6292:     123\P
 6293: Partial match: 123
 6294:     4\P\R
 6295:  0: 4
 6296: 
 6297: /^/mg
 6298:     a\nb\nc\n
 6299:  0: 
 6300:  0: 
 6301:  0: 
 6302:     \ 
 6303:  0: 
 6304:     
 6305: /(?<=C\n)^/mg
 6306:     A\nC\nC\n 
 6307:  0: 
 6308: 
 6309: /(?s)A?B/
 6310:     AB
 6311:  0: AB
 6312:     aB  
 6313:  0: B
 6314: 
 6315: /(?s)A*B/
 6316:     AB
 6317:  0: AB
 6318:     aB  
 6319:  0: B
 6320: 
 6321: /(?m)A?B/
 6322:     AB
 6323:  0: AB
 6324:     aB  
 6325:  0: B
 6326: 
 6327: /(?m)A*B/
 6328:     AB
 6329:  0: AB
 6330:     aB  
 6331:  0: B
 6332: 
 6333: /Content-Type\x3A[^\r\n]{6,}/
 6334:     Content-Type:xxxxxyyy 
 6335:  0: Content-Type:xxxxxyyy
 6336: 
 6337: /Content-Type\x3A[^\r\n]{6,}z/
 6338:     Content-Type:xxxxxyyyz
 6339:  0: Content-Type:xxxxxyyyz
 6340: 
 6341: /Content-Type\x3A[^a]{6,}/
 6342:     Content-Type:xxxyyy 
 6343:  0: Content-Type:xxxyyy
 6344: 
 6345: /Content-Type\x3A[^a]{6,}z/
 6346:     Content-Type:xxxyyyz
 6347:  0: Content-Type:xxxyyyz
 6348: 
 6349: /^abc/m
 6350:     xyz\nabc
 6351:  0: abc
 6352:     xyz\nabc\<lf>
 6353:  0: abc
 6354:     xyz\r\nabc\<lf>
 6355:  0: abc
 6356:     xyz\rabc\<cr>
 6357:  0: abc
 6358:     xyz\r\nabc\<crlf>
 6359:  0: abc
 6360:     ** Failers 
 6361: No match
 6362:     xyz\nabc\<cr>
 6363: No match
 6364:     xyz\r\nabc\<cr>
 6365: No match
 6366:     xyz\nabc\<crlf>
 6367: No match
 6368:     xyz\rabc\<crlf>
 6369: No match
 6370:     xyz\rabc\<lf>
 6371: No match
 6372:     
 6373: /abc$/m<lf>
 6374:     xyzabc
 6375:  0: abc
 6376:     xyzabc\n 
 6377:  0: abc
 6378:     xyzabc\npqr 
 6379:  0: abc
 6380:     xyzabc\r\<cr> 
 6381:  0: abc
 6382:     xyzabc\rpqr\<cr> 
 6383:  0: abc
 6384:     xyzabc\r\n\<crlf> 
 6385:  0: abc
 6386:     xyzabc\r\npqr\<crlf> 
 6387:  0: abc
 6388:     ** Failers
 6389: No match
 6390:     xyzabc\r 
 6391: No match
 6392:     xyzabc\rpqr 
 6393: No match
 6394:     xyzabc\r\n 
 6395: No match
 6396:     xyzabc\r\npqr 
 6397: No match
 6398:     
 6399: /^abc/m<cr>
 6400:     xyz\rabcdef
 6401:  0: abc
 6402:     xyz\nabcdef\<lf>
 6403:  0: abc
 6404:     ** Failers  
 6405: No match
 6406:     xyz\nabcdef
 6407: No match
 6408:        
 6409: /^abc/m<lf>
 6410:     xyz\nabcdef
 6411:  0: abc
 6412:     xyz\rabcdef\<cr>
 6413:  0: abc
 6414:     ** Failers  
 6415: No match
 6416:     xyz\rabcdef
 6417: No match
 6418:        
 6419: /^abc/m<crlf>
 6420:     xyz\r\nabcdef
 6421:  0: abc
 6422:     xyz\rabcdef\<cr>
 6423:  0: abc
 6424:     ** Failers  
 6425: No match
 6426:     xyz\rabcdef
 6427: No match
 6428:     
 6429: /.*/<lf>
 6430:     abc\ndef
 6431:  0: abc
 6432:     abc\rdef
 6433:  0: abc\x0ddef
 6434:     abc\r\ndef
 6435:  0: abc\x0d
 6436:     \<cr>abc\ndef
 6437:  0: abc\x0adef
 6438:     \<cr>abc\rdef
 6439:  0: abc
 6440:     \<cr>abc\r\ndef
 6441:  0: abc
 6442:     \<crlf>abc\ndef
 6443:  0: abc\x0adef
 6444:     \<crlf>abc\rdef
 6445:  0: abc\x0ddef
 6446:     \<crlf>abc\r\ndef
 6447:  0: abc
 6448: 
 6449: /\w+(.)(.)?def/s
 6450:     abc\ndef
 6451:  0: abc\x0adef
 6452:     abc\rdef
 6453:  0: abc\x0ddef
 6454:     abc\r\ndef
 6455:  0: abc\x0d\x0adef
 6456: 
 6457: /^\w+=.*(\\\n.*)*/
 6458:     abc=xyz\\\npqr
 6459:  0: abc=xyz\\x0apqr
 6460:  1: abc=xyz\\x0apq
 6461:  2: abc=xyz\\x0ap
 6462:  3: abc=xyz\\x0a
 6463:  4: abc=xyz\
 6464:  5: abc=xyz
 6465:  6: abc=xy
 6466:  7: abc=x
 6467:  8: abc=
 6468: 
 6469: /^(a()*)*/
 6470:     aaaa
 6471:  0: aaaa
 6472:  1: aaa
 6473:  2: aa
 6474:  3: a
 6475:  4: 
 6476: 
 6477: /^(?:a(?:(?:))*)*/
 6478:     aaaa
 6479:  0: aaaa
 6480:  1: aaa
 6481:  2: aa
 6482:  3: a
 6483:  4: 
 6484: 
 6485: /^(a()+)+/
 6486:     aaaa
 6487:  0: aaaa
 6488:  1: aaa
 6489:  2: aa
 6490:  3: a
 6491: 
 6492: /^(?:a(?:(?:))+)+/
 6493:     aaaa
 6494:  0: aaaa
 6495:  1: aaa
 6496:  2: aa
 6497:  3: a
 6498: 
 6499: /(a|)*\d/
 6500:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 6501: No match
 6502:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 6503:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 6504: 
 6505: /(?>a|)*\d/
 6506:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 6507: No match
 6508:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 6509:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 6510: 
 6511: /(?:a|)*\d/
 6512:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 6513: No match
 6514:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 6515:  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 6516: 
 6517: /^a.b/<lf>
 6518:     a\rb
 6519:  0: a\x0db
 6520:     a\nb\<cr> 
 6521:  0: a\x0ab
 6522:     ** Failers
 6523: No match
 6524:     a\nb
 6525: No match
 6526:     a\nb\<any>
 6527: No match
 6528:     a\rb\<cr>   
 6529: No match
 6530:     a\rb\<any>   
 6531: No match
 6532: 
 6533: /^abc./mgx<any>
 6534:     abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
 6535:  0: abc1
 6536:  0: abc2
 6537:  0: abc3
 6538:  0: abc4
 6539:  0: abc5
 6540:  0: abc6
 6541:  0: abc7
 6542: 
 6543: /abc.$/mgx<any>
 6544:     abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
 6545:  0: abc1
 6546:  0: abc2
 6547:  0: abc3
 6548:  0: abc4
 6549:  0: abc5
 6550:  0: abc6
 6551:  0: abc9
 6552: 
 6553: /^a\Rb/<bsr_unicode>
 6554:     a\nb
 6555:  0: a\x0ab
 6556:     a\rb
 6557:  0: a\x0db
 6558:     a\r\nb
 6559:  0: a\x0d\x0ab
 6560:     a\x0bb
 6561:  0: a\x0bb
 6562:     a\x0cb
 6563:  0: a\x0cb
 6564:     a\x85b   
 6565:  0: a\x85b
 6566:     ** Failers
 6567: No match
 6568:     a\n\rb    
 6569: No match
 6570: 
 6571: /^a\R*b/<bsr_unicode>
 6572:     ab
 6573:  0: ab
 6574:     a\nb
 6575:  0: a\x0ab
 6576:     a\rb
 6577:  0: a\x0db
 6578:     a\r\nb
 6579:  0: a\x0d\x0ab
 6580:     a\x0bb
 6581:  0: a\x0bb
 6582:     a\x0cb
 6583:  0: a\x0cb
 6584:     a\x85b   
 6585:  0: a\x85b
 6586:     a\n\rb    
 6587:  0: a\x0a\x0db
 6588:     a\n\r\x85\x0cb 
 6589:  0: a\x0a\x0d\x85\x0cb
 6590: 
 6591: /^a\R+b/<bsr_unicode>
 6592:     a\nb
 6593:  0: a\x0ab
 6594:     a\rb
 6595:  0: a\x0db
 6596:     a\r\nb
 6597:  0: a\x0d\x0ab
 6598:     a\x0bb
 6599:  0: a\x0bb
 6600:     a\x0cb
 6601:  0: a\x0cb
 6602:     a\x85b   
 6603:  0: a\x85b
 6604:     a\n\rb    
 6605:  0: a\x0a\x0db
 6606:     a\n\r\x85\x0cb 
 6607:  0: a\x0a\x0d\x85\x0cb
 6608:     ** Failers
 6609: No match
 6610:     ab  
 6611: No match
 6612:     
 6613: /^a\R{1,3}b/<bsr_unicode>
 6614:     a\nb
 6615:  0: a\x0ab
 6616:     a\n\rb
 6617:  0: a\x0a\x0db
 6618:     a\n\r\x85b
 6619:  0: a\x0a\x0d\x85b
 6620:     a\r\n\r\nb 
 6621:  0: a\x0d\x0a\x0d\x0ab
 6622:     a\r\n\r\n\r\nb 
 6623:  0: a\x0d\x0a\x0d\x0a\x0d\x0ab
 6624:     a\n\r\n\rb
 6625:  0: a\x0a\x0d\x0a\x0db
 6626:     a\n\n\r\nb 
 6627:  0: a\x0a\x0a\x0d\x0ab
 6628:     ** Failers
 6629: No match
 6630:     a\n\n\n\rb
 6631: No match
 6632:     a\r
 6633: No match
 6634: 
 6635: /^a[\R]b/<bsr_unicode>
 6636:     aRb
 6637:  0: aRb
 6638:     ** Failers
 6639: No match
 6640:     a\nb  
 6641: No match
 6642: 
 6643: /.+foo/
 6644:     afoo
 6645:  0: afoo
 6646:     ** Failers 
 6647: No match
 6648:     \r\nfoo 
 6649: No match
 6650:     \nfoo 
 6651: No match
 6652: 
 6653: /.+foo/<crlf>
 6654:     afoo
 6655:  0: afoo
 6656:     \nfoo 
 6657:  0: \x0afoo
 6658:     ** Failers 
 6659: No match
 6660:     \r\nfoo 
 6661: No match
 6662: 
 6663: /.+foo/<any>
 6664:     afoo
 6665:  0: afoo
 6666:     ** Failers 
 6667: No match
 6668:     \nfoo 
 6669: No match
 6670:     \r\nfoo 
 6671: No match
 6672: 
 6673: /.+foo/s
 6674:     afoo
 6675:  0: afoo
 6676:     \r\nfoo 
 6677:  0: \x0d\x0afoo
 6678:     \nfoo 
 6679:  0: \x0afoo
 6680: 
 6681: /^$/mg<any>
 6682:     abc\r\rxyz
 6683:  0: 
 6684:     abc\n\rxyz  
 6685:  0: 
 6686:     ** Failers 
 6687: No match
 6688:     abc\r\nxyz
 6689: No match
 6690: 
 6691: /^X/m
 6692:     XABC
 6693:  0: X
 6694:     ** Failers 
 6695: No match
 6696:     XABC\B
 6697: No match
 6698: 
 6699: /(?m)^$/<any>g+
 6700:     abc\r\n\r\n
 6701:  0: 
 6702:  0+ \x0d\x0a
 6703: 
 6704: /(?m)^$|^\r\n/<any>g+ 
 6705:     abc\r\n\r\n
 6706:  0: \x0d\x0a
 6707:  0+ 
 6708:  1: 
 6709:     
 6710: /(?m)$/<any>g+ 
 6711:     abc\r\n\r\n
 6712:  0: 
 6713:  0+ \x0d\x0a\x0d\x0a
 6714:  0: 
 6715:  0+ \x0d\x0a
 6716:  0: 
 6717:  0+ 
 6718: 
 6719: /(?|(abc)|(xyz))/
 6720:    >abc<
 6721:  0: abc
 6722:    >xyz< 
 6723:  0: xyz
 6724: 
 6725: /(x)(?|(abc)|(xyz))(x)/
 6726:     xabcx
 6727:  0: xabcx
 6728:     xxyzx 
 6729:  0: xxyzx
 6730: 
 6731: /(x)(?|(abc)(pqr)|(xyz))(x)/
 6732:     xabcpqrx
 6733:  0: xabcpqrx
 6734:     xxyzx 
 6735:  0: xxyzx
 6736: 
 6737: /(?|(abc)|(xyz))(?1)/
 6738:     abcabc
 6739:  0: abcabc
 6740:     xyzabc 
 6741:  0: xyzabc
 6742:     ** Failers 
 6743: No match
 6744:     xyzxyz 
 6745: No match
 6746:  
 6747: /\H\h\V\v/
 6748:     X X\x0a
 6749:  0: X X\x0a
 6750:     X\x09X\x0b
 6751:  0: X\x09X\x0b
 6752:     ** Failers
 6753: No match
 6754:     \xa0 X\x0a   
 6755: No match
 6756:     
 6757: /\H*\h+\V?\v{3,4}/ 
 6758:     \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
 6759:  0: \x09 \xa0X\x0a\x0b\x0c\x0d
 6760:     \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
 6761:  0: \x09 \xa0\x0a\x0b\x0c\x0d
 6762:     \x09\x20\xa0\x0a\x0b\x0c
 6763:  0: \x09 \xa0\x0a\x0b\x0c
 6764:     ** Failers 
 6765: No match
 6766:     \x09\x20\xa0\x0a\x0b
 6767: No match
 6768:      
 6769: /\H{3,4}/
 6770:     XY  ABCDE
 6771:  0: ABCD
 6772:     XY  PQR ST 
 6773:  0: PQR
 6774:     
 6775: /.\h{3,4}./
 6776:     XY  AB    PQRS
 6777:  0: B    P
 6778:  1: B    
 6779: 
 6780: /\h*X\h?\H+Y\H?Z/
 6781:     >XNNNYZ
 6782:  0: XNNNYZ
 6783:     >  X NYQZ
 6784:  0:   X NYQZ
 6785:     ** Failers
 6786: No match
 6787:     >XYZ   
 6788: No match
 6789:     >  X NY Z
 6790: No match
 6791: 
 6792: /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
 6793:     >XY\x0aZ\x0aA\x0bNN\x0c
 6794:  0: XY\x0aZ\x0aA\x0bNN\x0c
 6795:     >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
 6796:  0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
 6797: 
 6798: /.+A/<crlf>
 6799:     \r\nA
 6800: No match
 6801:     
 6802: /\nA/<crlf>
 6803:     \r\nA 
 6804:  0: \x0aA
 6805: 
 6806: /[\r\n]A/<crlf>
 6807:     \r\nA 
 6808:  0: \x0aA
 6809: 
 6810: /(\r|\n)A/<crlf>
 6811:     \r\nA 
 6812:  0: \x0aA
 6813: 
 6814: /a\Rb/I<bsr_anycrlf>
 6815: Capturing subpattern count = 0
 6816: Options: bsr_anycrlf
 6817: First char = 'a'
 6818: Need char = 'b'
 6819:     a\rb
 6820:  0: a\x0db
 6821:     a\nb
 6822:  0: a\x0ab
 6823:     a\r\nb
 6824:  0: a\x0d\x0ab
 6825:     ** Failers
 6826: No match
 6827:     a\x85b
 6828: No match
 6829:     a\x0bb     
 6830: No match
 6831: 
 6832: /a\Rb/I<bsr_unicode>
 6833: Capturing subpattern count = 0
 6834: Options: bsr_unicode
 6835: First char = 'a'
 6836: Need char = 'b'
 6837:     a\rb
 6838:  0: a\x0db
 6839:     a\nb
 6840:  0: a\x0ab
 6841:     a\r\nb
 6842:  0: a\x0d\x0ab
 6843:     a\x85b
 6844:  0: a\x85b
 6845:     a\x0bb     
 6846:  0: a\x0bb
 6847:     ** Failers 
 6848: No match
 6849:     a\x85b\<bsr_anycrlf>
 6850: No match
 6851:     a\x0bb\<bsr_anycrlf>
 6852: No match
 6853:     
 6854: /a\R?b/I<bsr_anycrlf>
 6855: Capturing subpattern count = 0
 6856: Options: bsr_anycrlf
 6857: First char = 'a'
 6858: Need char = 'b'
 6859:     a\rb
 6860:  0: a\x0db
 6861:     a\nb
 6862:  0: a\x0ab
 6863:     a\r\nb
 6864:  0: a\x0d\x0ab
 6865:     ** Failers
 6866: No match
 6867:     a\x85b
 6868: No match
 6869:     a\x0bb     
 6870: No match
 6871: 
 6872: /a\R?b/I<bsr_unicode>
 6873: Capturing subpattern count = 0
 6874: Options: bsr_unicode
 6875: First char = 'a'
 6876: Need char = 'b'
 6877:     a\rb
 6878:  0: a\x0db
 6879:     a\nb
 6880:  0: a\x0ab
 6881:     a\r\nb
 6882:  0: a\x0d\x0ab
 6883:     a\x85b
 6884:  0: a\x85b
 6885:     a\x0bb     
 6886:  0: a\x0bb
 6887:     ** Failers 
 6888: No match
 6889:     a\x85b\<bsr_anycrlf>
 6890: No match
 6891:     a\x0bb\<bsr_anycrlf>
 6892: No match
 6893:     
 6894: /a\R{2,4}b/I<bsr_anycrlf>
 6895: Capturing subpattern count = 0
 6896: Options: bsr_anycrlf
 6897: First char = 'a'
 6898: Need char = 'b'
 6899:     a\r\n\nb
 6900:  0: a\x0d\x0a\x0ab
 6901:     a\n\r\rb
 6902:  0: a\x0a\x0d\x0db
 6903:     a\r\n\r\n\r\n\r\nb
 6904:  0: a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0ab
 6905:     ** Failers
 6906: No match
 6907:     a\x85\85b
 6908: No match
 6909:     a\x0b\0bb     
 6910: No match
 6911: 
 6912: /a\R{2,4}b/I<bsr_unicode>
 6913: Capturing subpattern count = 0
 6914: Options: bsr_unicode
 6915: First char = 'a'
 6916: Need char = 'b'
 6917:     a\r\rb
 6918:  0: a\x0d\x0db
 6919:     a\n\n\nb
 6920:  0: a\x0a\x0a\x0ab
 6921:     a\r\n\n\r\rb
 6922:  0: a\x0d\x0a\x0a\x0d\x0db
 6923:     a\x85\85b
 6924: No match
 6925:     a\x0b\0bb     
 6926: No match
 6927:     ** Failers 
 6928: No match
 6929:     a\r\r\r\r\rb 
 6930: No match
 6931:     a\x85\85b\<bsr_anycrlf>
 6932: No match
 6933:     a\x0b\0bb\<bsr_anycrlf>
 6934: No match
 6935:     
 6936: /a(?!)|\wbc/
 6937:     abc 
 6938:  0: abc
 6939: 
 6940: /a[]b/<JS>
 6941:     ** Failers
 6942: No match
 6943:     ab
 6944: No match
 6945: 
 6946: /a[]+b/<JS>
 6947:     ** Failers
 6948: No match
 6949:     ab 
 6950: No match
 6951: 
 6952: /a[]*+b/<JS>
 6953:     ** Failers
 6954: No match
 6955:     ab 
 6956: No match
 6957: 
 6958: /a[^]b/<JS>
 6959:     aXb
 6960:  0: aXb
 6961:     a\nb 
 6962:  0: a\x0ab
 6963:     ** Failers
 6964: No match
 6965:     ab  
 6966: No match
 6967:     
 6968: /a[^]+b/<JS> 
 6969:     aXb
 6970:  0: aXb
 6971:     a\nX\nXb 
 6972:  0: a\x0aX\x0aXb
 6973:     ** Failers
 6974: No match
 6975:     ab  
 6976: No match
 6977: 
 6978: /X$/E
 6979:     X
 6980:  0: X
 6981:     ** Failers 
 6982: No match
 6983:     X\n 
 6984: No match
 6985: 
 6986: /X$/
 6987:     X
 6988:  0: X
 6989:     X\n 
 6990:  0: X
 6991: 
 6992: /xyz/C
 6993:   xyz 
 6994: --->xyz
 6995:  +0 ^       x
 6996:  +1 ^^      y
 6997:  +2 ^ ^     z
 6998:  +3 ^  ^    
 6999:  0: xyz
 7000:   abcxyz 
 7001: --->abcxyz
 7002:  +0    ^       x
 7003:  +1    ^^      y
 7004:  +2    ^ ^     z
 7005:  +3    ^  ^    
 7006:  0: xyz
 7007:   abcxyz\Y
 7008: --->abcxyz
 7009:  +0 ^          x
 7010:  +0  ^         x
 7011:  +0   ^        x
 7012:  +0    ^       x
 7013:  +1    ^^      y
 7014:  +2    ^ ^     z
 7015:  +3    ^  ^    
 7016:  0: xyz
 7017:   ** Failers 
 7018: No match
 7019:   abc
 7020: No match
 7021:   abc\Y
 7022: --->abc
 7023:  +0 ^       x
 7024:  +0  ^      x
 7025:  +0   ^     x
 7026:  +0    ^    x
 7027: No match
 7028:   abcxypqr  
 7029: No match
 7030:   abcxypqr\Y  
 7031: --->abcxypqr
 7032:  +0 ^            x
 7033:  +0  ^           x
 7034:  +0   ^          x
 7035:  +0    ^         x
 7036:  +1    ^^        y
 7037:  +2    ^ ^       z
 7038:  +0     ^        x
 7039:  +0      ^       x
 7040:  +0       ^      x
 7041:  +0        ^     x
 7042:  +0         ^    x
 7043: No match
 7044: 
 7045: /(*NO_START_OPT)xyz/C
 7046:   abcxyz 
 7047: --->abcxyz
 7048: +15 ^          x
 7049: +15  ^         x
 7050: +15   ^        x
 7051: +15    ^       x
 7052: +16    ^^      y
 7053: +17    ^ ^     z
 7054: +18    ^  ^    
 7055:  0: xyz
 7056:   
 7057: /(?C)ab/
 7058:   ab
 7059: --->ab
 7060:   0 ^      a
 7061:  0: ab
 7062:   \C-ab
 7063:  0: ab
 7064:   
 7065: /ab/C
 7066:   ab
 7067: --->ab
 7068:  +0 ^      a
 7069:  +1 ^^     b
 7070:  +2 ^ ^    
 7071:  0: ab
 7072:   \C-ab    
 7073:  0: ab
 7074: 
 7075: /^"((?(?=[a])[^"])|b)*"$/C
 7076:     "ab"
 7077: --->"ab"
 7078:  +0 ^        ^
 7079:  +1 ^        "
 7080:  +2 ^^       ((?(?=[a])[^"])|b)*
 7081: +21 ^^       "
 7082:  +3 ^^       (?(?=[a])[^"])
 7083: +18 ^^       b
 7084:  +5 ^^       (?=[a])
 7085:  +8  ^       [a]
 7086: +11  ^^      )
 7087: +12 ^^       [^"]
 7088: +16 ^ ^      )
 7089: +17 ^ ^      |
 7090: +21 ^ ^      "
 7091:  +3 ^ ^      (?(?=[a])[^"])
 7092: +18 ^ ^      b
 7093:  +5 ^ ^      (?=[a])
 7094:  +8   ^      [a]
 7095: +19 ^  ^     )
 7096: +21 ^  ^     "
 7097:  +3 ^  ^     (?(?=[a])[^"])
 7098: +18 ^  ^     b
 7099:  +5 ^  ^     (?=[a])
 7100:  +8    ^     [a]
 7101: +17 ^  ^     |
 7102: +22 ^   ^    $
 7103: +23 ^   ^    
 7104:  0: "ab"
 7105:     \C-"ab"
 7106:  0: "ab"
 7107: 
 7108: /\d+X|9+Y/
 7109:     ++++123999\P
 7110: Partial match: 123999
 7111:     ++++123999Y\P
 7112:  0: 999Y
 7113: 
 7114: /Z(*F)/
 7115:     Z\P
 7116: No match
 7117:     ZA\P 
 7118: No match
 7119:     
 7120: /Z(?!)/
 7121:     Z\P 
 7122: No match
 7123:     ZA\P 
 7124: No match
 7125: 
 7126: /dog(sbody)?/
 7127:     dogs\P
 7128:  0: dog
 7129:     dogs\P\P 
 7130: Partial match: dogs
 7131:     
 7132: /dog(sbody)??/
 7133:     dogs\P
 7134:  0: dog
 7135:     dogs\P\P 
 7136: Partial match: dogs
 7137: 
 7138: /dog|dogsbody/
 7139:     dogs\P
 7140:  0: dog
 7141:     dogs\P\P 
 7142: Partial match: dogs
 7143:  
 7144: /dogsbody|dog/
 7145:     dogs\P
 7146:  0: dog
 7147:     dogs\P\P 
 7148: Partial match: dogs
 7149: 
 7150: /Z(*F)Q|ZXY/
 7151:     Z\P
 7152: Partial match: Z
 7153:     ZA\P 
 7154: No match
 7155:     X\P 
 7156: No match
 7157: 
 7158: /\bthe cat\b/
 7159:     the cat\P
 7160:  0: the cat
 7161:     the cat\P\P
 7162: Partial match: the cat
 7163: 
 7164: /dog(sbody)?/
 7165:     dogs\D\P
 7166:  0: dog
 7167:     body\D\R
 7168:  0: body
 7169: 
 7170: /dog(sbody)?/
 7171:     dogs\D\P\P
 7172: Partial match: dogs
 7173:     body\D\R
 7174:  0: body
 7175: 
 7176: /abc/
 7177:    abc\P
 7178:  0: abc
 7179:    abc\P\P
 7180:  0: abc
 7181: 
 7182: /abc\K123/
 7183:     xyzabc123pqr
 7184: Error -16 (item unsupported for DFA matching)
 7185:     
 7186: /(?<=abc)123/
 7187:     xyzabc123pqr 
 7188:  0: 123
 7189:     xyzabc12\P
 7190: Partial match at offset 6: abc12
 7191:     xyzabc12\P\P
 7192: Partial match at offset 6: abc12
 7193: 
 7194: /\babc\b/
 7195:     +++abc+++
 7196:  0: abc
 7197:     +++ab\P
 7198: Partial match at offset 3: +ab
 7199:     +++ab\P\P  
 7200: Partial match at offset 3: +ab
 7201: 
 7202: /(?=C)/g+
 7203:     ABCDECBA
 7204:  0: 
 7205:  0+ CDECBA
 7206:  0: 
 7207:  0+ CBA
 7208: 
 7209: /(abc|def|xyz)/I
 7210: Capturing subpattern count = 1
 7211: No options
 7212: No first char
 7213: No need char
 7214:     terhjk;abcdaadsfe
 7215:  0: abc
 7216:     the quick xyz brown fox 
 7217:  0: xyz
 7218:     \Yterhjk;abcdaadsfe
 7219:  0: abc
 7220:     \Ythe quick xyz brown fox 
 7221:  0: xyz
 7222:     ** Failers
 7223: No match
 7224:     thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
 7225: No match
 7226:     \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
 7227: No match
 7228: 
 7229: /(abc|def|xyz)/SI
 7230: Capturing subpattern count = 1
 7231: No options
 7232: No first char
 7233: No need char
 7234: Subject length lower bound = 3
 7235: Starting byte set: a d x 
 7236:     terhjk;abcdaadsfe
 7237:  0: abc
 7238:     the quick xyz brown fox 
 7239:  0: xyz
 7240:     \Yterhjk;abcdaadsfe
 7241:  0: abc
 7242:     \Ythe quick xyz brown fox 
 7243:  0: xyz
 7244:     ** Failers
 7245: No match
 7246:     thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
 7247: No match
 7248:     \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
 7249: No match
 7250: 
 7251: /abcd*/+
 7252:     xxxxabcd\P
 7253:  0: abcd
 7254:  0+ 
 7255:     xxxxabcd\P\P
 7256: Partial match: abcd
 7257:     dddxxx\R 
 7258:  0: ddd
 7259:  0+ xxx
 7260:     xxxxabcd\P\P
 7261: Partial match: abcd
 7262:     xxx\R 
 7263:  0: 
 7264:  0+ xxx
 7265: 
 7266: /abcd*/i
 7267:     xxxxabcd\P
 7268:  0: abcd
 7269:     xxxxabcd\P\P
 7270: Partial match: abcd
 7271:     XXXXABCD\P
 7272:  0: ABCD
 7273:     XXXXABCD\P\P
 7274: Partial match: ABCD
 7275: 
 7276: /abc\d*/
 7277:     xxxxabc1\P
 7278:  0: abc1
 7279:     xxxxabc1\P\P
 7280: Partial match: abc1
 7281: 
 7282: /abc[de]*/
 7283:     xxxxabcde\P
 7284:  0: abcde
 7285:     xxxxabcde\P\P
 7286: Partial match: abcde
 7287: 
 7288: /(?:(?1)|B)(A(*F)|C)/
 7289:     ABCD
 7290:  0: BC
 7291:     CCD
 7292:  0: CC
 7293:     ** Failers
 7294: No match
 7295:     CAD   
 7296: No match
 7297: 
 7298: /^(?:(?1)|B)(A(*F)|C)/
 7299:     CCD
 7300:  0: CC
 7301:     BCD 
 7302:  0: BC
 7303:     ** Failers
 7304: No match
 7305:     ABCD
 7306: No match
 7307:     CAD
 7308: No match
 7309:     BAD    
 7310: No match
 7311: 
 7312: /^(?!a(*SKIP)b)/
 7313:     ac
 7314: Error -16 (item unsupported for DFA matching)
 7315:     
 7316: /^(?=a(*SKIP)b|ac)/
 7317:     ** Failers
 7318: No match
 7319:     ac
 7320: Error -16 (item unsupported for DFA matching)
 7321:     
 7322: /^(?=a(*THEN)b|ac)/
 7323:     ac
 7324: Error -16 (item unsupported for DFA matching)
 7325:     
 7326: /^(?=a(*PRUNE)b)/
 7327:     ab  
 7328: Error -16 (item unsupported for DFA matching)
 7329:     ** Failers 
 7330: No match
 7331:     ac
 7332: Error -16 (item unsupported for DFA matching)
 7333: 
 7334: /^(?(?!a(*SKIP)b))/
 7335:     ac
 7336: Error -16 (item unsupported for DFA matching)
 7337: 
 7338: /(?<=abc)def/
 7339:     abc\P\P
 7340: Partial match at offset 3: abc
 7341: 
 7342: /abc$/
 7343:     abc
 7344:  0: abc
 7345:     abc\P
 7346:  0: abc
 7347:     abc\P\P
 7348: Partial match: abc
 7349: 
 7350: /abc$/m
 7351:     abc
 7352:  0: abc
 7353:     abc\n
 7354:  0: abc
 7355:     abc\P\P
 7356: Partial match: abc
 7357:     abc\n\P\P 
 7358:  0: abc
 7359:     abc\P
 7360:  0: abc
 7361:     abc\n\P
 7362:  0: abc
 7363: 
 7364: /abc\z/
 7365:     abc
 7366:  0: abc
 7367:     abc\P
 7368:  0: abc
 7369:     abc\P\P
 7370: Partial match: abc
 7371: 
 7372: /abc\Z/
 7373:     abc
 7374:  0: abc
 7375:     abc\P
 7376:  0: abc
 7377:     abc\P\P
 7378: Partial match: abc
 7379: 
 7380: /abc\b/
 7381:     abc
 7382:  0: abc
 7383:     abc\P
 7384:  0: abc
 7385:     abc\P\P
 7386: Partial match: abc
 7387: 
 7388: /abc\B/
 7389:     abc
 7390: No match
 7391:     abc\P
 7392: Partial match: abc
 7393:     abc\P\P
 7394: Partial match: abc
 7395: 
 7396: /.+/
 7397:     abc\>0
 7398:  0: abc
 7399:     abc\>1
 7400:  0: bc
 7401:     abc\>2
 7402:  0: c
 7403:     abc\>3
 7404: No match
 7405:     abc\>4
 7406: Error -24 (bad offset value)
 7407:     abc\>-4 
 7408: Error -24 (bad offset value)
 7409: 
 7410: /^(?:a)++\w/
 7411:      aaaab
 7412:  0: aaaab
 7413:      ** Failers 
 7414: No match
 7415:      aaaa 
 7416: No match
 7417:      bbb 
 7418: No match
 7419: 
 7420: /^(?:aa|(?:a)++\w)/
 7421:      aaaab
 7422:  0: aaaab
 7423:  1: aa
 7424:      aaaa 
 7425:  0: aa
 7426:      ** Failers 
 7427: No match
 7428:      bbb 
 7429: No match
 7430: 
 7431: /^(?:a)*+\w/
 7432:      aaaab
 7433:  0: aaaab
 7434:      bbb 
 7435:  0: b
 7436:      ** Failers 
 7437: No match
 7438:      aaaa 
 7439: No match
 7440: 
 7441: /^(a)++\w/
 7442:      aaaab
 7443:  0: aaaab
 7444:      ** Failers 
 7445: No match
 7446:      aaaa 
 7447: No match
 7448:      bbb 
 7449: No match
 7450: 
 7451: /^(a|)++\w/
 7452:      aaaab
 7453:  0: aaaab
 7454:      ** Failers 
 7455: No match
 7456:      aaaa 
 7457: No match
 7458:      bbb 
 7459: No match
 7460: 
 7461: /(?=abc){3}abc/+
 7462:     abcabcabc
 7463:  0: abc
 7464:  0+ abcabc
 7465:     ** Failers
 7466: No match
 7467:     xyz  
 7468: No match
 7469:     
 7470: /(?=abc)+abc/+
 7471:     abcabcabc
 7472:  0: abc
 7473:  0+ abcabc
 7474:     ** Failers
 7475: No match
 7476:     xyz  
 7477: No match
 7478:     
 7479: /(?=abc)++abc/+
 7480:     abcabcabc
 7481:  0: abc
 7482:  0+ abcabc
 7483:     ** Failers
 7484: No match
 7485:     xyz  
 7486: No match
 7487:     
 7488: /(?=abc){0}xyz/
 7489:     xyz 
 7490:  0: xyz
 7491: 
 7492: /(?=abc){1}xyz/
 7493:     ** Failers
 7494: No match
 7495:     xyz 
 7496: No match
 7497:     
 7498: /(?=(a))?./
 7499:     ab
 7500:  0: a
 7501:     bc
 7502:  0: b
 7503:       
 7504: /(?=(a))??./
 7505:     ab
 7506:  0: a
 7507:     bc
 7508:  0: b
 7509: 
 7510: /^(?=(a)){0}b(?1)/
 7511:     backgammon
 7512:  0: ba
 7513: 
 7514: /^(?=(?1))?[az]([abc])d/
 7515:     abd 
 7516:  0: abd
 7517:     zcdxx 
 7518:  0: zcd
 7519: 
 7520: /^(?!a){0}\w+/
 7521:     aaaaa
 7522:  0: aaaaa
 7523: 
 7524: /(?<=(abc))?xyz/
 7525:     abcxyz
 7526:  0: xyz
 7527:     pqrxyz 
 7528:  0: xyz
 7529: 
 7530: /((?2))((?1))/
 7531:     abc
 7532: Error -26 (nested recursion at the same subject position)
 7533: 
 7534: /(?(R)a+|(?R)b)/
 7535:     aaaabcde
 7536:  0: aaaab
 7537: 
 7538: /(?(R)a+|((?R))b)/
 7539:     aaaabcde
 7540:  0: aaaab
 7541: 
 7542: /((?(R)a+|(?1)b))/
 7543:     aaaabcde
 7544:  0: aaaab
 7545: 
 7546: /((?(R2)a+|(?1)b))/
 7547:     aaaabcde
 7548: Error -17 (backreference condition or recursion test not supported for DFA matching)
 7549: 
 7550: /(?(R)a*(?1)|((?R))b)/
 7551:     aaaabcde
 7552: Error -26 (nested recursion at the same subject position)
 7553: 
 7554: /(a+)/O
 7555:     \O6aaaa
 7556: Matched, but offsets vector is too small to show all matches
 7557:  0: aaaa
 7558:  1: aaa
 7559:  2: aa
 7560:     \O8aaaa
 7561:  0: aaaa
 7562:  1: aaa
 7563:  2: aa
 7564:  3: a
 7565: 
 7566: /ab\Cde/
 7567:     abXde
 7568:  0: abXde
 7569:     
 7570: /(?<=ab\Cde)X/
 7571:     abZdeX
 7572:  0: X
 7573: 
 7574: /^\R/
 7575:     \r\P
 7576:  0: \x0d
 7577:     \r\P\P
 7578: Partial match: \x0d
 7579:     
 7580: /^\R{2,3}x/
 7581:     \r\P
 7582: Partial match: \x0d
 7583:     \r\P\P
 7584: Partial match: \x0d
 7585:     \r\r\P 
 7586: Partial match: \x0d\x0d
 7587:     \r\r\P\P
 7588: Partial match: \x0d\x0d
 7589:     \r\r\r\P  
 7590: Partial match: \x0d\x0d\x0d
 7591:     \r\r\r\P\P
 7592: Partial match: \x0d\x0d\x0d
 7593:     \r\rx
 7594:  0: \x0d\x0dx
 7595:     \r\r\rx    
 7596:  0: \x0d\x0d\x0dx
 7597: 
 7598: /^\R{2,3}?x/
 7599:     \r\P
 7600: Partial match: \x0d
 7601:     \r\P\P
 7602: Partial match: \x0d
 7603:     \r\r\P 
 7604: Partial match: \x0d\x0d
 7605:     \r\r\P\P
 7606: Partial match: \x0d\x0d
 7607:     \r\r\r\P  
 7608: Partial match: \x0d\x0d\x0d
 7609:     \r\r\r\P\P
 7610: Partial match: \x0d\x0d\x0d
 7611:     \r\rx
 7612:  0: \x0d\x0dx
 7613:     \r\r\rx    
 7614:  0: \x0d\x0d\x0dx
 7615:     
 7616: /^\R?x/
 7617:     \r\P
 7618: Partial match: \x0d
 7619:     \r\P\P 
 7620: Partial match: \x0d
 7621:     x
 7622:  0: x
 7623:     \rx  
 7624:  0: \x0dx
 7625: 
 7626: /^\R+x/
 7627:     \r\P
 7628: Partial match: \x0d
 7629:     \r\P\P 
 7630: Partial match: \x0d
 7631:     \r\n\P
 7632: Partial match: \x0d\x0a
 7633:     \r\n\P\P  
 7634: Partial match: \x0d\x0a
 7635:     \rx  
 7636:  0: \x0dx
 7637: 
 7638: /^a$/<CRLF>
 7639:     a\r\P
 7640: Partial match: a\x0d
 7641:     a\r\P\P 
 7642: Partial match: a\x0d
 7643: 
 7644: /^a$/m<CRLF>
 7645:     a\r\P
 7646: Partial match: a\x0d
 7647:     a\r\P\P 
 7648: Partial match: a\x0d
 7649: 
 7650: /^(a$|a\r)/<CRLF>
 7651:     a\r\P
 7652:  0: a\x0d
 7653:     a\r\P\P 
 7654: Partial match: a\x0d
 7655: 
 7656: /^(a$|a\r)/m<CRLF>
 7657:     a\r\P
 7658:  0: a\x0d
 7659:     a\r\P\P 
 7660: Partial match: a\x0d
 7661: 
 7662: /./<CRLF>
 7663:     \r\P
 7664:  0: \x0d
 7665:     \r\P\P 
 7666: Partial match: \x0d
 7667:   
 7668: /.{2,3}/<CRLF>
 7669:     \r\P 
 7670: Partial match: \x0d
 7671:     \r\P\P
 7672: Partial match: \x0d
 7673:     \r\r\P
 7674:  0: \x0d\x0d
 7675:     \r\r\P\P
 7676: Partial match: \x0d\x0d
 7677:     \r\r\r\P
 7678:  0: \x0d\x0d\x0d
 7679:     \r\r\r\P\P     
 7680: Partial match: \x0d\x0d\x0d
 7681: 
 7682: /.{2,3}?/<CRLF>
 7683:     \r\P 
 7684: Partial match: \x0d
 7685:     \r\P\P
 7686: Partial match: \x0d
 7687:     \r\r\P
 7688:  0: \x0d\x0d
 7689:     \r\r\P\P
 7690: Partial match: \x0d\x0d
 7691:     \r\r\r\P
 7692:  0: \x0d\x0d\x0d
 7693:  1: \x0d\x0d
 7694:     \r\r\r\P\P     
 7695: Partial match: \x0d\x0d\x0d
 7696: 
 7697: /-- Test simple validity check for restarts --/
 7698: 
 7699: /abcdef/
 7700:    abc\R
 7701: Error -30 (invalid data in workspace for DFA restart)
 7702: 
 7703: /<H((?(?!<H|F>)(.)|(?R))++)*F>/
 7704:     text <H more text <H texting more  hexA0-"\xA0"    hex above 7F-"\xBC" F> text xxxxx <H text F> text F> text2 <H text sample F> more text.
 7705:  0: <H more text <H texting more  hexA0-"\xa0"    hex above 7F-"\xbc" F> text xxxxx <H text F> text F>
 7706: 
 7707: /^(?>.{4})abc|^\w\w.xabcd/
 7708:     xxxxabcd
 7709:  0: xxxxabcd
 7710:  1: xxxxabc
 7711:     xx\xa0xabcd 
 7712:  0: xx\xa0xabcd
 7713:  1: xx\xa0xabc
 7714: 
 7715: /^(.{4}){2}+abc|^\w\w.x\w\w\w\wabcd/
 7716:     xxxxxxxxabcd
 7717:  0: xxxxxxxxabcd
 7718:  1: xxxxxxxxabc
 7719:     xx\xa0xxxxxabcd 
 7720:  0: xx\xa0xxxxxabcd
 7721:  1: xx\xa0xxxxxabc
 7722: 
 7723: /abcd/
 7724:     abcd\O0
 7725: Matched, but offsets vector is too small to show all matches
 7726: 
 7727: /-- These tests show up auto-possessification --/
 7728: 
 7729: /[ab]*/
 7730:     aaaa
 7731:  0: aaaa
 7732:     
 7733: /[ab]*?/
 7734:     aaaa
 7735:  0: aaaa
 7736:  1: aaa
 7737:  2: aa
 7738:  3: a
 7739:  4: 
 7740:     
 7741: /[ab]?/
 7742:     aaaa
 7743:  0: a
 7744:     
 7745: /[ab]??/
 7746:     aaaa
 7747:  0: a
 7748:  1: 
 7749:     
 7750: /[ab]+/
 7751:     aaaa
 7752:  0: aaaa
 7753:     
 7754: /[ab]+?/
 7755:     aaaa
 7756:  0: aaaa
 7757:  1: aaa
 7758:  2: aa
 7759:  3: a
 7760:     
 7761: /[ab]{2,3}/
 7762:     aaaa
 7763:  0: aaa
 7764:     
 7765: /[ab]{2,3}?/
 7766:     aaaa
 7767:  0: aaa
 7768:  1: aa
 7769:     
 7770: /[ab]{2,}/
 7771:     aaaa    
 7772:  0: aaaa
 7773: 
 7774: /[ab]{2,}?/
 7775:     aaaa    
 7776:  0: aaaa
 7777:  1: aaa
 7778:  2: aa
 7779: 
 7780: /-- End of testinput8 --/

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