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