File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / pcre / testdata / testinput8
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:     
   10: /ab*c/
   11:     abc
   12:     abbbbc
   13:     ac
   14:     
   15: /ab+c/
   16:     abc
   17:     abbbbbbc
   18:     *** Failers 
   19:     ac
   20:     ab
   21:     
   22: /a*/O
   23:     a
   24:     aaaaaaaaaaaaaaaaa
   25:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
   26:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\F 
   27:     
   28: /(a|abcd|african)/
   29:     a
   30:     abcd
   31:     african
   32:     
   33: /^abc/
   34:     abcdef
   35:     *** Failers
   36:     xyzabc
   37:     xyz\nabc    
   38:     
   39: /^abc/m
   40:     abcdef
   41:     xyz\nabc    
   42:     *** Failers
   43:     xyzabc
   44:     
   45: /\Aabc/
   46:     abcdef
   47:     *** Failers
   48:     xyzabc
   49:     xyz\nabc    
   50:     
   51: /\Aabc/m
   52:     abcdef
   53:     *** Failers
   54:     xyzabc
   55:     xyz\nabc    
   56:     
   57: /\Gabc/
   58:     abcdef
   59:     xyzabc\>3
   60:     *** Failers
   61:     xyzabc    
   62:     xyzabc\>2 
   63:     
   64: /x\dy\Dz/
   65:     x9yzz
   66:     x0y+z
   67:     *** Failers
   68:     xyz
   69:     xxy0z     
   70:     
   71: /x\sy\Sz/
   72:     x yzz
   73:     x y+z
   74:     *** Failers
   75:     xyz
   76:     xxyyz
   77:     
   78: /x\wy\Wz/
   79:     xxy+z
   80:     *** Failers
   81:     xxy0z
   82:     x+y+z         
   83:     
   84: /x.y/
   85:     x+y
   86:     x-y
   87:     *** Failers
   88:     x\ny
   89:     
   90: /x.y/s
   91:     x+y
   92:     x-y
   93:     x\ny
   94: 
   95: /(a.b(?s)c.d|x.y)p.q/
   96:     a+bc+dp+q
   97:     a+bc\ndp+q
   98:     x\nyp+q 
   99:     *** Failers 
  100:     a\nbc\ndp+q
  101:     a+bc\ndp\nq
  102:     x\nyp\nq 
  103: 
  104: /a\d\z/
  105:     ba0
  106:     *** Failers
  107:     ba0\n
  108:     ba0\ncd   
  109: 
  110: /a\d\z/m
  111:     ba0
  112:     *** Failers
  113:     ba0\n
  114:     ba0\ncd   
  115: 
  116: /a\d\Z/
  117:     ba0
  118:     ba0\n
  119:     *** Failers
  120:     ba0\ncd   
  121: 
  122: /a\d\Z/m
  123:     ba0
  124:     ba0\n
  125:     *** Failers
  126:     ba0\ncd   
  127: 
  128: /a\d$/
  129:     ba0
  130:     ba0\n
  131:     *** Failers
  132:     ba0\ncd   
  133: 
  134: /a\d$/m
  135:     ba0
  136:     ba0\n
  137:     ba0\ncd   
  138:     *** Failers
  139: 
  140: /abc/i
  141:     abc
  142:     aBc
  143:     ABC
  144:     
  145: /[^a]/
  146:     abcd
  147:     
  148: /ab?\w/
  149:     abz
  150:     abbz
  151:     azz  
  152: 
  153: /x{0,3}yz/
  154:     ayzq
  155:     axyzq
  156:     axxyz
  157:     axxxyzq
  158:     axxxxyzq
  159:     *** Failers
  160:     ax
  161:     axx     
  162:       
  163: /x{3}yz/
  164:     axxxyzq
  165:     axxxxyzq
  166:     *** Failers
  167:     ax
  168:     axx     
  169:     ayzq
  170:     axyzq
  171:     axxyz
  172:       
  173: /x{2,3}yz/
  174:     axxyz
  175:     axxxyzq
  176:     axxxxyzq
  177:     *** Failers
  178:     ax
  179:     axx     
  180:     ayzq
  181:     axyzq
  182:       
  183: /[^a]+/O
  184:     bac
  185:     bcdefax
  186:     *** Failers
  187:     aaaaa   
  188: 
  189: /[^a]*/O
  190:     bac
  191:     bcdefax
  192:     *** Failers
  193:     aaaaa   
  194:     
  195: /[^a]{3,5}/O
  196:     xyz
  197:     awxyza
  198:     abcdefa
  199:     abcdefghijk
  200:     *** Failers
  201:     axya
  202:     axa
  203:     aaaaa         
  204: 
  205: /\d*/
  206:     1234b567
  207:     xyz
  208:     
  209: /\D*/
  210:     a1234b567
  211:     xyz
  212:      
  213: /\d+/
  214:     ab1234c56
  215:     *** Failers
  216:     xyz
  217:     
  218: /\D+/
  219:     ab123c56
  220:     *** Failers
  221:     789
  222:     
  223: /\d?A/
  224:     045ABC
  225:     ABC
  226:     *** Failers
  227:     XYZ
  228:     
  229: /\D?A/
  230:     ABC
  231:     BAC
  232:     9ABC             
  233:     *** Failers
  234: 
  235: /a+/
  236:     aaaa
  237: 
  238: /^.*xyz/
  239:     xyz
  240:     ggggggggxyz
  241:     
  242: /^.+xyz/
  243:     abcdxyz
  244:     axyz
  245:     *** Failers
  246:     xyz
  247:     
  248: /^.?xyz/
  249:     xyz
  250:     cxyz       
  251: 
  252: /^\d{2,3}X/
  253:     12X
  254:     123X
  255:     *** Failers
  256:     X
  257:     1X
  258:     1234X     
  259: 
  260: /^[abcd]\d/
  261:     a45
  262:     b93
  263:     c99z
  264:     d04
  265:     *** Failers
  266:     e45
  267:     abcd      
  268:     abcd1234
  269:     1234  
  270: 
  271: /^[abcd]*\d/
  272:     a45
  273:     b93
  274:     c99z
  275:     d04
  276:     abcd1234
  277:     1234  
  278:     *** Failers
  279:     e45
  280:     abcd      
  281: 
  282: /^[abcd]+\d/
  283:     a45
  284:     b93
  285:     c99z
  286:     d04
  287:     abcd1234
  288:     *** Failers
  289:     1234  
  290:     e45
  291:     abcd      
  292: 
  293: /^a+X/
  294:     aX
  295:     aaX 
  296: 
  297: /^[abcd]?\d/
  298:     a45
  299:     b93
  300:     c99z
  301:     d04
  302:     1234  
  303:     *** Failers
  304:     abcd1234
  305:     e45
  306: 
  307: /^[abcd]{2,3}\d/
  308:     ab45
  309:     bcd93
  310:     *** Failers
  311:     1234 
  312:     a36 
  313:     abcd1234
  314:     ee45
  315: 
  316: /^(abc)*\d/
  317:     abc45
  318:     abcabcabc45
  319:     42xyz 
  320:     *** Failers
  321: 
  322: /^(abc)+\d/
  323:     abc45
  324:     abcabcabc45
  325:     *** Failers
  326:     42xyz 
  327: 
  328: /^(abc)?\d/
  329:     abc45
  330:     42xyz 
  331:     *** Failers
  332:     abcabcabc45
  333: 
  334: /^(abc){2,3}\d/
  335:     abcabc45
  336:     abcabcabc45
  337:     *** Failers
  338:     abcabcabcabc45
  339:     abc45
  340:     42xyz 
  341: 
  342: /1(abc|xyz)2(?1)3/
  343:     1abc2abc3456
  344:     1abc2xyz3456 
  345: 
  346: /^(a*\w|ab)=(a*\w|ab)/
  347:     ab=ab
  348: 
  349: /^(a*\w|ab)=(?1)/
  350:     ab=ab
  351: 
  352: /^([^()]|\((?1)*\))*$/
  353:     abc
  354:     a(b)c
  355:     a(b(c))d  
  356:     *** Failers)
  357:     a(b(c)d  
  358: 
  359: /^>abc>([^()]|\((?1)*\))*<xyz<$/
  360:     >abc>123<xyz<
  361:     >abc>1(2)3<xyz<
  362:     >abc>(1(2)3)<xyz<
  363: 
  364: /^(?>a*)\d/
  365:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
  366:     *** Failers 
  367:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  368: 
  369: /< (?: (?(R) \d++  | [^<>]*+) | (?R)) * >/x
  370:     <>
  371:     <abcd>
  372:     <abc <123> hij>
  373:     <abc <def> hij>
  374:     <abc<>def> 
  375:     <abc<>      
  376:     *** Failers
  377:     <abc
  378: 
  379: /^(?(?=abc)\w{3}:|\d\d)$/        
  380:     abc:                          
  381:     12                             
  382:     *** Failers                     
  383:     123                       
  384:     xyz                        
  385:                                 
  386: /^(?(?!abc)\d\d|\w{3}:)$/      
  387:     abc:                        
  388:     12         
  389:     *** Failers
  390:     123
  391:     xyz    
  392: 
  393: /^(?=abc)\w{5}:$/        
  394:     abcde:                          
  395:     *** Failers                     
  396:     abc.. 
  397:     123                       
  398:     vwxyz                        
  399:                                 
  400: /^(?!abc)\d\d$/      
  401:     12         
  402:     *** Failers
  403:     abcde:
  404:     abc..  
  405:     123
  406:     vwxyz    
  407: 
  408: /(?<=abc|xy)123/
  409:     abc12345
  410:     wxy123z
  411:     *** Failers
  412:     123abc
  413: 
  414: /(?<!abc|xy)123/
  415:     123abc
  416:     mno123456 
  417:     *** Failers
  418:     abc12345
  419:     wxy123z
  420: 
  421: /abc(?C1)xyz/
  422:     abcxyz
  423:     123abcxyz999 
  424: 
  425: /(ab|cd){3,4}/C
  426:   ababab
  427:   abcdabcd
  428:   abcdcdcdcdcd  
  429: 
  430: /^abc/
  431:     abcdef
  432:     *** Failers
  433:     abcdef\B  
  434: 
  435: /^(a*|xyz)/
  436:     bcd
  437:     aaabcd
  438:     xyz
  439:     xyz\N  
  440:     *** Failers
  441:     bcd\N   
  442:     
  443: /xyz$/
  444:     xyz
  445:     xyz\n
  446:     *** Failers
  447:     xyz\Z
  448:     xyz\n\Z    
  449:     
  450: /xyz$/m
  451:     xyz
  452:     xyz\n 
  453:     abcxyz\npqr 
  454:     abcxyz\npqr\Z 
  455:     xyz\n\Z    
  456:     *** Failers
  457:     xyz\Z
  458: 
  459: /\Gabc/
  460:     abcdef
  461:     defabcxyz\>3 
  462:     *** Failers 
  463:     defabcxyz
  464: 
  465: /^abcdef/
  466:     ab\P
  467:     abcde\P
  468:     abcdef\P
  469:     *** Failers
  470:     abx\P    
  471: 
  472: /^a{2,4}\d+z/
  473:     a\P
  474:     aa\P
  475:     aa2\P 
  476:     aaa\P
  477:     aaa23\P 
  478:     aaaa12345\P
  479:     aa0z\P
  480:     aaaa4444444444444z\P 
  481:     *** Failers
  482:     az\P 
  483:     aaaaa\P 
  484:     a56\P 
  485: 
  486: /^abcdef/
  487:    abc\P
  488:    def\R 
  489:    
  490: /(?<=foo)bar/
  491:    xyzfo\P 
  492:    foob\P\>2 
  493:    foobar...\R\P\>4 
  494:    xyzfo\P
  495:    foobar\>2  
  496:    *** Failers
  497:    xyzfo\P
  498:    obar\R   
  499: 
  500: /(ab*(cd|ef))+X/
  501:     adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\P\Z
  502:     lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\P\B\Z
  503:     cdabbbbbbbb\P\R\B\Z
  504:     efabbbbbbbbbbbbbbbb\P\R\B\Z
  505:     bbbbbbbbbbbbcdXyasdfadf\P\R\B\Z    
  506: 
  507: /(a|b)/SF>testsavedregex
  508: <testsavedregex
  509:     abc
  510:     ** Failers
  511:     def  
  512:     
  513: /the quick brown fox/
  514:     the quick brown fox
  515:     The quick brown FOX
  516:     What do you know about the quick brown fox?
  517:     What do you know about THE QUICK BROWN FOX?
  518: 
  519: /The quick brown fox/i
  520:     the quick brown fox
  521:     The quick brown FOX
  522:     What do you know about the quick brown fox?
  523:     What do you know about THE QUICK BROWN FOX?
  524: 
  525: /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
  526:     abcd\t\n\r\f\a\e9;\$\\?caxyz
  527: 
  528: /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
  529:     abxyzpqrrrabbxyyyypqAzz
  530:     abxyzpqrrrabbxyyyypqAzz
  531:     aabxyzpqrrrabbxyyyypqAzz
  532:     aaabxyzpqrrrabbxyyyypqAzz
  533:     aaaabxyzpqrrrabbxyyyypqAzz
  534:     abcxyzpqrrrabbxyyyypqAzz
  535:     aabcxyzpqrrrabbxyyyypqAzz
  536:     aaabcxyzpqrrrabbxyyyypAzz
  537:     aaabcxyzpqrrrabbxyyyypqAzz
  538:     aaabcxyzpqrrrabbxyyyypqqAzz
  539:     aaabcxyzpqrrrabbxyyyypqqqAzz
  540:     aaabcxyzpqrrrabbxyyyypqqqqAzz
  541:     aaabcxyzpqrrrabbxyyyypqqqqqAzz
  542:     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
  543:     aaaabcxyzpqrrrabbxyyyypqAzz
  544:     abxyzzpqrrrabbxyyyypqAzz
  545:     aabxyzzzpqrrrabbxyyyypqAzz
  546:     aaabxyzzzzpqrrrabbxyyyypqAzz
  547:     aaaabxyzzzzpqrrrabbxyyyypqAzz
  548:     abcxyzzpqrrrabbxyyyypqAzz
  549:     aabcxyzzzpqrrrabbxyyyypqAzz
  550:     aaabcxyzzzzpqrrrabbxyyyypqAzz
  551:     aaaabcxyzzzzpqrrrabbxyyyypqAzz
  552:     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
  553:     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
  554:     aaabcxyzpqrrrabbxyyyypABzz
  555:     aaabcxyzpqrrrabbxyyyypABBzz
  556:     >>>aaabxyzpqrrrabbxyyyypqAzz
  557:     >aaaabxyzpqrrrabbxyyyypqAzz
  558:     >>>>abcxyzpqrrrabbxyyyypqAzz
  559:     *** Failers
  560:     abxyzpqrrabbxyyyypqAzz
  561:     abxyzpqrrrrabbxyyyypqAzz
  562:     abxyzpqrrrabxyyyypqAzz
  563:     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
  564:     aaaabcxyzzzzpqrrrabbbxyyypqAzz
  565:     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
  566: 
  567: /^(abc){1,2}zz/
  568:     abczz
  569:     abcabczz
  570:     *** Failers
  571:     zz
  572:     abcabcabczz
  573:     >>abczz
  574: 
  575: /^(b+?|a){1,2}?c/
  576:     bc
  577:     bbc
  578:     bbbc
  579:     bac
  580:     bbac
  581:     aac
  582:     abbbbbbbbbbbc
  583:     bbbbbbbbbbbac
  584:     *** Failers
  585:     aaac
  586:     abbbbbbbbbbbac
  587: 
  588: /^(b+|a){1,2}c/
  589:     bc
  590:     bbc
  591:     bbbc
  592:     bac
  593:     bbac
  594:     aac
  595:     abbbbbbbbbbbc
  596:     bbbbbbbbbbbac
  597:     *** Failers
  598:     aaac
  599:     abbbbbbbbbbbac
  600: 
  601: /^(b+|a){1,2}?bc/
  602:     bbc
  603: 
  604: /^(b*|ba){1,2}?bc/
  605:     babc
  606:     bbabc
  607:     bababc
  608:     *** Failers
  609:     bababbc
  610:     babababc
  611: 
  612: /^(ba|b*){1,2}?bc/
  613:     babc
  614:     bbabc
  615:     bababc
  616:     *** Failers
  617:     bababbc
  618:     babababc
  619: 
  620: /^\ca\cA\c[\c{\c:/
  621:     \x01\x01\e;z
  622: 
  623: /^[ab\]cde]/
  624:     athing
  625:     bthing
  626:     ]thing
  627:     cthing
  628:     dthing
  629:     ething
  630:     *** Failers
  631:     fthing
  632:     [thing
  633:     \\thing
  634: 
  635: /^[]cde]/
  636:     ]thing
  637:     cthing
  638:     dthing
  639:     ething
  640:     *** Failers
  641:     athing
  642:     fthing
  643: 
  644: /^[^ab\]cde]/
  645:     fthing
  646:     [thing
  647:     \\thing
  648:     *** Failers
  649:     athing
  650:     bthing
  651:     ]thing
  652:     cthing
  653:     dthing
  654:     ething
  655: 
  656: /^[^]cde]/
  657:     athing
  658:     fthing
  659:     *** Failers
  660:     ]thing
  661:     cthing
  662:     dthing
  663:     ething
  664: 
  665: /^\/
  666:     
  667: 
  668: /^/
  669:     
  670: 
  671: /^[0-9]+$/
  672:     0
  673:     1
  674:     2
  675:     3
  676:     4
  677:     5
  678:     6
  679:     7
  680:     8
  681:     9
  682:     10
  683:     100
  684:     *** Failers
  685:     abc
  686: 
  687: /^.*nter/
  688:     enter
  689:     inter
  690:     uponter
  691: 
  692: /^xxx[0-9]+$/
  693:     xxx0
  694:     xxx1234
  695:     *** Failers
  696:     xxx
  697: 
  698: /^.+[0-9][0-9][0-9]$/
  699:     x123
  700:     xx123
  701:     123456
  702:     *** Failers
  703:     123
  704:     x1234
  705: 
  706: /^.+?[0-9][0-9][0-9]$/
  707:     x123
  708:     xx123
  709:     123456
  710:     *** Failers
  711:     123
  712:     x1234
  713: 
  714: /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
  715:     abc!pqr=apquxz.ixr.zzz.ac.uk
  716:     *** Failers
  717:     !pqr=apquxz.ixr.zzz.ac.uk
  718:     abc!=apquxz.ixr.zzz.ac.uk
  719:     abc!pqr=apquxz:ixr.zzz.ac.uk
  720:     abc!pqr=apquxz.ixr.zzz.ac.ukk
  721: 
  722: /:/
  723:     Well, we need a colon: somewhere
  724:     *** Fail if we don't
  725: 
  726: /([\da-f:]+)$/i
  727:     0abc
  728:     abc
  729:     fed
  730:     E
  731:     ::
  732:     5f03:12C0::932e
  733:     fed def
  734:     Any old stuff
  735:     *** Failers
  736:     0zzz
  737:     gzzz
  738:     fed\x20
  739:     Any old rubbish
  740: 
  741: /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
  742:     .1.2.3
  743:     A.12.123.0
  744:     *** Failers
  745:     .1.2.3333
  746:     1.2.3
  747:     1234.2.3
  748: 
  749: /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
  750:     1 IN SOA non-sp1 non-sp2(
  751:     1    IN    SOA    non-sp1    non-sp2   (
  752:     *** Failers
  753:     1IN SOA non-sp1 non-sp2(
  754: 
  755: /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
  756:     a.
  757:     Z.
  758:     2.
  759:     ab-c.pq-r.
  760:     sxk.zzz.ac.uk.
  761:     x-.y-.
  762:     *** Failers
  763:     -abc.peq.
  764: 
  765: /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
  766:     *.a
  767:     *.b0-a
  768:     *.c3-b.c
  769:     *.c-a.b-c
  770:     *** Failers
  771:     *.0
  772:     *.a-
  773:     *.a-b.c-
  774:     *.c-a.0-c
  775: 
  776: /^(?=ab(de))(abd)(e)/
  777:     abde
  778: 
  779: /^(?!(ab)de|x)(abd)(f)/
  780:     abdf
  781: 
  782: /^(?=(ab(cd)))(ab)/
  783:     abcd
  784: 
  785: /^[\da-f](\.[\da-f])*$/i
  786:     a.b.c.d
  787:     A.B.C.D
  788:     a.b.c.1.2.3.C
  789: 
  790: /^\".*\"\s*(;.*)?$/
  791:     \"1234\"
  792:     \"abcd\" ;
  793:     \"\" ; rhubarb
  794:     *** Failers
  795:     \"1234\" : things
  796: 
  797: /^$/
  798:     \
  799:     *** Failers
  800: 
  801: /   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
  802:     ab c
  803:     *** Failers
  804:     abc
  805:     ab cde
  806: 
  807: /(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
  808:     ab c
  809:     *** Failers
  810:     abc
  811:     ab cde
  812: 
  813: /^   a\ b[c ]d       $/x
  814:     a bcd
  815:     a b d
  816:     *** Failers
  817:     abcd
  818:     ab d
  819: 
  820: /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
  821:     abcdefhijklm
  822: 
  823: /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
  824:     abcdefhijklm
  825: 
  826: /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
  827:     a+ Z0+\x08\n\x1d\x12
  828: 
  829: /^[.^$|()*+?{,}]+/
  830:     .^\$(*+)|{?,?}
  831: 
  832: /^a*\w/
  833:     z
  834:     az
  835:     aaaz
  836:     a
  837:     aa
  838:     aaaa
  839:     a+
  840:     aa+
  841: 
  842: /^a*?\w/
  843:     z
  844:     az
  845:     aaaz
  846:     a
  847:     aa
  848:     aaaa
  849:     a+
  850:     aa+
  851: 
  852: /^a+\w/
  853:     az
  854:     aaaz
  855:     aa
  856:     aaaa
  857:     aa+
  858: 
  859: /^a+?\w/
  860:     az
  861:     aaaz
  862:     aa
  863:     aaaa
  864:     aa+
  865: 
  866: /^\d{8}\w{2,}/
  867:     1234567890
  868:     12345678ab
  869:     12345678__
  870:     *** Failers
  871:     1234567
  872: 
  873: /^[aeiou\d]{4,5}$/
  874:     uoie
  875:     1234
  876:     12345
  877:     aaaaa
  878:     *** Failers
  879:     123456
  880: 
  881: /^[aeiou\d]{4,5}?/
  882:     uoie
  883:     1234
  884:     12345
  885:     aaaaa
  886:     123456
  887: 
  888: /^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]/
  889:     From abcd  Mon Sep 01 12:33:02 1997
  890: 
  891: /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
  892:     From abcd  Mon Sep 01 12:33:02 1997
  893:     From abcd  Mon Sep  1 12:33:02 1997
  894:     *** Failers
  895:     From abcd  Sep 01 12:33:02 1997
  896: 
  897: /^12.34/s
  898:     12\n34
  899:     12\r34
  900: 
  901: /\w+(?=\t)/
  902:     the quick brown\t fox
  903: 
  904: /foo(?!bar)(.*)/
  905:     foobar is foolish see?
  906: 
  907: /(?:(?!foo)...|^.{0,2})bar(.*)/
  908:     foobar crowbar etc
  909:     barrel
  910:     2barrel
  911:     A barrel
  912: 
  913: /^(\D*)(?=\d)(?!123)/
  914:     abc456
  915:     *** Failers
  916:     abc123
  917: 
  918: /^1234(?# test newlines
  919:   inside)/
  920:     1234
  921: 
  922: /^1234 #comment in extended re
  923:   /x
  924:     1234
  925: 
  926: /#rhubarb
  927:   abcd/x
  928:     abcd
  929: 
  930: /^abcd#rhubarb/x
  931:     abcd
  932: 
  933: /(?!^)abc/
  934:     the abc
  935:     *** Failers
  936:     abc
  937: 
  938: /(?=^)abc/
  939:     abc
  940:     *** Failers
  941:     the abc
  942: 
  943: /^[ab]{1,3}(ab*|b)/O
  944:     aabbbbb
  945: 
  946: /^[ab]{1,3}?(ab*|b)/O
  947:     aabbbbb
  948: 
  949: /^[ab]{1,3}?(ab*?|b)/O
  950:     aabbbbb
  951: 
  952: /^[ab]{1,3}(ab*?|b)/O
  953:     aabbbbb
  954: 
  955: /  (?: [\040\t] |  \(
  956: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
  957: \)  )*                          # optional leading comment
  958: (?:    (?:
  959: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
  960: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
  961: |
  962: " (?:                      # opening quote...
  963: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
  964: |                     #    or
  965: \\ [^\x80-\xff]           #   Escaped something (something != CR)
  966: )* "  # closing quote
  967: )                    # initial word
  968: (?:  (?: [\040\t] |  \(
  969: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
  970: \)  )*  \.  (?: [\040\t] |  \(
  971: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
  972: \)  )*   (?:
  973: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
  974: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
  975: |
  976: " (?:                      # opening quote...
  977: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
  978: |                     #    or
  979: \\ [^\x80-\xff]           #   Escaped something (something != CR)
  980: )* "  # closing quote
  981: )  )* # further okay, if led by a period
  982: (?: [\040\t] |  \(
  983: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
  984: \)  )*  @  (?: [\040\t] |  \(
  985: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
  986: \)  )*    (?:
  987: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
  988: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
  989: |   \[                         # [
  990: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
  991: \]                        #           ]
  992: )                           # initial subdomain
  993: (?:                                  #
  994: (?: [\040\t] |  \(
  995: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
  996: \)  )*  \.                        # if led by a period...
  997: (?: [\040\t] |  \(
  998: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
  999: \)  )*   (?:
 1000: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1001: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1002: |   \[                         # [
 1003: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1004: \]                        #           ]
 1005: )                     #   ...further okay
 1006: )*
 1007: # address
 1008: |                     #  or
 1009: (?:
 1010: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1011: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1012: |
 1013: " (?:                      # opening quote...
 1014: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 1015: |                     #    or
 1016: \\ [^\x80-\xff]           #   Escaped something (something != CR)
 1017: )* "  # closing quote
 1018: )             # one word, optionally followed by....
 1019: (?:
 1020: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
 1021: \(
 1022: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1023: \)       |  # comments, or...
 1024: 
 1025: " (?:                      # opening quote...
 1026: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 1027: |                     #    or
 1028: \\ [^\x80-\xff]           #   Escaped something (something != CR)
 1029: )* "  # closing quote
 1030: # quoted strings
 1031: )*
 1032: <  (?: [\040\t] |  \(
 1033: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1034: \)  )*                     # leading <
 1035: (?:  @  (?: [\040\t] |  \(
 1036: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1037: \)  )*    (?:
 1038: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1039: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1040: |   \[                         # [
 1041: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1042: \]                        #           ]
 1043: )                           # initial subdomain
 1044: (?:                                  #
 1045: (?: [\040\t] |  \(
 1046: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1047: \)  )*  \.                        # if led by a period...
 1048: (?: [\040\t] |  \(
 1049: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1050: \)  )*   (?:
 1051: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1052: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1053: |   \[                         # [
 1054: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1055: \]                        #           ]
 1056: )                     #   ...further okay
 1057: )*
 1058: 
 1059: (?:  (?: [\040\t] |  \(
 1060: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1061: \)  )*  ,  (?: [\040\t] |  \(
 1062: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1063: \)  )*  @  (?: [\040\t] |  \(
 1064: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1065: \)  )*    (?:
 1066: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1067: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1068: |   \[                         # [
 1069: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1070: \]                        #           ]
 1071: )                           # initial subdomain
 1072: (?:                                  #
 1073: (?: [\040\t] |  \(
 1074: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1075: \)  )*  \.                        # if led by a period...
 1076: (?: [\040\t] |  \(
 1077: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1078: \)  )*   (?:
 1079: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1080: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1081: |   \[                         # [
 1082: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1083: \]                        #           ]
 1084: )                     #   ...further okay
 1085: )*
 1086: )* # further okay, if led by comma
 1087: :                                # closing colon
 1088: (?: [\040\t] |  \(
 1089: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1090: \)  )*  )? #       optional route
 1091: (?:
 1092: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1093: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1094: |
 1095: " (?:                      # opening quote...
 1096: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 1097: |                     #    or
 1098: \\ [^\x80-\xff]           #   Escaped something (something != CR)
 1099: )* "  # closing quote
 1100: )                    # initial word
 1101: (?:  (?: [\040\t] |  \(
 1102: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1103: \)  )*  \.  (?: [\040\t] |  \(
 1104: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1105: \)  )*   (?:
 1106: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1107: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1108: |
 1109: " (?:                      # opening quote...
 1110: [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 1111: |                     #    or
 1112: \\ [^\x80-\xff]           #   Escaped something (something != CR)
 1113: )* "  # closing quote
 1114: )  )* # further okay, if led by a period
 1115: (?: [\040\t] |  \(
 1116: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1117: \)  )*  @  (?: [\040\t] |  \(
 1118: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1119: \)  )*    (?:
 1120: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1121: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1122: |   \[                         # [
 1123: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1124: \]                        #           ]
 1125: )                           # initial subdomain
 1126: (?:                                  #
 1127: (?: [\040\t] |  \(
 1128: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1129: \)  )*  \.                        # if led by a period...
 1130: (?: [\040\t] |  \(
 1131: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1132: \)  )*   (?:
 1133: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1134: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1135: |   \[                         # [
 1136: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 1137: \]                        #           ]
 1138: )                     #   ...further okay
 1139: )*
 1140: #       address spec
 1141: (?: [\040\t] |  \(
 1142: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1143: \)  )*  > #                  trailing >
 1144: # name and address
 1145: )  (?: [\040\t] |  \(
 1146: (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 1147: \)  )*                       # optional trailing comment
 1148: /x
 1149:     Alan Other <user\@dom.ain>
 1150:     <user\@dom.ain>
 1151:     user\@dom.ain
 1152:     \"A. Other\" <user.1234\@dom.ain> (a comment)
 1153:     A. Other <user.1234\@dom.ain> (a comment)
 1154:     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
 1155:     A missing angle <user\@some.where
 1156:     *** Failers
 1157:     The quick brown fox
 1158: 
 1159: /[\040\t]*                    # Nab whitespace.
 1160: (?:
 1161: \(                              #  (
 1162: [^\\\x80-\xff\n\015()] *                             #     normal*
 1163: (?:                                 #       (
 1164: (?:  \\ [^\x80-\xff]  |
 1165: \(                            #  (
 1166: [^\\\x80-\xff\n\015()] *                            #     normal*
 1167: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1168: \)                           #                       )
 1169: )    #         special
 1170: [^\\\x80-\xff\n\015()] *                         #         normal*
 1171: )*                                  #            )*
 1172: \)                             #                )
 1173: [\040\t]* )*    # If comment found, allow more spaces.
 1174: # optional leading comment
 1175: (?:
 1176: (?:
 1177: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1178: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1179: # Atom
 1180: |                       #  or
 1181: "                                     # "
 1182: [^\\\x80-\xff\n\015"] *                            #   normal
 1183: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 1184: "                                     #        "
 1185: # Quoted string
 1186: )
 1187: [\040\t]*                    # Nab whitespace.
 1188: (?:
 1189: \(                              #  (
 1190: [^\\\x80-\xff\n\015()] *                             #     normal*
 1191: (?:                                 #       (
 1192: (?:  \\ [^\x80-\xff]  |
 1193: \(                            #  (
 1194: [^\\\x80-\xff\n\015()] *                            #     normal*
 1195: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1196: \)                           #                       )
 1197: )    #         special
 1198: [^\\\x80-\xff\n\015()] *                         #         normal*
 1199: )*                                  #            )*
 1200: \)                             #                )
 1201: [\040\t]* )*    # If comment found, allow more spaces.
 1202: (?:
 1203: \.
 1204: [\040\t]*                    # Nab whitespace.
 1205: (?:
 1206: \(                              #  (
 1207: [^\\\x80-\xff\n\015()] *                             #     normal*
 1208: (?:                                 #       (
 1209: (?:  \\ [^\x80-\xff]  |
 1210: \(                            #  (
 1211: [^\\\x80-\xff\n\015()] *                            #     normal*
 1212: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1213: \)                           #                       )
 1214: )    #         special
 1215: [^\\\x80-\xff\n\015()] *                         #         normal*
 1216: )*                                  #            )*
 1217: \)                             #                )
 1218: [\040\t]* )*    # If comment found, allow more spaces.
 1219: (?:
 1220: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1221: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1222: # Atom
 1223: |                       #  or
 1224: "                                     # "
 1225: [^\\\x80-\xff\n\015"] *                            #   normal
 1226: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 1227: "                                     #        "
 1228: # Quoted string
 1229: )
 1230: [\040\t]*                    # Nab whitespace.
 1231: (?:
 1232: \(                              #  (
 1233: [^\\\x80-\xff\n\015()] *                             #     normal*
 1234: (?:                                 #       (
 1235: (?:  \\ [^\x80-\xff]  |
 1236: \(                            #  (
 1237: [^\\\x80-\xff\n\015()] *                            #     normal*
 1238: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1239: \)                           #                       )
 1240: )    #         special
 1241: [^\\\x80-\xff\n\015()] *                         #         normal*
 1242: )*                                  #            )*
 1243: \)                             #                )
 1244: [\040\t]* )*    # If comment found, allow more spaces.
 1245: # additional words
 1246: )*
 1247: @
 1248: [\040\t]*                    # Nab whitespace.
 1249: (?:
 1250: \(                              #  (
 1251: [^\\\x80-\xff\n\015()] *                             #     normal*
 1252: (?:                                 #       (
 1253: (?:  \\ [^\x80-\xff]  |
 1254: \(                            #  (
 1255: [^\\\x80-\xff\n\015()] *                            #     normal*
 1256: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1257: \)                           #                       )
 1258: )    #         special
 1259: [^\\\x80-\xff\n\015()] *                         #         normal*
 1260: )*                                  #            )*
 1261: \)                             #                )
 1262: [\040\t]* )*    # If comment found, allow more spaces.
 1263: (?:
 1264: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1265: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1266: |
 1267: \[                            # [
 1268: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 1269: \]                           #           ]
 1270: )
 1271: [\040\t]*                    # Nab whitespace.
 1272: (?:
 1273: \(                              #  (
 1274: [^\\\x80-\xff\n\015()] *                             #     normal*
 1275: (?:                                 #       (
 1276: (?:  \\ [^\x80-\xff]  |
 1277: \(                            #  (
 1278: [^\\\x80-\xff\n\015()] *                            #     normal*
 1279: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1280: \)                           #                       )
 1281: )    #         special
 1282: [^\\\x80-\xff\n\015()] *                         #         normal*
 1283: )*                                  #            )*
 1284: \)                             #                )
 1285: [\040\t]* )*    # If comment found, allow more spaces.
 1286: # optional trailing comments
 1287: (?:
 1288: \.
 1289: [\040\t]*                    # Nab whitespace.
 1290: (?:
 1291: \(                              #  (
 1292: [^\\\x80-\xff\n\015()] *                             #     normal*
 1293: (?:                                 #       (
 1294: (?:  \\ [^\x80-\xff]  |
 1295: \(                            #  (
 1296: [^\\\x80-\xff\n\015()] *                            #     normal*
 1297: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1298: \)                           #                       )
 1299: )    #         special
 1300: [^\\\x80-\xff\n\015()] *                         #         normal*
 1301: )*                                  #            )*
 1302: \)                             #                )
 1303: [\040\t]* )*    # If comment found, allow more spaces.
 1304: (?:
 1305: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1306: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1307: |
 1308: \[                            # [
 1309: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 1310: \]                           #           ]
 1311: )
 1312: [\040\t]*                    # Nab whitespace.
 1313: (?:
 1314: \(                              #  (
 1315: [^\\\x80-\xff\n\015()] *                             #     normal*
 1316: (?:                                 #       (
 1317: (?:  \\ [^\x80-\xff]  |
 1318: \(                            #  (
 1319: [^\\\x80-\xff\n\015()] *                            #     normal*
 1320: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1321: \)                           #                       )
 1322: )    #         special
 1323: [^\\\x80-\xff\n\015()] *                         #         normal*
 1324: )*                                  #            )*
 1325: \)                             #                )
 1326: [\040\t]* )*    # If comment found, allow more spaces.
 1327: # optional trailing comments
 1328: )*
 1329: # address
 1330: |                             #  or
 1331: (?:
 1332: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1333: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1334: # Atom
 1335: |                       #  or
 1336: "                                     # "
 1337: [^\\\x80-\xff\n\015"] *                            #   normal
 1338: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 1339: "                                     #        "
 1340: # Quoted string
 1341: )
 1342: # leading word
 1343: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
 1344: (?:
 1345: (?:
 1346: \(                              #  (
 1347: [^\\\x80-\xff\n\015()] *                             #     normal*
 1348: (?:                                 #       (
 1349: (?:  \\ [^\x80-\xff]  |
 1350: \(                            #  (
 1351: [^\\\x80-\xff\n\015()] *                            #     normal*
 1352: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1353: \)                           #                       )
 1354: )    #         special
 1355: [^\\\x80-\xff\n\015()] *                         #         normal*
 1356: )*                                  #            )*
 1357: \)                             #                )
 1358: |
 1359: "                                     # "
 1360: [^\\\x80-\xff\n\015"] *                            #   normal
 1361: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 1362: "                                     #        "
 1363: ) # "special" comment or quoted string
 1364: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
 1365: )*
 1366: <
 1367: [\040\t]*                    # Nab whitespace.
 1368: (?:
 1369: \(                              #  (
 1370: [^\\\x80-\xff\n\015()] *                             #     normal*
 1371: (?:                                 #       (
 1372: (?:  \\ [^\x80-\xff]  |
 1373: \(                            #  (
 1374: [^\\\x80-\xff\n\015()] *                            #     normal*
 1375: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1376: \)                           #                       )
 1377: )    #         special
 1378: [^\\\x80-\xff\n\015()] *                         #         normal*
 1379: )*                                  #            )*
 1380: \)                             #                )
 1381: [\040\t]* )*    # If comment found, allow more spaces.
 1382: # <
 1383: (?:
 1384: @
 1385: [\040\t]*                    # Nab whitespace.
 1386: (?:
 1387: \(                              #  (
 1388: [^\\\x80-\xff\n\015()] *                             #     normal*
 1389: (?:                                 #       (
 1390: (?:  \\ [^\x80-\xff]  |
 1391: \(                            #  (
 1392: [^\\\x80-\xff\n\015()] *                            #     normal*
 1393: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1394: \)                           #                       )
 1395: )    #         special
 1396: [^\\\x80-\xff\n\015()] *                         #         normal*
 1397: )*                                  #            )*
 1398: \)                             #                )
 1399: [\040\t]* )*    # If comment found, allow more spaces.
 1400: (?:
 1401: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1402: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1403: |
 1404: \[                            # [
 1405: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 1406: \]                           #           ]
 1407: )
 1408: [\040\t]*                    # Nab whitespace.
 1409: (?:
 1410: \(                              #  (
 1411: [^\\\x80-\xff\n\015()] *                             #     normal*
 1412: (?:                                 #       (
 1413: (?:  \\ [^\x80-\xff]  |
 1414: \(                            #  (
 1415: [^\\\x80-\xff\n\015()] *                            #     normal*
 1416: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1417: \)                           #                       )
 1418: )    #         special
 1419: [^\\\x80-\xff\n\015()] *                         #         normal*
 1420: )*                                  #            )*
 1421: \)                             #                )
 1422: [\040\t]* )*    # If comment found, allow more spaces.
 1423: # optional trailing comments
 1424: (?:
 1425: \.
 1426: [\040\t]*                    # Nab whitespace.
 1427: (?:
 1428: \(                              #  (
 1429: [^\\\x80-\xff\n\015()] *                             #     normal*
 1430: (?:                                 #       (
 1431: (?:  \\ [^\x80-\xff]  |
 1432: \(                            #  (
 1433: [^\\\x80-\xff\n\015()] *                            #     normal*
 1434: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1435: \)                           #                       )
 1436: )    #         special
 1437: [^\\\x80-\xff\n\015()] *                         #         normal*
 1438: )*                                  #            )*
 1439: \)                             #                )
 1440: [\040\t]* )*    # If comment found, allow more spaces.
 1441: (?:
 1442: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1443: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1444: |
 1445: \[                            # [
 1446: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 1447: \]                           #           ]
 1448: )
 1449: [\040\t]*                    # Nab whitespace.
 1450: (?:
 1451: \(                              #  (
 1452: [^\\\x80-\xff\n\015()] *                             #     normal*
 1453: (?:                                 #       (
 1454: (?:  \\ [^\x80-\xff]  |
 1455: \(                            #  (
 1456: [^\\\x80-\xff\n\015()] *                            #     normal*
 1457: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1458: \)                           #                       )
 1459: )    #         special
 1460: [^\\\x80-\xff\n\015()] *                         #         normal*
 1461: )*                                  #            )*
 1462: \)                             #                )
 1463: [\040\t]* )*    # If comment found, allow more spaces.
 1464: # optional trailing comments
 1465: )*
 1466: (?: ,
 1467: [\040\t]*                    # Nab whitespace.
 1468: (?:
 1469: \(                              #  (
 1470: [^\\\x80-\xff\n\015()] *                             #     normal*
 1471: (?:                                 #       (
 1472: (?:  \\ [^\x80-\xff]  |
 1473: \(                            #  (
 1474: [^\\\x80-\xff\n\015()] *                            #     normal*
 1475: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1476: \)                           #                       )
 1477: )    #         special
 1478: [^\\\x80-\xff\n\015()] *                         #         normal*
 1479: )*                                  #            )*
 1480: \)                             #                )
 1481: [\040\t]* )*    # If comment found, allow more spaces.
 1482: @
 1483: [\040\t]*                    # Nab whitespace.
 1484: (?:
 1485: \(                              #  (
 1486: [^\\\x80-\xff\n\015()] *                             #     normal*
 1487: (?:                                 #       (
 1488: (?:  \\ [^\x80-\xff]  |
 1489: \(                            #  (
 1490: [^\\\x80-\xff\n\015()] *                            #     normal*
 1491: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1492: \)                           #                       )
 1493: )    #         special
 1494: [^\\\x80-\xff\n\015()] *                         #         normal*
 1495: )*                                  #            )*
 1496: \)                             #                )
 1497: [\040\t]* )*    # If comment found, allow more spaces.
 1498: (?:
 1499: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1500: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1501: |
 1502: \[                            # [
 1503: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 1504: \]                           #           ]
 1505: )
 1506: [\040\t]*                    # Nab whitespace.
 1507: (?:
 1508: \(                              #  (
 1509: [^\\\x80-\xff\n\015()] *                             #     normal*
 1510: (?:                                 #       (
 1511: (?:  \\ [^\x80-\xff]  |
 1512: \(                            #  (
 1513: [^\\\x80-\xff\n\015()] *                            #     normal*
 1514: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1515: \)                           #                       )
 1516: )    #         special
 1517: [^\\\x80-\xff\n\015()] *                         #         normal*
 1518: )*                                  #            )*
 1519: \)                             #                )
 1520: [\040\t]* )*    # If comment found, allow more spaces.
 1521: # optional trailing comments
 1522: (?:
 1523: \.
 1524: [\040\t]*                    # Nab whitespace.
 1525: (?:
 1526: \(                              #  (
 1527: [^\\\x80-\xff\n\015()] *                             #     normal*
 1528: (?:                                 #       (
 1529: (?:  \\ [^\x80-\xff]  |
 1530: \(                            #  (
 1531: [^\\\x80-\xff\n\015()] *                            #     normal*
 1532: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1533: \)                           #                       )
 1534: )    #         special
 1535: [^\\\x80-\xff\n\015()] *                         #         normal*
 1536: )*                                  #            )*
 1537: \)                             #                )
 1538: [\040\t]* )*    # If comment found, allow more spaces.
 1539: (?:
 1540: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1541: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1542: |
 1543: \[                            # [
 1544: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 1545: \]                           #           ]
 1546: )
 1547: [\040\t]*                    # Nab whitespace.
 1548: (?:
 1549: \(                              #  (
 1550: [^\\\x80-\xff\n\015()] *                             #     normal*
 1551: (?:                                 #       (
 1552: (?:  \\ [^\x80-\xff]  |
 1553: \(                            #  (
 1554: [^\\\x80-\xff\n\015()] *                            #     normal*
 1555: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1556: \)                           #                       )
 1557: )    #         special
 1558: [^\\\x80-\xff\n\015()] *                         #         normal*
 1559: )*                                  #            )*
 1560: \)                             #                )
 1561: [\040\t]* )*    # If comment found, allow more spaces.
 1562: # optional trailing comments
 1563: )*
 1564: )*  # additional domains
 1565: :
 1566: [\040\t]*                    # Nab whitespace.
 1567: (?:
 1568: \(                              #  (
 1569: [^\\\x80-\xff\n\015()] *                             #     normal*
 1570: (?:                                 #       (
 1571: (?:  \\ [^\x80-\xff]  |
 1572: \(                            #  (
 1573: [^\\\x80-\xff\n\015()] *                            #     normal*
 1574: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1575: \)                           #                       )
 1576: )    #         special
 1577: [^\\\x80-\xff\n\015()] *                         #         normal*
 1578: )*                                  #            )*
 1579: \)                             #                )
 1580: [\040\t]* )*    # If comment found, allow more spaces.
 1581: # optional trailing comments
 1582: )?     #       optional route
 1583: (?:
 1584: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1585: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1586: # Atom
 1587: |                       #  or
 1588: "                                     # "
 1589: [^\\\x80-\xff\n\015"] *                            #   normal
 1590: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 1591: "                                     #        "
 1592: # Quoted string
 1593: )
 1594: [\040\t]*                    # Nab whitespace.
 1595: (?:
 1596: \(                              #  (
 1597: [^\\\x80-\xff\n\015()] *                             #     normal*
 1598: (?:                                 #       (
 1599: (?:  \\ [^\x80-\xff]  |
 1600: \(                            #  (
 1601: [^\\\x80-\xff\n\015()] *                            #     normal*
 1602: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1603: \)                           #                       )
 1604: )    #         special
 1605: [^\\\x80-\xff\n\015()] *                         #         normal*
 1606: )*                                  #            )*
 1607: \)                             #                )
 1608: [\040\t]* )*    # If comment found, allow more spaces.
 1609: (?:
 1610: \.
 1611: [\040\t]*                    # Nab whitespace.
 1612: (?:
 1613: \(                              #  (
 1614: [^\\\x80-\xff\n\015()] *                             #     normal*
 1615: (?:                                 #       (
 1616: (?:  \\ [^\x80-\xff]  |
 1617: \(                            #  (
 1618: [^\\\x80-\xff\n\015()] *                            #     normal*
 1619: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1620: \)                           #                       )
 1621: )    #         special
 1622: [^\\\x80-\xff\n\015()] *                         #         normal*
 1623: )*                                  #            )*
 1624: \)                             #                )
 1625: [\040\t]* )*    # If comment found, allow more spaces.
 1626: (?:
 1627: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1628: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1629: # Atom
 1630: |                       #  or
 1631: "                                     # "
 1632: [^\\\x80-\xff\n\015"] *                            #   normal
 1633: (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 1634: "                                     #        "
 1635: # Quoted string
 1636: )
 1637: [\040\t]*                    # Nab whitespace.
 1638: (?:
 1639: \(                              #  (
 1640: [^\\\x80-\xff\n\015()] *                             #     normal*
 1641: (?:                                 #       (
 1642: (?:  \\ [^\x80-\xff]  |
 1643: \(                            #  (
 1644: [^\\\x80-\xff\n\015()] *                            #     normal*
 1645: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1646: \)                           #                       )
 1647: )    #         special
 1648: [^\\\x80-\xff\n\015()] *                         #         normal*
 1649: )*                                  #            )*
 1650: \)                             #                )
 1651: [\040\t]* )*    # If comment found, allow more spaces.
 1652: # additional words
 1653: )*
 1654: @
 1655: [\040\t]*                    # Nab whitespace.
 1656: (?:
 1657: \(                              #  (
 1658: [^\\\x80-\xff\n\015()] *                             #     normal*
 1659: (?:                                 #       (
 1660: (?:  \\ [^\x80-\xff]  |
 1661: \(                            #  (
 1662: [^\\\x80-\xff\n\015()] *                            #     normal*
 1663: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1664: \)                           #                       )
 1665: )    #         special
 1666: [^\\\x80-\xff\n\015()] *                         #         normal*
 1667: )*                                  #            )*
 1668: \)                             #                )
 1669: [\040\t]* )*    # If comment found, allow more spaces.
 1670: (?:
 1671: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1672: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1673: |
 1674: \[                            # [
 1675: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 1676: \]                           #           ]
 1677: )
 1678: [\040\t]*                    # Nab whitespace.
 1679: (?:
 1680: \(                              #  (
 1681: [^\\\x80-\xff\n\015()] *                             #     normal*
 1682: (?:                                 #       (
 1683: (?:  \\ [^\x80-\xff]  |
 1684: \(                            #  (
 1685: [^\\\x80-\xff\n\015()] *                            #     normal*
 1686: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1687: \)                           #                       )
 1688: )    #         special
 1689: [^\\\x80-\xff\n\015()] *                         #         normal*
 1690: )*                                  #            )*
 1691: \)                             #                )
 1692: [\040\t]* )*    # If comment found, allow more spaces.
 1693: # optional trailing comments
 1694: (?:
 1695: \.
 1696: [\040\t]*                    # Nab whitespace.
 1697: (?:
 1698: \(                              #  (
 1699: [^\\\x80-\xff\n\015()] *                             #     normal*
 1700: (?:                                 #       (
 1701: (?:  \\ [^\x80-\xff]  |
 1702: \(                            #  (
 1703: [^\\\x80-\xff\n\015()] *                            #     normal*
 1704: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1705: \)                           #                       )
 1706: )    #         special
 1707: [^\\\x80-\xff\n\015()] *                         #         normal*
 1708: )*                                  #            )*
 1709: \)                             #                )
 1710: [\040\t]* )*    # If comment found, allow more spaces.
 1711: (?:
 1712: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 1713: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 1714: |
 1715: \[                            # [
 1716: (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 1717: \]                           #           ]
 1718: )
 1719: [\040\t]*                    # Nab whitespace.
 1720: (?:
 1721: \(                              #  (
 1722: [^\\\x80-\xff\n\015()] *                             #     normal*
 1723: (?:                                 #       (
 1724: (?:  \\ [^\x80-\xff]  |
 1725: \(                            #  (
 1726: [^\\\x80-\xff\n\015()] *                            #     normal*
 1727: (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 1728: \)                           #                       )
 1729: )    #         special
 1730: [^\\\x80-\xff\n\015()] *                         #         normal*
 1731: )*                                  #            )*
 1732: \)                             #                )
 1733: [\040\t]* )*    # If comment found, allow more spaces.
 1734: # optional trailing comments
 1735: )*
 1736: #       address spec
 1737: >                    #                 >
 1738: # name and address
 1739: )
 1740: /x
 1741:     Alan Other <user\@dom.ain>
 1742:     <user\@dom.ain>
 1743:     user\@dom.ain
 1744:     \"A. Other\" <user.1234\@dom.ain> (a comment)
 1745:     A. Other <user.1234\@dom.ain> (a comment)
 1746:     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
 1747:     A missing angle <user\@some.where
 1748:     *** Failers
 1749:     The quick brown fox
 1750: 
 1751: /abc\0def\00pqr\000xyz\0000AB/
 1752:     abc\0def\00pqr\000xyz\0000AB
 1753:     abc456 abc\0def\00pqr\000xyz\0000ABCDE
 1754: 
 1755: /abc\x0def\x00pqr\x000xyz\x0000AB/
 1756:     abc\x0def\x00pqr\x000xyz\x0000AB
 1757:     abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
 1758: 
 1759: /^[\000-\037]/
 1760:     \0A
 1761:     \01B
 1762:     \037C
 1763: 
 1764: /\0*/
 1765:     \0\0\0\0
 1766: 
 1767: /A\x0{2,3}Z/
 1768:     The A\x0\x0Z
 1769:     An A\0\x0\0Z
 1770:     *** Failers
 1771:     A\0Z
 1772:     A\0\x0\0\x0Z
 1773: 
 1774: /^\s/
 1775:     \040abc
 1776:     \x0cabc
 1777:     \nabc
 1778:     \rabc
 1779:     \tabc
 1780:     *** Failers
 1781:     abc
 1782: 
 1783: /^a	b
 1784:       c/x
 1785:     abc
 1786: 
 1787: /ab{1,3}bc/
 1788:     abbbbc
 1789:     abbbc
 1790:     abbc
 1791:     *** Failers
 1792:     abc
 1793:     abbbbbc
 1794: 
 1795: /([^.]*)\.([^:]*):[T ]+(.*)/
 1796:     track1.title:TBlah blah blah
 1797: 
 1798: /([^.]*)\.([^:]*):[T ]+(.*)/i
 1799:     track1.title:TBlah blah blah
 1800: 
 1801: /([^.]*)\.([^:]*):[t ]+(.*)/i
 1802:     track1.title:TBlah blah blah
 1803: 
 1804: /^[W-c]+$/
 1805:     WXY_^abc
 1806:     *** Failers
 1807:     wxy
 1808: 
 1809: /^[W-c]+$/i
 1810:     WXY_^abc
 1811:     wxy_^ABC
 1812: 
 1813: /^[\x3f-\x5F]+$/i
 1814:     WXY_^abc
 1815:     wxy_^ABC
 1816: 
 1817: /^abc$/m
 1818:     abc
 1819:     qqq\nabc
 1820:     abc\nzzz
 1821:     qqq\nabc\nzzz
 1822: 
 1823: /^abc$/
 1824:     abc
 1825:     *** Failers
 1826:     qqq\nabc
 1827:     abc\nzzz
 1828:     qqq\nabc\nzzz
 1829: 
 1830: /\Aabc\Z/m
 1831:     abc
 1832:     abc\n 
 1833:     *** Failers
 1834:     qqq\nabc
 1835:     abc\nzzz
 1836:     qqq\nabc\nzzz
 1837:     
 1838: /\A(.)*\Z/s
 1839:     abc\ndef
 1840: 
 1841: /\A(.)*\Z/m
 1842:     *** Failers
 1843:     abc\ndef
 1844: 
 1845: /(?:b)|(?::+)/
 1846:     b::c
 1847:     c::b
 1848: 
 1849: /[-az]+/
 1850:     az-
 1851:     *** Failers
 1852:     b
 1853: 
 1854: /[az-]+/
 1855:     za-
 1856:     *** Failers
 1857:     b
 1858: 
 1859: /[a\-z]+/
 1860:     a-z
 1861:     *** Failers
 1862:     b
 1863: 
 1864: /[a-z]+/
 1865:     abcdxyz
 1866: 
 1867: /[\d-]+/
 1868:     12-34
 1869:     *** Failers
 1870:     aaa
 1871: 
 1872: /[\d-z]+/
 1873:     12-34z
 1874:     *** Failers
 1875:     aaa
 1876: 
 1877: /\x5c/
 1878:     \\
 1879: 
 1880: /\x20Z/
 1881:     the Zoo
 1882:     *** Failers
 1883:     Zulu
 1884: 
 1885: /ab{3cd/
 1886:     ab{3cd
 1887: 
 1888: /ab{3,cd/
 1889:     ab{3,cd
 1890: 
 1891: /ab{3,4a}cd/
 1892:     ab{3,4a}cd
 1893: 
 1894: /{4,5a}bc/
 1895:     {4,5a}bc
 1896: 
 1897: /^a.b/<lf>
 1898:     a\rb
 1899:     *** Failers
 1900:     a\nb
 1901: 
 1902: /abc$/
 1903:     abc
 1904:     abc\n
 1905:     *** Failers
 1906:     abc\ndef
 1907: 
 1908: /(abc)\123/
 1909:     abc\x53
 1910: 
 1911: /(abc)\223/
 1912:     abc\x93
 1913: 
 1914: /(abc)\323/
 1915:     abc\xd3
 1916: 
 1917: /(abc)\100/
 1918:     abc\x40
 1919:     abc\100
 1920: 
 1921: /(abc)\1000/
 1922:     abc\x400
 1923:     abc\x40\x30
 1924:     abc\1000
 1925:     abc\100\x30
 1926:     abc\100\060
 1927:     abc\100\60
 1928: 
 1929: /^A\8B\9C$/
 1930:     A8B9C
 1931:     *** Failers
 1932:     A\08B\09C  
 1933:     
 1934: /^[A\8B\9C]+$/
 1935:     A8B9C
 1936:     *** Failers 
 1937:     A8B9C\x00
 1938:     
 1939: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
 1940:     abcdefghijk\12S
 1941: 
 1942: /ab\idef/
 1943:     abidef
 1944: 
 1945: /a{0}bc/
 1946:     bc
 1947: 
 1948: /(a|(bc)){0,0}?xyz/
 1949:     xyz
 1950: 
 1951: /abc[\10]de/
 1952:     abc\010de
 1953: 
 1954: /abc[\1]de/
 1955:     abc\1de
 1956: 
 1957: /(abc)[\1]de/
 1958:     abc\1de
 1959: 
 1960: /(?s)a.b/
 1961:     a\nb
 1962: 
 1963: /^([^a])([^\b])([^c]*)([^d]{3,4})/
 1964:     baNOTccccd
 1965:     baNOTcccd
 1966:     baNOTccd
 1967:     bacccd
 1968:     *** Failers
 1969:     anything
 1970:     b\bc   
 1971:     baccd
 1972: 
 1973: /[^a]/
 1974:     Abc
 1975:   
 1976: /[^a]/i
 1977:     Abc 
 1978: 
 1979: /[^a]+/
 1980:     AAAaAbc
 1981:   
 1982: /[^a]+/i
 1983:     AAAaAbc 
 1984: 
 1985: /[^a]+/
 1986:     bbb\nccc
 1987:    
 1988: /[^k]$/
 1989:     abc
 1990:     *** Failers
 1991:     abk   
 1992:    
 1993: /[^k]{2,3}$/
 1994:     abc
 1995:     kbc
 1996:     kabc 
 1997:     *** Failers
 1998:     abk
 1999:     akb
 2000:     akk 
 2001: 
 2002: /^\d{8,}\@.+[^k]$/
 2003:     12345678\@a.b.c.d
 2004:     123456789\@x.y.z
 2005:     *** Failers
 2006:     12345678\@x.y.uk
 2007:     1234567\@a.b.c.d       
 2008: 
 2009: /[^a]/
 2010:     aaaabcd
 2011:     aaAabcd 
 2012: 
 2013: /[^a]/i
 2014:     aaaabcd
 2015:     aaAabcd 
 2016: 
 2017: /[^az]/
 2018:     aaaabcd
 2019:     aaAabcd 
 2020: 
 2021: /[^az]/i
 2022:     aaaabcd
 2023:     aaAabcd 
 2024: 
 2025: /\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/
 2026:  \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
 2027: 
 2028: /P[^*]TAIRE[^*]{1,6}?LL/
 2029:     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
 2030: 
 2031: /P[^*]TAIRE[^*]{1,}?LL/
 2032:     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
 2033: 
 2034: /(\.\d\d[1-9]?)\d+/
 2035:     1.230003938
 2036:     1.875000282   
 2037:     1.235  
 2038:                   
 2039: /(\.\d\d((?=0)|\d(?=\d)))/
 2040:     1.230003938      
 2041:     1.875000282
 2042:     *** Failers 
 2043:     1.235 
 2044:     
 2045: /a(?)b/
 2046:     ab 
 2047:  
 2048: /\b(foo)\s+(\w+)/i
 2049:     Food is on the foo table
 2050:     
 2051: /foo(.*)bar/
 2052:     The food is under the bar in the barn.
 2053:     
 2054: /foo(.*?)bar/  
 2055:     The food is under the bar in the barn.
 2056: 
 2057: /(.*)(\d*)/O
 2058:     I have 2 numbers: 53147
 2059:     
 2060: /(.*)(\d+)/
 2061:     I have 2 numbers: 53147
 2062:  
 2063: /(.*?)(\d*)/O
 2064:     I have 2 numbers: 53147
 2065: 
 2066: /(.*?)(\d+)/
 2067:     I have 2 numbers: 53147
 2068: 
 2069: /(.*)(\d+)$/
 2070:     I have 2 numbers: 53147
 2071: 
 2072: /(.*?)(\d+)$/
 2073:     I have 2 numbers: 53147
 2074: 
 2075: /(.*)\b(\d+)$/
 2076:     I have 2 numbers: 53147
 2077: 
 2078: /(.*\D)(\d+)$/
 2079:     I have 2 numbers: 53147
 2080: 
 2081: /^\D*(?!123)/
 2082:     ABC123
 2083:      
 2084: /^(\D*)(?=\d)(?!123)/
 2085:     ABC445
 2086:     *** Failers
 2087:     ABC123
 2088:     
 2089: /^[W-]46]/
 2090:     W46]789 
 2091:     -46]789
 2092:     *** Failers
 2093:     Wall
 2094:     Zebra
 2095:     42
 2096:     [abcd] 
 2097:     ]abcd[
 2098:        
 2099: /^[W-\]46]/
 2100:     W46]789 
 2101:     Wall
 2102:     Zebra
 2103:     Xylophone  
 2104:     42
 2105:     [abcd] 
 2106:     ]abcd[
 2107:     \\backslash 
 2108:     *** Failers
 2109:     -46]789
 2110:     well
 2111:     
 2112: /\d\d\/\d\d\/\d\d\d\d/
 2113:     01/01/2000
 2114: 
 2115: /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
 2116:   word cat dog elephant mussel cow horse canary baboon snake shark otherword
 2117:   word cat dog elephant mussel cow horse canary baboon snake shark
 2118: 
 2119: /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
 2120:   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
 2121: 
 2122: /^(a){0,0}/
 2123:     bcd
 2124:     abc
 2125:     aab     
 2126: 
 2127: /^(a){0,1}/
 2128:     bcd
 2129:     abc
 2130:     aab  
 2131: 
 2132: /^(a){0,2}/
 2133:     bcd
 2134:     abc
 2135:     aab  
 2136: 
 2137: /^(a){0,3}/
 2138:     bcd
 2139:     abc
 2140:     aab
 2141:     aaa   
 2142: 
 2143: /^(a){0,}/
 2144:     bcd
 2145:     abc
 2146:     aab
 2147:     aaa
 2148:     aaaaaaaa    
 2149: 
 2150: /^(a){1,1}/
 2151:     bcd
 2152:     abc
 2153:     aab  
 2154: 
 2155: /^(a){1,2}/
 2156:     bcd
 2157:     abc
 2158:     aab  
 2159: 
 2160: /^(a){1,3}/
 2161:     bcd
 2162:     abc
 2163:     aab
 2164:     aaa   
 2165: 
 2166: /^(a){1,}/
 2167:     bcd
 2168:     abc
 2169:     aab
 2170:     aaa
 2171:     aaaaaaaa    
 2172: 
 2173: /.*\.gif/
 2174:     borfle\nbib.gif\nno
 2175: 
 2176: /.{0,}\.gif/
 2177:     borfle\nbib.gif\nno
 2178: 
 2179: /.*\.gif/m
 2180:     borfle\nbib.gif\nno
 2181: 
 2182: /.*\.gif/s
 2183:     borfle\nbib.gif\nno
 2184: 
 2185: /.*\.gif/ms
 2186:     borfle\nbib.gif\nno
 2187:     
 2188: /.*$/
 2189:     borfle\nbib.gif\nno
 2190: 
 2191: /.*$/m
 2192:     borfle\nbib.gif\nno
 2193: 
 2194: /.*$/s
 2195:     borfle\nbib.gif\nno
 2196: 
 2197: /.*$/ms
 2198:     borfle\nbib.gif\nno
 2199:     
 2200: /.*$/
 2201:     borfle\nbib.gif\nno\n
 2202: 
 2203: /.*$/m
 2204:     borfle\nbib.gif\nno\n
 2205: 
 2206: /.*$/s
 2207:     borfle\nbib.gif\nno\n
 2208: 
 2209: /.*$/ms
 2210:     borfle\nbib.gif\nno\n
 2211:     
 2212: /(.*X|^B)/
 2213:     abcde\n1234Xyz
 2214:     BarFoo 
 2215:     *** Failers
 2216:     abcde\nBar  
 2217: 
 2218: /(.*X|^B)/m
 2219:     abcde\n1234Xyz
 2220:     BarFoo 
 2221:     abcde\nBar  
 2222: 
 2223: /(.*X|^B)/s
 2224:     abcde\n1234Xyz
 2225:     BarFoo 
 2226:     *** Failers
 2227:     abcde\nBar  
 2228: 
 2229: /(.*X|^B)/ms
 2230:     abcde\n1234Xyz
 2231:     BarFoo 
 2232:     abcde\nBar  
 2233: 
 2234: /(?s)(.*X|^B)/
 2235:     abcde\n1234Xyz
 2236:     BarFoo 
 2237:     *** Failers 
 2238:     abcde\nBar  
 2239: 
 2240: /(?s:.*X|^B)/
 2241:     abcde\n1234Xyz
 2242:     BarFoo 
 2243:     *** Failers 
 2244:     abcde\nBar  
 2245: 
 2246: /^.*B/
 2247:     **** Failers
 2248:     abc\nB
 2249:      
 2250: /(?s)^.*B/
 2251:     abc\nB
 2252: 
 2253: /(?m)^.*B/
 2254:     abc\nB
 2255:      
 2256: /(?ms)^.*B/
 2257:     abc\nB
 2258: 
 2259: /(?ms)^B/
 2260:     abc\nB
 2261: 
 2262: /(?s)B$/
 2263:     B\n
 2264: 
 2265: /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
 2266:     123456654321
 2267:   
 2268: /^\d\d\d\d\d\d\d\d\d\d\d\d/
 2269:     123456654321 
 2270: 
 2271: /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
 2272:     123456654321
 2273:   
 2274: /^[abc]{12}/
 2275:     abcabcabcabc
 2276:     
 2277: /^[a-c]{12}/
 2278:     abcabcabcabc
 2279:     
 2280: /^(a|b|c){12}/
 2281:     abcabcabcabc 
 2282: 
 2283: /^[abcdefghijklmnopqrstuvwxy0123456789]/
 2284:     n
 2285:     *** Failers 
 2286:     z 
 2287: 
 2288: /abcde{0,0}/
 2289:     abcd
 2290:     *** Failers
 2291:     abce  
 2292: 
 2293: /ab[cd]{0,0}e/
 2294:     abe
 2295:     *** Failers
 2296:     abcde 
 2297:     
 2298: /ab(c){0,0}d/
 2299:     abd
 2300:     *** Failers
 2301:     abcd   
 2302: 
 2303: /a(b*)/
 2304:     a
 2305:     ab
 2306:     abbbb
 2307:     *** Failers
 2308:     bbbbb    
 2309:     
 2310: /ab\d{0}e/
 2311:     abe
 2312:     *** Failers
 2313:     ab1e   
 2314:     
 2315: /"([^\\"]+|\\.)*"/
 2316:     the \"quick\" brown fox
 2317:     \"the \\\"quick\\\" brown fox\" 
 2318: 
 2319: /.*?/g+
 2320:     abc
 2321:   
 2322: /\b/g+
 2323:     abc 
 2324: 
 2325: /\b/+g
 2326:     abc 
 2327: 
 2328: //g
 2329:     abc
 2330: 
 2331: /<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
 2332:   <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>
 2333: 
 2334: /a[^a]b/
 2335:     acb
 2336:     a\nb
 2337:     
 2338: /a.b/
 2339:     acb
 2340:     *** Failers 
 2341:     a\nb   
 2342:     
 2343: /a[^a]b/s
 2344:     acb
 2345:     a\nb  
 2346:     
 2347: /a.b/s
 2348:     acb
 2349:     a\nb  
 2350: 
 2351: /^(b+?|a){1,2}?c/
 2352:     bac
 2353:     bbac
 2354:     bbbac
 2355:     bbbbac
 2356:     bbbbbac 
 2357: 
 2358: /^(b+|a){1,2}?c/
 2359:     bac
 2360:     bbac
 2361:     bbbac
 2362:     bbbbac
 2363:     bbbbbac 
 2364:     
 2365: /(?!\A)x/m
 2366:     x\nb\n
 2367:     a\bx\n  
 2368:     
 2369: /\x0{ab}/
 2370:     \0{ab} 
 2371: 
 2372: /(A|B)*?CD/
 2373:     CD 
 2374:     
 2375: /(A|B)*CD/
 2376:     CD 
 2377: 
 2378: /(?<!bar)foo/
 2379:     foo
 2380:     catfood
 2381:     arfootle
 2382:     rfoosh
 2383:     *** Failers
 2384:     barfoo
 2385:     towbarfoo
 2386: 
 2387: /\w{3}(?<!bar)foo/
 2388:     catfood
 2389:     *** Failers
 2390:     foo
 2391:     barfoo
 2392:     towbarfoo
 2393: 
 2394: /(?<=(foo)a)bar/
 2395:     fooabar
 2396:     *** Failers
 2397:     bar
 2398:     foobbar
 2399:       
 2400: /\Aabc\z/m
 2401:     abc
 2402:     *** Failers
 2403:     abc\n   
 2404:     qqq\nabc
 2405:     abc\nzzz
 2406:     qqq\nabc\nzzz
 2407: 
 2408: "(?>.*/)foo"
 2409:     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
 2410: 
 2411: "(?>.*/)foo"
 2412:     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
 2413: 
 2414: /(?>(\.\d\d[1-9]?))\d+/
 2415:     1.230003938
 2416:     1.875000282
 2417:     *** Failers 
 2418:     1.235 
 2419: 
 2420: /^((?>\w+)|(?>\s+))*$/
 2421:     now is the time for all good men to come to the aid of the party
 2422:     *** Failers
 2423:     this is not a line with only words and spaces!
 2424:     
 2425: /(\d+)(\w)/
 2426:     12345a
 2427:     12345+ 
 2428: 
 2429: /((?>\d+))(\w)/
 2430:     12345a
 2431:     *** Failers
 2432:     12345+ 
 2433: 
 2434: /(?>a+)b/
 2435:     aaab
 2436: 
 2437: /((?>a+)b)/
 2438:     aaab
 2439: 
 2440: /(?>(a+))b/
 2441:     aaab
 2442: 
 2443: /(?>b)+/
 2444:     aaabbbccc
 2445: 
 2446: /(?>a+|b+|c+)*c/
 2447:     aaabbbbccccd
 2448:     
 2449: /(a+|b+|c+)*c/
 2450:     aaabbbbccccd
 2451: 
 2452: /((?>[^()]+)|\([^()]*\))+/
 2453:     ((abc(ade)ufh()()x
 2454:     
 2455: /\(((?>[^()]+)|\([^()]+\))+\)/ 
 2456:     (abc)
 2457:     (abc(def)xyz)
 2458:     *** Failers
 2459:     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
 2460: 
 2461: /a(?-i)b/i
 2462:     ab
 2463:     Ab
 2464:     *** Failers 
 2465:     aB
 2466:     AB
 2467:         
 2468: /(a (?x)b c)d e/
 2469:     a bcd e
 2470:     *** Failers
 2471:     a b cd e
 2472:     abcd e   
 2473:     a bcde 
 2474:  
 2475: /(a b(?x)c d (?-x)e f)/
 2476:     a bcde f
 2477:     *** Failers
 2478:     abcdef  
 2479: 
 2480: /(a(?i)b)c/
 2481:     abc
 2482:     aBc
 2483:     *** Failers
 2484:     abC
 2485:     aBC  
 2486:     Abc
 2487:     ABc
 2488:     ABC
 2489:     AbC
 2490:     
 2491: /a(?i:b)c/
 2492:     abc
 2493:     aBc
 2494:     *** Failers 
 2495:     ABC
 2496:     abC
 2497:     aBC
 2498:     
 2499: /a(?i:b)*c/
 2500:     aBc
 2501:     aBBc
 2502:     *** Failers 
 2503:     aBC
 2504:     aBBC
 2505:     
 2506: /a(?=b(?i)c)\w\wd/
 2507:     abcd
 2508:     abCd
 2509:     *** Failers
 2510:     aBCd
 2511:     abcD     
 2512:     
 2513: /(?s-i:more.*than).*million/i
 2514:     more than million
 2515:     more than MILLION
 2516:     more \n than Million 
 2517:     *** Failers
 2518:     MORE THAN MILLION    
 2519:     more \n than \n million 
 2520: 
 2521: /(?:(?s-i)more.*than).*million/i
 2522:     more than million
 2523:     more than MILLION
 2524:     more \n than Million 
 2525:     *** Failers
 2526:     MORE THAN MILLION    
 2527:     more \n than \n million 
 2528:     
 2529: /(?>a(?i)b+)+c/ 
 2530:     abc
 2531:     aBbc
 2532:     aBBc 
 2533:     *** Failers
 2534:     Abc
 2535:     abAb    
 2536:     abbC 
 2537:     
 2538: /(?=a(?i)b)\w\wc/
 2539:     abc
 2540:     aBc
 2541:     *** Failers
 2542:     Ab 
 2543:     abC
 2544:     aBC     
 2545:     
 2546: /(?<=a(?i)b)(\w\w)c/
 2547:     abxxc
 2548:     aBxxc
 2549:     *** Failers
 2550:     Abxxc
 2551:     ABxxc
 2552:     abxxC      
 2553: 
 2554: /^(?(?=abc)\w{3}:|\d\d)$/
 2555:     abc:
 2556:     12
 2557:     *** Failers
 2558:     123
 2559:     xyz    
 2560: 
 2561: /^(?(?!abc)\d\d|\w{3}:)$/
 2562:     abc:
 2563:     12
 2564:     *** Failers
 2565:     123
 2566:     xyz    
 2567:     
 2568: /(?(?<=foo)bar|cat)/
 2569:     foobar
 2570:     cat
 2571:     fcat
 2572:     focat   
 2573:     *** Failers
 2574:     foocat  
 2575: 
 2576: /(?(?<!foo)cat|bar)/
 2577:     foobar
 2578:     cat
 2579:     fcat
 2580:     focat   
 2581:     *** Failers
 2582:     foocat  
 2583: 
 2584: /(?>a*)*/
 2585:     a
 2586:     aa
 2587:     aaaa
 2588:     
 2589: /(abc|)+/
 2590:     abc
 2591:     abcabc
 2592:     abcabcabc
 2593:     xyz      
 2594: 
 2595: /([a]*)*/
 2596:     a
 2597:     aaaaa 
 2598:  
 2599: /([ab]*)*/
 2600:     a
 2601:     b
 2602:     ababab
 2603:     aaaabcde
 2604:     bbbb    
 2605:  
 2606: /([^a]*)*/
 2607:     b
 2608:     bbbb
 2609:     aaa   
 2610:  
 2611: /([^ab]*)*/
 2612:     cccc
 2613:     abab  
 2614:  
 2615: /([a]*?)*/
 2616:     a
 2617:     aaaa 
 2618:  
 2619: /([ab]*?)*/
 2620:     a
 2621:     b
 2622:     abab
 2623:     baba   
 2624:  
 2625: /([^a]*?)*/
 2626:     b
 2627:     bbbb
 2628:     aaa   
 2629:  
 2630: /([^ab]*?)*/
 2631:     c
 2632:     cccc
 2633:     baba   
 2634:  
 2635: /(?>a*)*/
 2636:     a
 2637:     aaabcde 
 2638:  
 2639: /((?>a*))*/
 2640:     aaaaa
 2641:     aabbaa 
 2642:  
 2643: /((?>a*?))*/
 2644:     aaaaa
 2645:     aabbaa 
 2646: 
 2647: /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
 2648:     12-sep-98
 2649:     12-09-98
 2650:     *** Failers
 2651:     sep-12-98
 2652:         
 2653: /(?i:saturday|sunday)/
 2654:     saturday
 2655:     sunday
 2656:     Saturday
 2657:     Sunday
 2658:     SATURDAY
 2659:     SUNDAY
 2660:     SunDay
 2661:     
 2662: /(a(?i)bc|BB)x/
 2663:     abcx
 2664:     aBCx
 2665:     bbx
 2666:     BBx
 2667:     *** Failers
 2668:     abcX
 2669:     aBCX
 2670:     bbX
 2671:     BBX               
 2672: 
 2673: /^([ab](?i)[cd]|[ef])/
 2674:     ac
 2675:     aC
 2676:     bD
 2677:     elephant
 2678:     Europe 
 2679:     frog
 2680:     France
 2681:     *** Failers
 2682:     Africa     
 2683: 
 2684: /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
 2685:     ab
 2686:     aBd
 2687:     xy
 2688:     xY
 2689:     zebra
 2690:     Zambesi
 2691:     *** Failers
 2692:     aCD  
 2693:     XY  
 2694: 
 2695: /(?<=foo\n)^bar/m
 2696:     foo\nbar
 2697:     *** Failers
 2698:     bar
 2699:     baz\nbar   
 2700: 
 2701: /(?<=(?<!foo)bar)baz/
 2702:     barbaz
 2703:     barbarbaz 
 2704:     koobarbaz 
 2705:     *** Failers
 2706:     baz
 2707:     foobarbaz 
 2708: 
 2709: /The following tests are taken from the Perl 5.005 test suite; some of them/
 2710: /are compatible with 5.004, but I'd rather not have to sort them out./
 2711: 
 2712: /abc/
 2713:     abc
 2714:     xabcy
 2715:     ababc
 2716:     *** Failers
 2717:     xbc
 2718:     axc
 2719:     abx
 2720: 
 2721: /ab*c/
 2722:     abc
 2723: 
 2724: /ab*bc/
 2725:     abc
 2726:     abbc
 2727:     abbbbc
 2728: 
 2729: /.{1}/
 2730:     abbbbc
 2731: 
 2732: /.{3,4}/
 2733:     abbbbc
 2734: 
 2735: /ab{0,}bc/
 2736:     abbbbc
 2737: 
 2738: /ab+bc/
 2739:     abbc
 2740:     *** Failers
 2741:     abc
 2742:     abq
 2743: 
 2744: /ab+bc/
 2745:     abbbbc
 2746: 
 2747: /ab{1,}bc/
 2748:     abbbbc
 2749: 
 2750: /ab{1,3}bc/
 2751:     abbbbc
 2752: 
 2753: /ab{3,4}bc/
 2754:     abbbbc
 2755: 
 2756: /ab{4,5}bc/
 2757:     *** Failers
 2758:     abq
 2759:     abbbbc
 2760: 
 2761: /ab?bc/
 2762:     abbc
 2763:     abc
 2764: 
 2765: /ab{0,1}bc/
 2766:     abc
 2767: 
 2768: /ab?bc/
 2769: 
 2770: /ab?c/
 2771:     abc
 2772: 
 2773: /ab{0,1}c/
 2774:     abc
 2775: 
 2776: /^abc$/
 2777:     abc
 2778:     *** Failers
 2779:     abbbbc
 2780:     abcc
 2781: 
 2782: /^abc/
 2783:     abcc
 2784: 
 2785: /^abc$/
 2786: 
 2787: /abc$/
 2788:     aabc
 2789:     *** Failers
 2790:     aabc
 2791:     aabcd
 2792: 
 2793: /^/
 2794:     abc
 2795: 
 2796: /$/
 2797:     abc
 2798: 
 2799: /a.c/
 2800:     abc
 2801:     axc
 2802: 
 2803: /a.*c/
 2804:     axyzc
 2805: 
 2806: /a[bc]d/
 2807:     abd
 2808:     *** Failers
 2809:     axyzd
 2810:     abc
 2811: 
 2812: /a[b-d]e/
 2813:     ace
 2814: 
 2815: /a[b-d]/
 2816:     aac
 2817: 
 2818: /a[-b]/
 2819:     a-
 2820: 
 2821: /a[b-]/
 2822:     a-
 2823: 
 2824: /a]/
 2825:     a]
 2826: 
 2827: /a[]]b/
 2828:     a]b
 2829: 
 2830: /a[^bc]d/
 2831:     aed
 2832:     *** Failers
 2833:     abd
 2834:     abd
 2835: 
 2836: /a[^-b]c/
 2837:     adc
 2838: 
 2839: /a[^]b]c/
 2840:     adc
 2841:     *** Failers
 2842:     a-c
 2843:     a]c
 2844: 
 2845: /\ba\b/
 2846:     a-
 2847:     -a
 2848:     -a-
 2849: 
 2850: /\by\b/
 2851:     *** Failers
 2852:     xy
 2853:     yz
 2854:     xyz
 2855: 
 2856: /\Ba\B/
 2857:     *** Failers
 2858:     a-
 2859:     -a
 2860:     -a-
 2861: 
 2862: /\By\b/
 2863:     xy
 2864: 
 2865: /\by\B/
 2866:     yz
 2867: 
 2868: /\By\B/
 2869:     xyz
 2870: 
 2871: /\w/
 2872:     a
 2873: 
 2874: /\W/
 2875:     -
 2876:     *** Failers
 2877:     -
 2878:     a
 2879: 
 2880: /a\sb/
 2881:     a b
 2882: 
 2883: /a\Sb/
 2884:     a-b
 2885:     *** Failers
 2886:     a-b
 2887:     a b
 2888: 
 2889: /\d/
 2890:     1
 2891: 
 2892: /\D/
 2893:     -
 2894:     *** Failers
 2895:     -
 2896:     1
 2897: 
 2898: /[\w]/
 2899:     a
 2900: 
 2901: /[\W]/
 2902:     -
 2903:     *** Failers
 2904:     -
 2905:     a
 2906: 
 2907: /a[\s]b/
 2908:     a b
 2909: 
 2910: /a[\S]b/
 2911:     a-b
 2912:     *** Failers
 2913:     a-b
 2914:     a b
 2915: 
 2916: /[\d]/
 2917:     1
 2918: 
 2919: /[\D]/
 2920:     -
 2921:     *** Failers
 2922:     -
 2923:     1
 2924: 
 2925: /ab|cd/
 2926:     abc
 2927:     abcd
 2928: 
 2929: /()ef/
 2930:     def
 2931: 
 2932: /$b/
 2933: 
 2934: /a\(b/
 2935:     a(b
 2936: 
 2937: /a\(*b/
 2938:     ab
 2939:     a((b
 2940: 
 2941: /a\\b/
 2942:     a\b
 2943: 
 2944: /((a))/
 2945:     abc
 2946: 
 2947: /(a)b(c)/
 2948:     abc
 2949: 
 2950: /a+b+c/
 2951:     aabbabc
 2952: 
 2953: /a{1,}b{1,}c/
 2954:     aabbabc
 2955: 
 2956: /a.+?c/
 2957:     abcabc
 2958: 
 2959: /(a+|b)*/
 2960:     ab
 2961: 
 2962: /(a+|b){0,}/
 2963:     ab
 2964: 
 2965: /(a+|b)+/
 2966:     ab
 2967: 
 2968: /(a+|b){1,}/
 2969:     ab
 2970: 
 2971: /(a+|b)?/
 2972:     ab
 2973: 
 2974: /(a+|b){0,1}/
 2975:     ab
 2976: 
 2977: /[^ab]*/
 2978:     cde
 2979: 
 2980: /abc/
 2981:     *** Failers
 2982:     b
 2983:     
 2984: 
 2985: /a*/
 2986:     
 2987: 
 2988: /([abc])*d/
 2989:     abbbcd
 2990: 
 2991: /([abc])*bcd/
 2992:     abcd
 2993: 
 2994: /a|b|c|d|e/
 2995:     e
 2996: 
 2997: /(a|b|c|d|e)f/
 2998:     ef
 2999: 
 3000: /abcd*efg/
 3001:     abcdefg
 3002: 
 3003: /ab*/
 3004:     xabyabbbz
 3005:     xayabbbz
 3006: 
 3007: /(ab|cd)e/
 3008:     abcde
 3009: 
 3010: /[abhgefdc]ij/
 3011:     hij
 3012: 
 3013: /^(ab|cd)e/
 3014: 
 3015: /(abc|)ef/
 3016:     abcdef
 3017: 
 3018: /(a|b)c*d/
 3019:     abcd
 3020: 
 3021: /(ab|ab*)bc/
 3022:     abc
 3023: 
 3024: /a([bc]*)c*/
 3025:     abc
 3026: 
 3027: /a([bc]*)(c*d)/
 3028:     abcd
 3029: 
 3030: /a([bc]+)(c*d)/
 3031:     abcd
 3032: 
 3033: /a([bc]*)(c+d)/
 3034:     abcd
 3035: 
 3036: /a[bcd]*dcdcde/
 3037:     adcdcde
 3038: 
 3039: /a[bcd]+dcdcde/
 3040:     *** Failers
 3041:     abcde
 3042:     adcdcde
 3043: 
 3044: /(ab|a)b*c/
 3045:     abc
 3046: 
 3047: /((a)(b)c)(d)/
 3048:     abcd
 3049: 
 3050: /[a-zA-Z_][a-zA-Z0-9_]*/
 3051:     alpha
 3052: 
 3053: /^a(bc+|b[eh])g|.h$/
 3054:     abh
 3055: 
 3056: /(bc+d$|ef*g.|h?i(j|k))/
 3057:     effgz
 3058:     ij
 3059:     reffgz
 3060:     *** Failers
 3061:     effg
 3062:     bcdd
 3063: 
 3064: /((((((((((a))))))))))/
 3065:     a
 3066: 
 3067: /(((((((((a)))))))))/
 3068:     a
 3069: 
 3070: /multiple words of text/
 3071:     *** Failers
 3072:     aa
 3073:     uh-uh
 3074: 
 3075: /multiple words/
 3076:     multiple words, yeah
 3077: 
 3078: /(.*)c(.*)/
 3079:     abcde
 3080: 
 3081: /\((.*), (.*)\)/
 3082:     (a, b)
 3083: 
 3084: /[k]/
 3085: 
 3086: /abcd/
 3087:     abcd
 3088: 
 3089: /a(bc)d/
 3090:     abcd
 3091: 
 3092: /a[-]?c/
 3093:     ac
 3094: 
 3095: /abc/i
 3096:     ABC
 3097:     XABCY
 3098:     ABABC
 3099:     *** Failers
 3100:     aaxabxbaxbbx
 3101:     XBC
 3102:     AXC
 3103:     ABX
 3104: 
 3105: /ab*c/i
 3106:     ABC
 3107: 
 3108: /ab*bc/i
 3109:     ABC
 3110:     ABBC
 3111: 
 3112: /ab*?bc/i
 3113:     ABBBBC
 3114: 
 3115: /ab{0,}?bc/i
 3116:     ABBBBC
 3117: 
 3118: /ab+?bc/i
 3119:     ABBC
 3120: 
 3121: /ab+bc/i
 3122:     *** Failers
 3123:     ABC
 3124:     ABQ
 3125: 
 3126: /ab{1,}bc/i
 3127: 
 3128: /ab+bc/i
 3129:     ABBBBC
 3130: 
 3131: /ab{1,}?bc/i
 3132:     ABBBBC
 3133: 
 3134: /ab{1,3}?bc/i
 3135:     ABBBBC
 3136: 
 3137: /ab{3,4}?bc/i
 3138:     ABBBBC
 3139: 
 3140: /ab{4,5}?bc/i
 3141:     *** Failers
 3142:     ABQ
 3143:     ABBBBC
 3144: 
 3145: /ab??bc/i
 3146:     ABBC
 3147:     ABC
 3148: 
 3149: /ab{0,1}?bc/i
 3150:     ABC
 3151: 
 3152: /ab??bc/i
 3153: 
 3154: /ab??c/i
 3155:     ABC
 3156: 
 3157: /ab{0,1}?c/i
 3158:     ABC
 3159: 
 3160: /^abc$/i
 3161:     ABC
 3162:     *** Failers
 3163:     ABBBBC
 3164:     ABCC
 3165: 
 3166: /^abc/i
 3167:     ABCC
 3168: 
 3169: /^abc$/i
 3170: 
 3171: /abc$/i
 3172:     AABC
 3173: 
 3174: /^/i
 3175:     ABC
 3176: 
 3177: /$/i
 3178:     ABC
 3179: 
 3180: /a.c/i
 3181:     ABC
 3182:     AXC
 3183: 
 3184: /a.*?c/i
 3185:     AXYZC
 3186: 
 3187: /a.*c/i
 3188:     *** Failers
 3189:     AABC
 3190:     AXYZD
 3191: 
 3192: /a[bc]d/i
 3193:     ABD
 3194: 
 3195: /a[b-d]e/i
 3196:     ACE
 3197:     *** Failers
 3198:     ABC
 3199:     ABD
 3200: 
 3201: /a[b-d]/i
 3202:     AAC
 3203: 
 3204: /a[-b]/i
 3205:     A-
 3206: 
 3207: /a[b-]/i
 3208:     A-
 3209: 
 3210: /a]/i
 3211:     A]
 3212: 
 3213: /a[]]b/i
 3214:     A]B
 3215: 
 3216: /a[^bc]d/i
 3217:     AED
 3218: 
 3219: /a[^-b]c/i
 3220:     ADC
 3221:     *** Failers
 3222:     ABD
 3223:     A-C
 3224: 
 3225: /a[^]b]c/i
 3226:     ADC
 3227: 
 3228: /ab|cd/i
 3229:     ABC
 3230:     ABCD
 3231: 
 3232: /()ef/i
 3233:     DEF
 3234: 
 3235: /$b/i
 3236:     *** Failers
 3237:     A]C
 3238:     B
 3239: 
 3240: /a\(b/i
 3241:     A(B
 3242: 
 3243: /a\(*b/i
 3244:     AB
 3245:     A((B
 3246: 
 3247: /a\\b/i
 3248:     A\B
 3249: 
 3250: /((a))/i
 3251:     ABC
 3252: 
 3253: /(a)b(c)/i
 3254:     ABC
 3255: 
 3256: /a+b+c/i
 3257:     AABBABC
 3258: 
 3259: /a{1,}b{1,}c/i
 3260:     AABBABC
 3261: 
 3262: /a.+?c/i
 3263:     ABCABC
 3264: 
 3265: /a.*?c/i
 3266:     ABCABC
 3267: 
 3268: /a.{0,5}?c/i
 3269:     ABCABC
 3270: 
 3271: /(a+|b)*/i
 3272:     AB
 3273: 
 3274: /(a+|b){0,}/i
 3275:     AB
 3276: 
 3277: /(a+|b)+/i
 3278:     AB
 3279: 
 3280: /(a+|b){1,}/i
 3281:     AB
 3282: 
 3283: /(a+|b)?/i
 3284:     AB
 3285: 
 3286: /(a+|b){0,1}/i
 3287:     AB
 3288: 
 3289: /(a+|b){0,1}?/i
 3290:     AB
 3291: 
 3292: /[^ab]*/i
 3293:     CDE
 3294: 
 3295: /abc/i
 3296: 
 3297: /a*/i
 3298:     
 3299: 
 3300: /([abc])*d/i
 3301:     ABBBCD
 3302: 
 3303: /([abc])*bcd/i
 3304:     ABCD
 3305: 
 3306: /a|b|c|d|e/i
 3307:     E
 3308: 
 3309: /(a|b|c|d|e)f/i
 3310:     EF
 3311: 
 3312: /abcd*efg/i
 3313:     ABCDEFG
 3314: 
 3315: /ab*/i
 3316:     XABYABBBZ
 3317:     XAYABBBZ
 3318: 
 3319: /(ab|cd)e/i
 3320:     ABCDE
 3321: 
 3322: /[abhgefdc]ij/i
 3323:     HIJ
 3324: 
 3325: /^(ab|cd)e/i
 3326:     ABCDE
 3327: 
 3328: /(abc|)ef/i
 3329:     ABCDEF
 3330: 
 3331: /(a|b)c*d/i
 3332:     ABCD
 3333: 
 3334: /(ab|ab*)bc/i
 3335:     ABC
 3336: 
 3337: /a([bc]*)c*/i
 3338:     ABC
 3339: 
 3340: /a([bc]*)(c*d)/i
 3341:     ABCD
 3342: 
 3343: /a([bc]+)(c*d)/i
 3344:     ABCD
 3345: 
 3346: /a([bc]*)(c+d)/i
 3347:     ABCD
 3348: 
 3349: /a[bcd]*dcdcde/i
 3350:     ADCDCDE
 3351: 
 3352: /a[bcd]+dcdcde/i
 3353: 
 3354: /(ab|a)b*c/i
 3355:     ABC
 3356: 
 3357: /((a)(b)c)(d)/i
 3358:     ABCD
 3359: 
 3360: /[a-zA-Z_][a-zA-Z0-9_]*/i
 3361:     ALPHA
 3362: 
 3363: /^a(bc+|b[eh])g|.h$/i
 3364:     ABH
 3365: 
 3366: /(bc+d$|ef*g.|h?i(j|k))/i
 3367:     EFFGZ
 3368:     IJ
 3369:     REFFGZ
 3370:     *** Failers
 3371:     ADCDCDE
 3372:     EFFG
 3373:     BCDD
 3374: 
 3375: /((((((((((a))))))))))/i
 3376:     A
 3377: 
 3378: /(((((((((a)))))))))/i
 3379:     A
 3380: 
 3381: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
 3382:     A
 3383: 
 3384: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
 3385:     C
 3386: 
 3387: /multiple words of text/i
 3388:     *** Failers
 3389:     AA
 3390:     UH-UH
 3391: 
 3392: /multiple words/i
 3393:     MULTIPLE WORDS, YEAH
 3394: 
 3395: /(.*)c(.*)/i
 3396:     ABCDE
 3397: 
 3398: /\((.*), (.*)\)/i
 3399:     (A, B)
 3400: 
 3401: /[k]/i
 3402: 
 3403: /abcd/i
 3404:     ABCD
 3405: 
 3406: /a(bc)d/i
 3407:     ABCD
 3408: 
 3409: /a[-]?c/i
 3410:     AC
 3411: 
 3412: /a(?!b)./
 3413:     abad
 3414: 
 3415: /a(?=d)./
 3416:     abad
 3417: 
 3418: /a(?=c|d)./
 3419:     abad
 3420: 
 3421: /a(?:b|c|d)(.)/
 3422:     ace
 3423: 
 3424: /a(?:b|c|d)*(.)/
 3425:     ace
 3426: 
 3427: /a(?:b|c|d)+?(.)/
 3428:     ace
 3429:     acdbcdbe
 3430: 
 3431: /a(?:b|c|d)+(.)/
 3432:     acdbcdbe
 3433: 
 3434: /a(?:b|c|d){2}(.)/
 3435:     acdbcdbe
 3436: 
 3437: /a(?:b|c|d){4,5}(.)/
 3438:     acdbcdbe
 3439: 
 3440: /a(?:b|c|d){4,5}?(.)/
 3441:     acdbcdbe
 3442: 
 3443: /((foo)|(bar))*/
 3444:     foobar
 3445: 
 3446: /a(?:b|c|d){6,7}(.)/
 3447:     acdbcdbe
 3448: 
 3449: /a(?:b|c|d){6,7}?(.)/
 3450:     acdbcdbe
 3451: 
 3452: /a(?:b|c|d){5,6}(.)/
 3453:     acdbcdbe
 3454: 
 3455: /a(?:b|c|d){5,6}?(.)/
 3456:     acdbcdbe
 3457: 
 3458: /a(?:b|c|d){5,7}(.)/
 3459:     acdbcdbe
 3460: 
 3461: /a(?:b|c|d){5,7}?(.)/
 3462:     acdbcdbe
 3463: 
 3464: /a(?:b|(c|e){1,2}?|d)+?(.)/
 3465:     ace
 3466: 
 3467: /^(.+)?B/
 3468:     AB
 3469: 
 3470: /^([^a-z])|(\^)$/
 3471:     .
 3472: 
 3473: /^[<>]&/
 3474:     <&OUT
 3475: 
 3476: /(?:(f)(o)(o)|(b)(a)(r))*/
 3477:     foobar
 3478: 
 3479: /(?<=a)b/
 3480:     ab
 3481:     *** Failers
 3482:     cb
 3483:     b
 3484: 
 3485: /(?<!c)b/
 3486:     ab
 3487:     b
 3488:     b
 3489: 
 3490: /(?:..)*a/
 3491:     aba
 3492: 
 3493: /(?:..)*?a/
 3494:     aba
 3495: 
 3496: /^(){3,5}/
 3497:     abc
 3498: 
 3499: /^(a+)*ax/
 3500:     aax
 3501: 
 3502: /^((a|b)+)*ax/
 3503:     aax
 3504: 
 3505: /^((a|bc)+)*ax/
 3506:     aax
 3507: 
 3508: /(a|x)*ab/
 3509:     cab
 3510: 
 3511: /(a)*ab/
 3512:     cab
 3513: 
 3514: /(?:(?i)a)b/
 3515:     ab
 3516: 
 3517: /((?i)a)b/
 3518:     ab
 3519: 
 3520: /(?:(?i)a)b/
 3521:     Ab
 3522: 
 3523: /((?i)a)b/
 3524:     Ab
 3525: 
 3526: /(?:(?i)a)b/
 3527:     *** Failers
 3528:     cb
 3529:     aB
 3530: 
 3531: /((?i)a)b/
 3532: 
 3533: /(?i:a)b/
 3534:     ab
 3535: 
 3536: /((?i:a))b/
 3537:     ab
 3538: 
 3539: /(?i:a)b/
 3540:     Ab
 3541: 
 3542: /((?i:a))b/
 3543:     Ab
 3544: 
 3545: /(?i:a)b/
 3546:     *** Failers
 3547:     aB
 3548:     aB
 3549: 
 3550: /((?i:a))b/
 3551: 
 3552: /(?:(?-i)a)b/i
 3553:     ab
 3554: 
 3555: /((?-i)a)b/i
 3556:     ab
 3557: 
 3558: /(?:(?-i)a)b/i
 3559:     aB
 3560: 
 3561: /((?-i)a)b/i
 3562:     aB
 3563: 
 3564: /(?:(?-i)a)b/i
 3565:     *** Failers
 3566:     aB
 3567:     Ab
 3568: 
 3569: /((?-i)a)b/i
 3570: 
 3571: /(?:(?-i)a)b/i
 3572:     aB
 3573: 
 3574: /((?-i)a)b/i
 3575:     aB
 3576: 
 3577: /(?:(?-i)a)b/i
 3578:     *** Failers
 3579:     Ab
 3580:     AB
 3581: 
 3582: /((?-i)a)b/i
 3583: 
 3584: /(?-i:a)b/i
 3585:     ab
 3586: 
 3587: /((?-i:a))b/i
 3588:     ab
 3589: 
 3590: /(?-i:a)b/i
 3591:     aB
 3592: 
 3593: /((?-i:a))b/i
 3594:     aB
 3595: 
 3596: /(?-i:a)b/i
 3597:     *** Failers
 3598:     AB
 3599:     Ab
 3600: 
 3601: /((?-i:a))b/i
 3602: 
 3603: /(?-i:a)b/i
 3604:     aB
 3605: 
 3606: /((?-i:a))b/i
 3607:     aB
 3608: 
 3609: /(?-i:a)b/i
 3610:     *** Failers
 3611:     Ab
 3612:     AB
 3613: 
 3614: /((?-i:a))b/i
 3615: 
 3616: /((?-i:a.))b/i
 3617:     *** Failers
 3618:     AB
 3619:     a\nB
 3620: 
 3621: /((?s-i:a.))b/i
 3622:     a\nB
 3623: 
 3624: /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
 3625:     cabbbb
 3626: 
 3627: /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
 3628:     caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 3629: 
 3630: /foo\w*\d{4}baz/
 3631:     foobar1234baz
 3632: 
 3633: /x(~~)*(?:(?:F)?)?/
 3634:     x~~
 3635: 
 3636: /^a(?#xxx){3}c/
 3637:     aaac
 3638: 
 3639: /^a (?#xxx) (?#yyy) {3}c/x
 3640:     aaac
 3641: 
 3642: /(?<![cd])b/
 3643:     *** Failers
 3644:     B\nB
 3645:     dbcb
 3646: 
 3647: /(?<![cd])[ab]/
 3648:     dbaacb
 3649: 
 3650: /(?<!(c|d))b/
 3651: 
 3652: /(?<!(c|d))[ab]/
 3653:     dbaacb
 3654: 
 3655: /(?<!cd)[ab]/
 3656:     cdaccb
 3657: 
 3658: /^(?:a?b?)*$/
 3659:     *** Failers
 3660:     dbcb
 3661:     a--
 3662: 
 3663: /((?s)^a(.))((?m)^b$)/
 3664:     a\nb\nc\n
 3665: 
 3666: /((?m)^b$)/
 3667:     a\nb\nc\n
 3668: 
 3669: /(?m)^b/
 3670:     a\nb\n
 3671: 
 3672: /(?m)^(b)/
 3673:     a\nb\n
 3674: 
 3675: /((?m)^b)/
 3676:     a\nb\n
 3677: 
 3678: /\n((?m)^b)/
 3679:     a\nb\n
 3680: 
 3681: /((?s).)c(?!.)/
 3682:     a\nb\nc\n
 3683:     a\nb\nc\n
 3684: 
 3685: /((?s)b.)c(?!.)/
 3686:     a\nb\nc\n
 3687:     a\nb\nc\n
 3688: 
 3689: /^b/
 3690: 
 3691: /()^b/
 3692:     *** Failers
 3693:     a\nb\nc\n
 3694:     a\nb\nc\n
 3695: 
 3696: /((?m)^b)/
 3697:     a\nb\nc\n
 3698: 
 3699: /(?(?!a)a|b)/
 3700: 
 3701: /(?(?!a)b|a)/
 3702:     a
 3703: 
 3704: /(?(?=a)b|a)/
 3705:     *** Failers
 3706:     a
 3707:     a
 3708: 
 3709: /(?(?=a)a|b)/
 3710:     a
 3711: 
 3712: /(\w+:)+/
 3713:     one:
 3714: 
 3715: /$(?<=^(a))/
 3716:     a
 3717: 
 3718: /([\w:]+::)?(\w+)$/
 3719:     abcd
 3720:     xy:z:::abcd
 3721: 
 3722: /^[^bcd]*(c+)/
 3723:     aexycd
 3724: 
 3725: /(a*)b+/
 3726:     caab
 3727: 
 3728: /([\w:]+::)?(\w+)$/
 3729:     abcd
 3730:     xy:z:::abcd
 3731:     *** Failers
 3732:     abcd:
 3733:     abcd:
 3734: 
 3735: /^[^bcd]*(c+)/
 3736:     aexycd
 3737: 
 3738: /(>a+)ab/
 3739: 
 3740: /(?>a+)b/
 3741:     aaab
 3742: 
 3743: /([[:]+)/
 3744:     a:[b]:
 3745: 
 3746: /([[=]+)/
 3747:     a=[b]=
 3748: 
 3749: /([[.]+)/
 3750:     a.[b].
 3751: 
 3752: /((?>a+)b)/
 3753:     aaab
 3754: 
 3755: /(?>(a+))b/
 3756:     aaab
 3757: 
 3758: /((?>[^()]+)|\([^()]*\))+/
 3759:     ((abc(ade)ufh()()x
 3760: 
 3761: /a\Z/
 3762:     *** Failers
 3763:     aaab
 3764:     a\nb\n
 3765: 
 3766: /b\Z/
 3767:     a\nb\n
 3768: 
 3769: /b\z/
 3770: 
 3771: /b\Z/
 3772:     a\nb
 3773: 
 3774: /b\z/
 3775:     a\nb
 3776:     *** Failers
 3777:     
 3778: /(?>.*)(?<=(abcd|wxyz))/
 3779:     alphabetabcd
 3780:     endingwxyz
 3781:     *** Failers
 3782:     a rather long string that doesn't end with one of them
 3783: 
 3784: /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
 3785:     word cat dog elephant mussel cow horse canary baboon snake shark otherword
 3786:     word cat dog elephant mussel cow horse canary baboon snake shark
 3787:   
 3788: /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
 3789:     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
 3790: 
 3791: /(?<=\d{3}(?!999))foo/
 3792:     999foo
 3793:     123999foo 
 3794:     *** Failers
 3795:     123abcfoo
 3796:     
 3797: /(?<=(?!...999)\d{3})foo/
 3798:     999foo
 3799:     123999foo 
 3800:     *** Failers
 3801:     123abcfoo
 3802: 
 3803: /(?<=\d{3}(?!999)...)foo/
 3804:     123abcfoo
 3805:     123456foo 
 3806:     *** Failers
 3807:     123999foo  
 3808:     
 3809: /(?<=\d{3}...)(?<!999)foo/
 3810:     123abcfoo   
 3811:     123456foo 
 3812:     *** Failers
 3813:     123999foo  
 3814: 
 3815: /((Z)+|A)*/
 3816:     ZABCDEFG
 3817: 
 3818: /(Z()|A)*/
 3819:     ZABCDEFG
 3820: 
 3821: /(Z(())|A)*/
 3822:     ZABCDEFG
 3823: 
 3824: /((?>Z)+|A)*/
 3825:     ZABCDEFG
 3826: 
 3827: /((?>)+|A)*/
 3828:     ZABCDEFG
 3829: 
 3830: /a*/g
 3831:     abbab
 3832: 
 3833: /^[\d-a]/
 3834:     abcde
 3835:     -things
 3836:     0digit
 3837:     *** Failers
 3838:     bcdef    
 3839:     
 3840: /[[:space:]]+/
 3841:     > \x09\x0a\x0c\x0d\x0b<
 3842:      
 3843: /[[:blank:]]+/
 3844:     > \x09\x0a\x0c\x0d\x0b<
 3845:      
 3846: /[\s]+/
 3847:     > \x09\x0a\x0c\x0d\x0b<
 3848:      
 3849: /\s+/
 3850:     > \x09\x0a\x0c\x0d\x0b<
 3851:      
 3852: /ab/x
 3853:     ab
 3854: 
 3855: /(?!\A)x/m
 3856:   a\nxb\n
 3857: 
 3858: /(?!^)x/m
 3859:   a\nxb\n
 3860: 
 3861: /abc\Qabc\Eabc/
 3862:     abcabcabc
 3863:     
 3864: /abc\Q(*+|\Eabc/
 3865:     abc(*+|abc 
 3866: 
 3867: /   abc\Q abc\Eabc/x
 3868:     abc abcabc
 3869:     *** Failers
 3870:     abcabcabc  
 3871:     
 3872: /abc#comment
 3873:     \Q#not comment
 3874:     literal\E/x
 3875:     abc#not comment\n    literal     
 3876: 
 3877: /abc#comment
 3878:     \Q#not comment
 3879:     literal/x
 3880:     abc#not comment\n    literal     
 3881: 
 3882: /abc#comment
 3883:     \Q#not comment
 3884:     literal\E #more comment
 3885:     /x
 3886:     abc#not comment\n    literal     
 3887: 
 3888: /abc#comment
 3889:     \Q#not comment
 3890:     literal\E #more comment/x
 3891:     abc#not comment\n    literal     
 3892: 
 3893: /\Qabc\$xyz\E/
 3894:     abc\\\$xyz
 3895: 
 3896: /\Qabc\E\$\Qxyz\E/
 3897:     abc\$xyz
 3898: 
 3899: /\Gabc/
 3900:     abc
 3901:     *** Failers
 3902:     xyzabc  
 3903: 
 3904: /\Gabc./g
 3905:     abc1abc2xyzabc3
 3906: 
 3907: /abc./g
 3908:     abc1abc2xyzabc3 
 3909: 
 3910: /a(?x: b c )d/
 3911:     XabcdY
 3912:     *** Failers 
 3913:     Xa b c d Y 
 3914: 
 3915: /((?x)x y z | a b c)/
 3916:     XabcY
 3917:     AxyzB 
 3918: 
 3919: /(?i)AB(?-i)C/
 3920:     XabCY
 3921:     *** Failers
 3922:     XabcY  
 3923: 
 3924: /((?i)AB(?-i)C|D)E/
 3925:     abCE
 3926:     DE
 3927:     *** Failers
 3928:     abcE
 3929:     abCe  
 3930:     dE
 3931:     De    
 3932: 
 3933: /[z\Qa-d]\E]/
 3934:     z
 3935:     a
 3936:     -
 3937:     d
 3938:     ] 
 3939:     *** Failers
 3940:     b     
 3941: 
 3942: /[\z\C]/
 3943:     z
 3944:     C 
 3945:     
 3946: /\M/
 3947:     M 
 3948:     
 3949: /(a+)*b/
 3950:     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
 3951:     
 3952: /(?i)reg(?:ul(?:[a]|ae)r|ex)/
 3953:     REGular
 3954:     regulaer
 3955:     Regex  
 3956:     regulr 
 3957: 
 3958: /[--]+/
 3959:     
 3960:     
 3961:     
 3962:     
 3963: 
 3964: /(?<=Z)X./
 3965:     \x84XAZXB
 3966: 
 3967: /^(?(2)a|(1)(2))+$/
 3968:     123a
 3969: 
 3970: /(?<=a|bbbb)c/
 3971:     ac
 3972:     bbbbc
 3973: 
 3974: /abc/SS>testsavedregex
 3975: <testsavedregex
 3976:     abc
 3977:     *** Failers
 3978:     bca
 3979:     
 3980: /abc/FSS>testsavedregex
 3981: <testsavedregex
 3982:     abc
 3983:     *** Failers
 3984:     bca
 3985: 
 3986: /(a|b)/S>testsavedregex
 3987: <testsavedregex
 3988:     abc
 3989:     *** Failers
 3990:     def  
 3991:     
 3992: /(a|b)/SF>testsavedregex
 3993: <testsavedregex
 3994:     abc
 3995:     *** Failers
 3996:     def  
 3997:     
 3998: /line\nbreak/
 3999:     this is a line\nbreak
 4000:     line one\nthis is a line\nbreak in the second line 
 4001: 
 4002: /line\nbreak/f
 4003:     this is a line\nbreak
 4004:     ** Failers 
 4005:     line one\nthis is a line\nbreak in the second line 
 4006: 
 4007: /line\nbreak/mf
 4008:     this is a line\nbreak
 4009:     ** Failers 
 4010:     line one\nthis is a line\nbreak in the second line 
 4011: 
 4012: /1234/
 4013:     123\P
 4014:     a4\P\R
 4015: 
 4016: /1234/
 4017:     123\P
 4018:     4\P\R
 4019: 
 4020: /^/mg
 4021:     a\nb\nc\n
 4022:     \ 
 4023:     
 4024: /(?<=C\n)^/mg
 4025:     A\nC\nC\n 
 4026: 
 4027: /(?s)A?B/
 4028:     AB
 4029:     aB  
 4030: 
 4031: /(?s)A*B/
 4032:     AB
 4033:     aB  
 4034: 
 4035: /(?m)A?B/
 4036:     AB
 4037:     aB  
 4038: 
 4039: /(?m)A*B/
 4040:     AB
 4041:     aB  
 4042: 
 4043: /Content-Type\x3A[^\r\n]{6,}/
 4044:     Content-Type:xxxxxyyy 
 4045: 
 4046: /Content-Type\x3A[^\r\n]{6,}z/
 4047:     Content-Type:xxxxxyyyz
 4048: 
 4049: /Content-Type\x3A[^a]{6,}/
 4050:     Content-Type:xxxyyy 
 4051: 
 4052: /Content-Type\x3A[^a]{6,}z/
 4053:     Content-Type:xxxyyyz
 4054: 
 4055: /^abc/m
 4056:     xyz\nabc
 4057:     xyz\nabc\<lf>
 4058:     xyz\r\nabc\<lf>
 4059:     xyz\rabc\<cr>
 4060:     xyz\r\nabc\<crlf>
 4061:     ** Failers 
 4062:     xyz\nabc\<cr>
 4063:     xyz\r\nabc\<cr>
 4064:     xyz\nabc\<crlf>
 4065:     xyz\rabc\<crlf>
 4066:     xyz\rabc\<lf>
 4067:     
 4068: /abc$/m<lf>
 4069:     xyzabc
 4070:     xyzabc\n 
 4071:     xyzabc\npqr 
 4072:     xyzabc\r\<cr> 
 4073:     xyzabc\rpqr\<cr> 
 4074:     xyzabc\r\n\<crlf> 
 4075:     xyzabc\r\npqr\<crlf> 
 4076:     ** Failers
 4077:     xyzabc\r 
 4078:     xyzabc\rpqr 
 4079:     xyzabc\r\n 
 4080:     xyzabc\r\npqr 
 4081:     
 4082: /^abc/m<cr>
 4083:     xyz\rabcdef
 4084:     xyz\nabcdef\<lf>
 4085:     ** Failers  
 4086:     xyz\nabcdef
 4087:        
 4088: /^abc/m<lf>
 4089:     xyz\nabcdef
 4090:     xyz\rabcdef\<cr>
 4091:     ** Failers  
 4092:     xyz\rabcdef
 4093:        
 4094: /^abc/m<crlf>
 4095:     xyz\r\nabcdef
 4096:     xyz\rabcdef\<cr>
 4097:     ** Failers  
 4098:     xyz\rabcdef
 4099:     
 4100: /.*/<lf>
 4101:     abc\ndef
 4102:     abc\rdef
 4103:     abc\r\ndef
 4104:     \<cr>abc\ndef
 4105:     \<cr>abc\rdef
 4106:     \<cr>abc\r\ndef
 4107:     \<crlf>abc\ndef
 4108:     \<crlf>abc\rdef
 4109:     \<crlf>abc\r\ndef
 4110: 
 4111: /\w+(.)(.)?def/s
 4112:     abc\ndef
 4113:     abc\rdef
 4114:     abc\r\ndef
 4115: 
 4116: /^\w+=.*(\\\n.*)*/
 4117:     abc=xyz\\\npqr
 4118: 
 4119: /^(a()*)*/
 4120:     aaaa
 4121: 
 4122: /^(?:a(?:(?:))*)*/
 4123:     aaaa
 4124: 
 4125: /^(a()+)+/
 4126:     aaaa
 4127: 
 4128: /^(?:a(?:(?:))+)+/
 4129:     aaaa
 4130: 
 4131: /(a|)*\d/
 4132:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 4133:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 4134: 
 4135: /(?>a|)*\d/
 4136:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 4137:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 4138: 
 4139: /(?:a|)*\d/
 4140:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 4141:   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 4142: 
 4143: /^a.b/<lf>
 4144:     a\rb
 4145:     a\nb\<cr> 
 4146:     ** Failers
 4147:     a\nb
 4148:     a\nb\<any>
 4149:     a\rb\<cr>   
 4150:     a\rb\<any>   
 4151: 
 4152: /^abc./mgx<any>
 4153:     abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
 4154: 
 4155: /abc.$/mgx<any>
 4156:     abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
 4157: 
 4158: /^a\Rb/<bsr_unicode>
 4159:     a\nb
 4160:     a\rb
 4161:     a\r\nb
 4162:     a\x0bb
 4163:     a\x0cb
 4164:     a\x85b   
 4165:     ** Failers
 4166:     a\n\rb    
 4167: 
 4168: /^a\R*b/<bsr_unicode>
 4169:     ab
 4170:     a\nb
 4171:     a\rb
 4172:     a\r\nb
 4173:     a\x0bb
 4174:     a\x0cb
 4175:     a\x85b   
 4176:     a\n\rb    
 4177:     a\n\r\x85\x0cb 
 4178: 
 4179: /^a\R+b/<bsr_unicode>
 4180:     a\nb
 4181:     a\rb
 4182:     a\r\nb
 4183:     a\x0bb
 4184:     a\x0cb
 4185:     a\x85b   
 4186:     a\n\rb    
 4187:     a\n\r\x85\x0cb 
 4188:     ** Failers
 4189:     ab  
 4190:     
 4191: /^a\R{1,3}b/<bsr_unicode>
 4192:     a\nb
 4193:     a\n\rb
 4194:     a\n\r\x85b
 4195:     a\r\n\r\nb 
 4196:     a\r\n\r\n\r\nb 
 4197:     a\n\r\n\rb
 4198:     a\n\n\r\nb 
 4199:     ** Failers
 4200:     a\n\n\n\rb
 4201:     a\r
 4202: 
 4203: /^a[\R]b/<bsr_unicode>
 4204:     aRb
 4205:     ** Failers
 4206:     a\nb  
 4207: 
 4208: /.+foo/
 4209:     afoo
 4210:     ** Failers 
 4211:     \r\nfoo 
 4212:     \nfoo 
 4213: 
 4214: /.+foo/<crlf>
 4215:     afoo
 4216:     \nfoo 
 4217:     ** Failers 
 4218:     \r\nfoo 
 4219: 
 4220: /.+foo/<any>
 4221:     afoo
 4222:     ** Failers 
 4223:     \nfoo 
 4224:     \r\nfoo 
 4225: 
 4226: /.+foo/s
 4227:     afoo
 4228:     \r\nfoo 
 4229:     \nfoo 
 4230: 
 4231: /^$/mg<any>
 4232:     abc\r\rxyz
 4233:     abc\n\rxyz  
 4234:     ** Failers 
 4235:     abc\r\nxyz
 4236: 
 4237: /^X/m
 4238:     XABC
 4239:     ** Failers 
 4240:     XABC\B
 4241: 
 4242: /(?m)^$/<any>g+
 4243:     abc\r\n\r\n
 4244: 
 4245: /(?m)^$|^\r\n/<any>g+ 
 4246:     abc\r\n\r\n
 4247:     
 4248: /(?m)$/<any>g+ 
 4249:     abc\r\n\r\n
 4250: 
 4251: /(?|(abc)|(xyz))/
 4252:    >abc<
 4253:    >xyz< 
 4254: 
 4255: /(x)(?|(abc)|(xyz))(x)/
 4256:     xabcx
 4257:     xxyzx 
 4258: 
 4259: /(x)(?|(abc)(pqr)|(xyz))(x)/
 4260:     xabcpqrx
 4261:     xxyzx 
 4262: 
 4263: /(?|(abc)|(xyz))(?1)/
 4264:     abcabc
 4265:     xyzabc 
 4266:     ** Failers 
 4267:     xyzxyz 
 4268:  
 4269: /\H\h\V\v/
 4270:     X X\x0a
 4271:     X\x09X\x0b
 4272:     ** Failers
 4273:     \xa0 X\x0a   
 4274:     
 4275: /\H*\h+\V?\v{3,4}/ 
 4276:     \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
 4277:     \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
 4278:     \x09\x20\xa0\x0a\x0b\x0c
 4279:     ** Failers 
 4280:     \x09\x20\xa0\x0a\x0b
 4281:      
 4282: /\H{3,4}/
 4283:     XY  ABCDE
 4284:     XY  PQR ST 
 4285:     
 4286: /.\h{3,4}./
 4287:     XY  AB    PQRS
 4288: 
 4289: /\h*X\h?\H+Y\H?Z/
 4290:     >XNNNYZ
 4291:     >  X NYQZ
 4292:     ** Failers
 4293:     >XYZ   
 4294:     >  X NY Z
 4295: 
 4296: /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
 4297:     >XY\x0aZ\x0aA\x0bNN\x0c
 4298:     >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
 4299: 
 4300: /.+A/<crlf>
 4301:     \r\nA
 4302:     
 4303: /\nA/<crlf>
 4304:     \r\nA 
 4305: 
 4306: /[\r\n]A/<crlf>
 4307:     \r\nA 
 4308: 
 4309: /(\r|\n)A/<crlf>
 4310:     \r\nA 
 4311: 
 4312: /a\Rb/I<bsr_anycrlf>
 4313:     a\rb
 4314:     a\nb
 4315:     a\r\nb
 4316:     ** Failers
 4317:     a\x85b
 4318:     a\x0bb     
 4319: 
 4320: /a\Rb/I<bsr_unicode>
 4321:     a\rb
 4322:     a\nb
 4323:     a\r\nb
 4324:     a\x85b
 4325:     a\x0bb     
 4326:     ** Failers 
 4327:     a\x85b\<bsr_anycrlf>
 4328:     a\x0bb\<bsr_anycrlf>
 4329:     
 4330: /a\R?b/I<bsr_anycrlf>
 4331:     a\rb
 4332:     a\nb
 4333:     a\r\nb
 4334:     ** Failers
 4335:     a\x85b
 4336:     a\x0bb     
 4337: 
 4338: /a\R?b/I<bsr_unicode>
 4339:     a\rb
 4340:     a\nb
 4341:     a\r\nb
 4342:     a\x85b
 4343:     a\x0bb     
 4344:     ** Failers 
 4345:     a\x85b\<bsr_anycrlf>
 4346:     a\x0bb\<bsr_anycrlf>
 4347:     
 4348: /a\R{2,4}b/I<bsr_anycrlf>
 4349:     a\r\n\nb
 4350:     a\n\r\rb
 4351:     a\r\n\r\n\r\n\r\nb
 4352:     ** Failers
 4353:     a\x85\85b
 4354:     a\x0b\0bb     
 4355: 
 4356: /a\R{2,4}b/I<bsr_unicode>
 4357:     a\r\rb
 4358:     a\n\n\nb
 4359:     a\r\n\n\r\rb
 4360:     a\x85\85b
 4361:     a\x0b\0bb     
 4362:     ** Failers 
 4363:     a\r\r\r\r\rb 
 4364:     a\x85\85b\<bsr_anycrlf>
 4365:     a\x0b\0bb\<bsr_anycrlf>
 4366:     
 4367: /a(?!)|\wbc/
 4368:     abc 
 4369: 
 4370: /a[]b/<JS>
 4371:     ** Failers
 4372:     ab
 4373: 
 4374: /a[]+b/<JS>
 4375:     ** Failers
 4376:     ab 
 4377: 
 4378: /a[]*+b/<JS>
 4379:     ** Failers
 4380:     ab 
 4381: 
 4382: /a[^]b/<JS>
 4383:     aXb
 4384:     a\nb 
 4385:     ** Failers
 4386:     ab  
 4387:     
 4388: /a[^]+b/<JS> 
 4389:     aXb
 4390:     a\nX\nXb 
 4391:     ** Failers
 4392:     ab  
 4393: 
 4394: /X$/E
 4395:     X
 4396:     ** Failers 
 4397:     X\n 
 4398: 
 4399: /X$/
 4400:     X
 4401:     X\n 
 4402: 
 4403: /xyz/C
 4404:   xyz 
 4405:   abcxyz 
 4406:   abcxyz\Y
 4407:   ** Failers 
 4408:   abc
 4409:   abc\Y
 4410:   abcxypqr  
 4411:   abcxypqr\Y  
 4412: 
 4413: /(*NO_START_OPT)xyz/C
 4414:   abcxyz 
 4415:   
 4416: /(?C)ab/
 4417:   ab
 4418:   \C-ab
 4419:   
 4420: /ab/C
 4421:   ab
 4422:   \C-ab    
 4423: 
 4424: /^"((?(?=[a])[^"])|b)*"$/C
 4425:     "ab"
 4426:     \C-"ab"
 4427: 
 4428: /\d+X|9+Y/
 4429:     ++++123999\P
 4430:     ++++123999Y\P
 4431: 
 4432: /Z(*F)/
 4433:     Z\P
 4434:     ZA\P 
 4435:     
 4436: /Z(?!)/
 4437:     Z\P 
 4438:     ZA\P 
 4439: 
 4440: /dog(sbody)?/
 4441:     dogs\P
 4442:     dogs\P\P 
 4443:     
 4444: /dog(sbody)??/
 4445:     dogs\P
 4446:     dogs\P\P 
 4447: 
 4448: /dog|dogsbody/
 4449:     dogs\P
 4450:     dogs\P\P 
 4451:  
 4452: /dogsbody|dog/
 4453:     dogs\P
 4454:     dogs\P\P 
 4455: 
 4456: /Z(*F)Q|ZXY/
 4457:     Z\P
 4458:     ZA\P 
 4459:     X\P 
 4460: 
 4461: /\bthe cat\b/
 4462:     the cat\P
 4463:     the cat\P\P
 4464: 
 4465: /dog(sbody)?/
 4466:     dogs\D\P
 4467:     body\D\R
 4468: 
 4469: /dog(sbody)?/
 4470:     dogs\D\P\P
 4471:     body\D\R
 4472: 
 4473: /abc/
 4474:    abc\P
 4475:    abc\P\P
 4476: 
 4477: /abc\K123/
 4478:     xyzabc123pqr
 4479:     
 4480: /(?<=abc)123/
 4481:     xyzabc123pqr 
 4482:     xyzabc12\P
 4483:     xyzabc12\P\P
 4484: 
 4485: /\babc\b/
 4486:     +++abc+++
 4487:     +++ab\P
 4488:     +++ab\P\P  
 4489: 
 4490: /(?=C)/g+
 4491:     ABCDECBA
 4492: 
 4493: /(abc|def|xyz)/I
 4494:     terhjk;abcdaadsfe
 4495:     the quick xyz brown fox 
 4496:     \Yterhjk;abcdaadsfe
 4497:     \Ythe quick xyz brown fox 
 4498:     ** Failers
 4499:     thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
 4500:     \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
 4501: 
 4502: /(abc|def|xyz)/SI
 4503:     terhjk;abcdaadsfe
 4504:     the quick xyz brown fox 
 4505:     \Yterhjk;abcdaadsfe
 4506:     \Ythe quick xyz brown fox 
 4507:     ** Failers
 4508:     thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
 4509:     \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
 4510: 
 4511: /abcd*/+
 4512:     xxxxabcd\P
 4513:     xxxxabcd\P\P
 4514:     dddxxx\R 
 4515:     xxxxabcd\P\P
 4516:     xxx\R 
 4517: 
 4518: /abcd*/i
 4519:     xxxxabcd\P
 4520:     xxxxabcd\P\P
 4521:     XXXXABCD\P
 4522:     XXXXABCD\P\P
 4523: 
 4524: /abc\d*/
 4525:     xxxxabc1\P
 4526:     xxxxabc1\P\P
 4527: 
 4528: /abc[de]*/
 4529:     xxxxabcde\P
 4530:     xxxxabcde\P\P
 4531: 
 4532: /(?:(?1)|B)(A(*F)|C)/
 4533:     ABCD
 4534:     CCD
 4535:     ** Failers
 4536:     CAD   
 4537: 
 4538: /^(?:(?1)|B)(A(*F)|C)/
 4539:     CCD
 4540:     BCD 
 4541:     ** Failers
 4542:     ABCD
 4543:     CAD
 4544:     BAD    
 4545: 
 4546: /^(?!a(*SKIP)b)/
 4547:     ac
 4548:     
 4549: /^(?=a(*SKIP)b|ac)/
 4550:     ** Failers
 4551:     ac
 4552:     
 4553: /^(?=a(*THEN)b|ac)/
 4554:     ac
 4555:     
 4556: /^(?=a(*PRUNE)b)/
 4557:     ab  
 4558:     ** Failers 
 4559:     ac
 4560: 
 4561: /^(?(?!a(*SKIP)b))/
 4562:     ac
 4563: 
 4564: /(?<=abc)def/
 4565:     abc\P\P
 4566: 
 4567: /abc$/
 4568:     abc
 4569:     abc\P
 4570:     abc\P\P
 4571: 
 4572: /abc$/m
 4573:     abc
 4574:     abc\n
 4575:     abc\P\P
 4576:     abc\n\P\P 
 4577:     abc\P
 4578:     abc\n\P
 4579: 
 4580: /abc\z/
 4581:     abc
 4582:     abc\P
 4583:     abc\P\P
 4584: 
 4585: /abc\Z/
 4586:     abc
 4587:     abc\P
 4588:     abc\P\P
 4589: 
 4590: /abc\b/
 4591:     abc
 4592:     abc\P
 4593:     abc\P\P
 4594: 
 4595: /abc\B/
 4596:     abc
 4597:     abc\P
 4598:     abc\P\P
 4599: 
 4600: /.+/
 4601:     abc\>0
 4602:     abc\>1
 4603:     abc\>2
 4604:     abc\>3
 4605:     abc\>4
 4606:     abc\>-4 
 4607: 
 4608: /^(?:a)++\w/
 4609:      aaaab
 4610:      ** Failers 
 4611:      aaaa 
 4612:      bbb 
 4613: 
 4614: /^(?:aa|(?:a)++\w)/
 4615:      aaaab
 4616:      aaaa 
 4617:      ** Failers 
 4618:      bbb 
 4619: 
 4620: /^(?:a)*+\w/
 4621:      aaaab
 4622:      bbb 
 4623:      ** Failers 
 4624:      aaaa 
 4625: 
 4626: /^(a)++\w/
 4627:      aaaab
 4628:      ** Failers 
 4629:      aaaa 
 4630:      bbb 
 4631: 
 4632: /^(a|)++\w/
 4633:      aaaab
 4634:      ** Failers 
 4635:      aaaa 
 4636:      bbb 
 4637: 
 4638: /(?=abc){3}abc/+
 4639:     abcabcabc
 4640:     ** Failers
 4641:     xyz  
 4642:     
 4643: /(?=abc)+abc/+
 4644:     abcabcabc
 4645:     ** Failers
 4646:     xyz  
 4647:     
 4648: /(?=abc)++abc/+
 4649:     abcabcabc
 4650:     ** Failers
 4651:     xyz  
 4652:     
 4653: /(?=abc){0}xyz/
 4654:     xyz 
 4655: 
 4656: /(?=abc){1}xyz/
 4657:     ** Failers
 4658:     xyz 
 4659:     
 4660: /(?=(a))?./
 4661:     ab
 4662:     bc
 4663:       
 4664: /(?=(a))??./
 4665:     ab
 4666:     bc
 4667: 
 4668: /^(?=(a)){0}b(?1)/
 4669:     backgammon
 4670: 
 4671: /^(?=(?1))?[az]([abc])d/
 4672:     abd 
 4673:     zcdxx 
 4674: 
 4675: /^(?!a){0}\w+/
 4676:     aaaaa
 4677: 
 4678: /(?<=(abc))?xyz/
 4679:     abcxyz
 4680:     pqrxyz 
 4681: 
 4682: /((?2))((?1))/
 4683:     abc
 4684: 
 4685: /(?(R)a+|(?R)b)/
 4686:     aaaabcde
 4687: 
 4688: /(?(R)a+|((?R))b)/
 4689:     aaaabcde
 4690: 
 4691: /((?(R)a+|(?1)b))/
 4692:     aaaabcde
 4693: 
 4694: /((?(R2)a+|(?1)b))/
 4695:     aaaabcde
 4696: 
 4697: /(?(R)a*(?1)|((?R))b)/
 4698:     aaaabcde
 4699: 
 4700: /(a+)/O
 4701:     \O6aaaa
 4702:     \O8aaaa
 4703: 
 4704: /ab\Cde/
 4705:     abXde
 4706:     
 4707: /(?<=ab\Cde)X/
 4708:     abZdeX
 4709: 
 4710: /^\R/
 4711:     \r\P
 4712:     \r\P\P
 4713:     
 4714: /^\R{2,3}x/
 4715:     \r\P
 4716:     \r\P\P
 4717:     \r\r\P 
 4718:     \r\r\P\P
 4719:     \r\r\r\P  
 4720:     \r\r\r\P\P
 4721:     \r\rx
 4722:     \r\r\rx    
 4723: 
 4724: /^\R{2,3}?x/
 4725:     \r\P
 4726:     \r\P\P
 4727:     \r\r\P 
 4728:     \r\r\P\P
 4729:     \r\r\r\P  
 4730:     \r\r\r\P\P
 4731:     \r\rx
 4732:     \r\r\rx    
 4733:     
 4734: /^\R?x/
 4735:     \r\P
 4736:     \r\P\P 
 4737:     x
 4738:     \rx  
 4739: 
 4740: /^\R+x/
 4741:     \r\P
 4742:     \r\P\P 
 4743:     \r\n\P
 4744:     \r\n\P\P  
 4745:     \rx  
 4746: 
 4747: /^a$/<CRLF>
 4748:     a\r\P
 4749:     a\r\P\P 
 4750: 
 4751: /^a$/m<CRLF>
 4752:     a\r\P
 4753:     a\r\P\P 
 4754: 
 4755: /^(a$|a\r)/<CRLF>
 4756:     a\r\P
 4757:     a\r\P\P 
 4758: 
 4759: /^(a$|a\r)/m<CRLF>
 4760:     a\r\P
 4761:     a\r\P\P 
 4762: 
 4763: /./<CRLF>
 4764:     \r\P
 4765:     \r\P\P 
 4766:   
 4767: /.{2,3}/<CRLF>
 4768:     \r\P 
 4769:     \r\P\P
 4770:     \r\r\P
 4771:     \r\r\P\P
 4772:     \r\r\r\P
 4773:     \r\r\r\P\P     
 4774: 
 4775: /.{2,3}?/<CRLF>
 4776:     \r\P 
 4777:     \r\P\P
 4778:     \r\r\P
 4779:     \r\r\P\P
 4780:     \r\r\r\P
 4781:     \r\r\r\P\P     
 4782: 
 4783: /-- Test simple validity check for restarts --/
 4784: 
 4785: /abcdef/
 4786:    abc\R
 4787: 
 4788: /<H((?(?!<H|F>)(.)|(?R))++)*F>/
 4789:     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.
 4790: 
 4791: /^(?>.{4})abc|^\w\w.xabcd/
 4792:     xxxxabcd
 4793:     xx\xa0xabcd 
 4794: 
 4795: /^(.{4}){2}+abc|^\w\w.x\w\w\w\wabcd/
 4796:     xxxxxxxxabcd
 4797:     xx\xa0xxxxxabcd 
 4798: 
 4799: /abcd/
 4800:     abcd\O0
 4801: 
 4802: /-- These tests show up auto-possessification --/
 4803: 
 4804: /[ab]*/
 4805:     aaaa
 4806:     
 4807: /[ab]*?/
 4808:     aaaa
 4809:     
 4810: /[ab]?/
 4811:     aaaa
 4812:     
 4813: /[ab]??/
 4814:     aaaa
 4815:     
 4816: /[ab]+/
 4817:     aaaa
 4818:     
 4819: /[ab]+?/
 4820:     aaaa
 4821:     
 4822: /[ab]{2,3}/
 4823:     aaaa
 4824:     
 4825: /[ab]{2,3}?/
 4826:     aaaa
 4827:     
 4828: /[ab]{2,}/
 4829:     aaaa    
 4830: 
 4831: /[ab]{2,}?/
 4832:     aaaa    
 4833: 
 4834: /-- End of testinput8 --/

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