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