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