File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / pcre / testdata / testinput8
Revision 1.1.1.4 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Jul 22 08:25:57 2013 UTC (10 years, 11 months ago) by misho
Branches: pcre, MAIN
CVS tags: v8_33, HEAD
8.33

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

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