Home | History | Annotate | Download | only in testdata
      1 # This set of tests checks UTF and Unicode property support with the DFA
      2 # matching functionality of pcre_dfa_match(). A default subject modifier is
      3 # used to force DFA matching for all tests.
      4 
      5 #subject dfa
      6 #newline_default LF any anyCRLF
      7 
      8 /\x{100}ab/utf
      9   \x{100}ab
     10   
     11 /a\x{100}*b/utf
     12     ab
     13     a\x{100}b  
     14     a\x{100}\x{100}b  
     15     
     16 /a\x{100}+b/utf
     17     a\x{100}b  
     18     a\x{100}\x{100}b  
     19 \= Expect no match 
     20     ab
     21      
     22 /\bX/utf
     23     Xoanon
     24     +Xoanon
     25     \x{300}Xoanon 
     26 \= Expect no match 
     27     YXoanon  
     28     
     29 /\BX/utf
     30     YXoanon
     31 \= Expect no match
     32     Xoanon
     33     +Xoanon    
     34     \x{300}Xoanon 
     35 
     36 /X\b/utf
     37     X+oanon
     38     ZX\x{300}oanon 
     39     FAX 
     40 \= Expect no match 
     41     Xoanon  
     42     
     43 /X\B/utf
     44     Xoanon  
     45 \= Expect no match
     46     X+oanon
     47     ZX\x{300}oanon 
     48     FAX 
     49     
     50 /[^a]/utf
     51     abcd
     52     a\x{100}   
     53 
     54 /^[abc\x{123}\x{400}-\x{402}]{2,3}\d/utf
     55     ab99
     56     \x{123}\x{123}45
     57     \x{400}\x{401}\x{402}6  
     58 \= Expect no match
     59     d99
     60     \x{123}\x{122}4   
     61     \x{400}\x{403}6  
     62     \x{400}\x{401}\x{402}\x{402}6  
     63 
     64 /a.b/utf
     65     acb
     66     a\x7fb
     67     a\x{100}b 
     68 \= Expect no match
     69     a\nb  
     70 
     71 /a(.{3})b/utf
     72     a\x{4000}xyb 
     73     a\x{4000}\x7fyb 
     74     a\x{4000}\x{100}yb 
     75 \= Expect no match
     76     a\x{4000}b 
     77     ac\ncb 
     78 
     79 /a(.*?)(.)/
     80     a\xc0\x88b
     81 
     82 /a(.*?)(.)/utf
     83     a\x{100}b
     84 
     85 /a(.*)(.)/
     86     a\xc0\x88b
     87 
     88 /a(.*)(.)/utf
     89     a\x{100}b
     90 
     91 /a(.)(.)/
     92     a\xc0\x92bcd
     93 
     94 /a(.)(.)/utf
     95     a\x{240}bcd
     96 
     97 /a(.?)(.)/
     98     a\xc0\x92bcd
     99 
    100 /a(.?)(.)/utf
    101     a\x{240}bcd
    102 
    103 /a(.??)(.)/
    104     a\xc0\x92bcd
    105 
    106 /a(.??)(.)/utf
    107     a\x{240}bcd
    108 
    109 /a(.{3})b/utf
    110     a\x{1234}xyb 
    111     a\x{1234}\x{4321}yb 
    112     a\x{1234}\x{4321}\x{3412}b 
    113 \= Expect no match
    114     a\x{1234}b 
    115     ac\ncb 
    116 
    117 /a(.{3,})b/utf
    118     a\x{1234}xyb 
    119     a\x{1234}\x{4321}yb 
    120     a\x{1234}\x{4321}\x{3412}b 
    121     axxxxbcdefghijb 
    122     a\x{1234}\x{4321}\x{3412}\x{3421}b 
    123 \= Expect no match
    124     a\x{1234}b 
    125 
    126 /a(.{3,}?)b/utf
    127     a\x{1234}xyb 
    128     a\x{1234}\x{4321}yb 
    129     a\x{1234}\x{4321}\x{3412}b 
    130     axxxxbcdefghijb 
    131     a\x{1234}\x{4321}\x{3412}\x{3421}b 
    132 \= Expect no match
    133     a\x{1234}b 
    134 
    135 /a(.{3,5})b/utf
    136     a\x{1234}xyb 
    137     a\x{1234}\x{4321}yb 
    138     a\x{1234}\x{4321}\x{3412}b 
    139     axxxxbcdefghijb 
    140     a\x{1234}\x{4321}\x{3412}\x{3421}b 
    141     axbxxbcdefghijb 
    142     axxxxxbcdefghijb 
    143 \= Expect no match
    144     a\x{1234}b 
    145     axxxxxxbcdefghijb 
    146 
    147 /a(.{3,5}?)b/utf
    148     a\x{1234}xyb 
    149     a\x{1234}\x{4321}yb 
    150     a\x{1234}\x{4321}\x{3412}b 
    151     axxxxbcdefghijb 
    152     a\x{1234}\x{4321}\x{3412}\x{3421}b 
    153     axbxxbcdefghijb 
    154     axxxxxbcdefghijb 
    155 \= Expect no match
    156     a\x{1234}b 
    157     axxxxxxbcdefghijb 
    158 
    159 /^[a\x{c0}]/utf
    160 \= Expect no match
    161     \x{100}
    162 
    163 /(?<=aXb)cd/utf
    164     aXbcd
    165 
    166 /(?<=a\x{100}b)cd/utf
    167     a\x{100}bcd
    168 
    169 /(?<=a\x{100000}b)cd/utf
    170     a\x{100000}bcd
    171     
    172 /(?:\x{100}){3}b/utf
    173     \x{100}\x{100}\x{100}b
    174 \= Expect no match 
    175     \x{100}\x{100}b
    176 
    177 /\x{ab}/utf
    178     \x{ab} 
    179     \xc2\xab
    180 \= Expect no match 
    181     \x00{ab}
    182 
    183 /(?<=(.))X/utf
    184     WXYZ
    185     \x{256}XYZ 
    186 \= Expect no match
    187     XYZ 
    188 
    189 /[^a]+/g,utf
    190     bcd
    191     \x{100}aY\x{256}Z 
    192     
    193 /^[^a]{2}/utf
    194     \x{100}bc
    195  
    196 /^[^a]{2,}/utf
    197     \x{100}bcAa
    198 
    199 /^[^a]{2,}?/utf
    200     \x{100}bca
    201 
    202 /[^a]+/gi,utf
    203     bcd
    204     \x{100}aY\x{256}Z 
    205     
    206 /^[^a]{2}/i,utf
    207     \x{100}bc
    208  
    209 /^[^a]{2,}/i,utf
    210     \x{100}bcAa
    211 
    212 /^[^a]{2,}?/i,utf
    213     \x{100}bca
    214 
    215 /\x{100}{0,0}/utf
    216     abcd
    217  
    218 /\x{100}?/utf
    219     abcd
    220     \x{100}\x{100} 
    221 
    222 /\x{100}{0,3}/utf
    223     \x{100}\x{100} 
    224     \x{100}\x{100}\x{100}\x{100} 
    225     
    226 /\x{100}*/utf
    227     abce
    228     \x{100}\x{100}\x{100}\x{100} 
    229 
    230 /\x{100}{1,1}/utf
    231     abcd\x{100}\x{100}\x{100}\x{100} 
    232 
    233 /\x{100}{1,3}/utf
    234     abcd\x{100}\x{100}\x{100}\x{100} 
    235 
    236 /\x{100}+/utf
    237     abcd\x{100}\x{100}\x{100}\x{100} 
    238 
    239 /\x{100}{3}/utf
    240     abcd\x{100}\x{100}\x{100}XX
    241 
    242 /\x{100}{3,5}/utf
    243     abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
    244 
    245 /\x{100}{3,}/utf,no_auto_possess
    246     abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
    247 
    248 /(?<=a\x{100}{2}b)X/utf
    249     Xyyya\x{100}\x{100}bXzzz
    250 
    251 /\D*/utf,no_auto_possess
    252   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    253 
    254 /\D*/utf,no_auto_possess
    255   \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
    256 
    257 /\D/utf
    258     1X2
    259     1\x{100}2 
    260   
    261 />\S/utf
    262     > >X Y
    263     > >\x{100} Y
    264   
    265 /\d/utf
    266     \x{100}3
    267     
    268 /\s/utf
    269     \x{100} X
    270     
    271 /\D+/utf
    272     12abcd34
    273 \= Expect no match
    274     1234  
    275 
    276 /\D{2,3}/utf
    277     12abcd34
    278     12ab34
    279 \= Expect no match  
    280     1234
    281     12a34  
    282 
    283 /\D{2,3}?/utf
    284     12abcd34
    285     12ab34
    286 \= Expect no match  
    287     1234
    288     12a34  
    289 
    290 /\d+/utf
    291     12abcd34
    292 
    293 /\d{2,3}/utf
    294     12abcd34
    295     1234abcd
    296 \= Expect no match  
    297     1.4 
    298 
    299 /\d{2,3}?/utf
    300     12abcd34
    301     1234abcd
    302 \= Expect no match  
    303     1.4 
    304 
    305 /\S+/utf
    306     12abcd34
    307 \= Expect no match
    308     \    \ 
    309 
    310 /\S{2,3}/utf
    311     12abcd34
    312     1234abcd
    313 \= Expect no match
    314     \     \  
    315 
    316 /\S{2,3}?/utf
    317     12abcd34
    318     1234abcd
    319 \= Expect no match
    320     \     \  
    321 
    322 />\s+</utf
    323     12>      <34
    324 
    325 />\s{2,3}</utf
    326     ab>  <cd
    327     ab>   <ce
    328 \= Expect no match
    329     ab>    <cd 
    330 
    331 />\s{2,3}?</utf
    332     ab>  <cd
    333     ab>   <ce
    334 \= Expect no match
    335     ab>    <cd 
    336 
    337 /\w+/utf
    338     12      34
    339 \= Expect no match
    340     +++=*! 
    341 
    342 /\w{2,3}/utf
    343     ab  cd
    344     abcd ce
    345 \= Expect no match
    346     a.b.c
    347 
    348 /\w{2,3}?/utf
    349     ab  cd
    350     abcd ce
    351 \= Expect no match
    352     a.b.c
    353 
    354 /\W+/utf
    355     12====34
    356 \= Expect no match
    357     abcd 
    358 
    359 /\W{2,3}/utf
    360     ab====cd
    361     ab==cd
    362 \= Expect no match
    363     a.b.c
    364 
    365 /\W{2,3}?/utf
    366     ab====cd
    367     ab==cd
    368 \= Expect no match
    369     a.b.c
    370 
    371 /[\x{100}]/utf
    372     \x{100}
    373     Z\x{100}
    374     \x{100}Z
    375 
    376 /[Z\x{100}]/utf
    377     Z\x{100}
    378     \x{100}
    379     \x{100}Z
    380 
    381 /[\x{100}\x{200}]/utf
    382    ab\x{100}cd
    383    ab\x{200}cd
    384 
    385 /[\x{100}-\x{200}]/utf
    386    ab\x{100}cd
    387    ab\x{200}cd
    388    ab\x{111}cd 
    389 
    390 /[z-\x{200}]/utf
    391    ab\x{100}cd
    392    ab\x{200}cd
    393    ab\x{111}cd 
    394    abzcd
    395    ab|cd  
    396 
    397 /[Q\x{100}\x{200}]/utf
    398    ab\x{100}cd
    399    ab\x{200}cd
    400    Q? 
    401 
    402 /[Q\x{100}-\x{200}]/utf
    403    ab\x{100}cd
    404    ab\x{200}cd
    405    ab\x{111}cd 
    406    Q? 
    407 
    408 /[Qz-\x{200}]/utf
    409    ab\x{100}cd
    410    ab\x{200}cd
    411    ab\x{111}cd 
    412    abzcd
    413    ab|cd  
    414    Q? 
    415 
    416 /[\x{100}\x{200}]{1,3}/utf
    417    ab\x{100}cd
    418    ab\x{200}cd
    419    ab\x{200}\x{100}\x{200}\x{100}cd
    420 
    421 /[\x{100}\x{200}]{1,3}?/utf
    422    ab\x{100}cd
    423    ab\x{200}cd
    424    ab\x{200}\x{100}\x{200}\x{100}cd
    425 
    426 /[Q\x{100}\x{200}]{1,3}/utf
    427    ab\x{100}cd
    428    ab\x{200}cd
    429    ab\x{200}\x{100}\x{200}\x{100}cd
    430 
    431 /[Q\x{100}\x{200}]{1,3}?/utf
    432    ab\x{100}cd
    433    ab\x{200}cd
    434    ab\x{200}\x{100}\x{200}\x{100}cd
    435 
    436 /(?<=[\x{100}\x{200}])X/utf
    437     abc\x{200}X
    438     abc\x{100}X 
    439 \= Expect no match
    440     X  
    441 
    442 /(?<=[Q\x{100}\x{200}])X/utf
    443     abc\x{200}X
    444     abc\x{100}X 
    445     abQX 
    446 \= Expect no match
    447     X  
    448 
    449 /(?<=[\x{100}\x{200}]{3})X/utf
    450     abc\x{100}\x{200}\x{100}X
    451 \= Expect no match
    452     abc\x{200}X
    453     X  
    454 
    455 /[^\x{100}\x{200}]X/utf
    456     AX
    457     \x{150}X
    458     \x{500}X 
    459 \= Expect no match
    460     \x{100}X
    461     \x{200}X   
    462 
    463 /[^Q\x{100}\x{200}]X/utf
    464     AX
    465     \x{150}X
    466     \x{500}X 
    467 \= Expect no match
    468     \x{100}X
    469     \x{200}X   
    470     QX 
    471 
    472 /[^\x{100}-\x{200}]X/utf
    473     AX
    474     \x{500}X 
    475 \= Expect no match
    476     \x{100}X
    477     \x{150}X
    478     \x{200}X   
    479 
    480 /[z-\x{100}]/i,utf
    481     z
    482     Z 
    483     \x{100}
    484 \= Expect no match
    485     \x{102}
    486     y    
    487 
    488 /[\xFF]/
    489     >\xff<
    490 
    491 /[\xff]/utf
    492     >\x{ff}<
    493 
    494 /[^\xFF]/
    495     XYZ
    496 
    497 /[^\xff]/utf
    498     XYZ
    499     \x{123} 
    500 
    501 /^[ac]*b/utf
    502 \= Expect no match
    503     xb
    504 
    505 /^[ac\x{100}]*b/utf
    506 \= Expect no match
    507     xb
    508 
    509 /^[^x]*b/i,utf
    510 \= Expect no match
    511     xb
    512 
    513 /^[^x]*b/utf
    514 \= Expect no match
    515     xb
    516   
    517 /^\d*b/utf
    518 \= Expect no match
    519     xb 
    520 
    521 /(|a)/g,utf
    522     catac
    523     a\x{256}a 
    524 
    525 /^\x{85}$/i,utf
    526     \x{85}
    527 
    528 /^abc./gmx,newline=any,utf
    529     abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK
    530 
    531 /abc.$/gmx,newline=any,utf
    532     abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x{0085} abc7\x{2028} abc8\x{2029} abc9
    533 
    534 /^a\Rb/bsr=unicode,utf
    535     a\nb
    536     a\rb
    537     a\r\nb
    538     a\x0bb
    539     a\x0cb
    540     a\x{85}b   
    541     a\x{2028}b 
    542     a\x{2029}b 
    543 \= Expect no match
    544     a\n\rb    
    545 
    546 /^a\R*b/bsr=unicode,utf
    547     ab
    548     a\nb
    549     a\rb
    550     a\r\nb
    551     a\x0bb
    552     a\x0c\x{2028}\x{2029}b
    553     a\x{85}b   
    554     a\n\rb    
    555     a\n\r\x{85}\x0cb 
    556 
    557 /^a\R+b/bsr=unicode,utf
    558     a\nb
    559     a\rb
    560     a\r\nb
    561     a\x0bb
    562     a\x0c\x{2028}\x{2029}b
    563     a\x{85}b   
    564     a\n\rb    
    565     a\n\r\x{85}\x0cb 
    566 \= Expect no match
    567     ab  
    568 
    569 /^a\R{1,3}b/bsr=unicode,utf
    570     a\nb
    571     a\n\rb
    572     a\n\r\x{85}b
    573     a\r\n\r\nb 
    574     a\r\n\r\n\r\nb 
    575     a\n\r\n\rb
    576     a\n\n\r\nb 
    577 \= Expect no match
    578     a\n\n\n\rb
    579     a\r
    580 
    581 /\h+\V?\v{3,4}/utf,no_auto_possess
    582     \x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
    583 
    584 /\V?\v{3,4}/utf,no_auto_possess
    585     \x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
    586 
    587 /\h+\V?\v{3,4}/utf,no_auto_possess
    588     >\x09\x20\x{a0}X\x0a\x0a\x0a<
    589 
    590 /\V?\v{3,4}/utf,no_auto_possess
    591     >\x09\x20\x{a0}X\x0a\x0a\x0a<
    592 
    593 /\H\h\V\v/utf
    594     X X\x0a
    595     X\x09X\x0b
    596 \= Expect no match
    597     \x{a0} X\x0a   
    598     
    599 /\H*\h+\V?\v{3,4}/utf,no_auto_possess
    600     \x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
    601     \x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a
    602     \x09\x20\x{a0}\x0a\x0b\x0c
    603 \= Expect no match 
    604     \x09\x20\x{a0}\x0a\x0b
    605      
    606 /\H\h\V\v/utf
    607     \x{3001}\x{3000}\x{2030}\x{2028}
    608     X\x{180e}X\x{85}
    609 \= Expect no match
    610     \x{2009} X\x0a   
    611     
    612 /\H*\h+\V?\v{3,4}/utf,no_auto_possess
    613     \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a
    614     \x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a
    615     \x09\x20\x{202f}\x0a\x0b\x0c
    616 \= Expect no match 
    617     \x09\x{200a}\x{a0}\x{2028}\x0b
    618      
    619 /a\Rb/I,bsr=anycrlf,utf
    620     a\rb
    621     a\nb
    622     a\r\nb
    623 \= Expect no match
    624     a\x{85}b
    625     a\x0bb     
    626 
    627 /a\Rb/I,bsr=unicode,utf
    628     a\rb
    629     a\nb
    630     a\r\nb
    631     a\x{85}b
    632     a\x0bb     
    633     
    634 /a\R?b/I,bsr=anycrlf,utf
    635     a\rb
    636     a\nb
    637     a\r\nb
    638 \= Expect no match
    639     a\x{85}b
    640     a\x0bb     
    641 
    642 /a\R?b/I,bsr=unicode,utf
    643     a\rb
    644     a\nb
    645     a\r\nb
    646     a\x{85}b
    647     a\x0bb     
    648  
    649 /X/newline=any,utf,firstline
    650     A\x{1ec5}ABCXYZ
    651 
    652 /abcd*/utf
    653     xxxxabcd\=ps
    654     xxxxabcd\=ph
    655 
    656 /abcd*/i,utf
    657     xxxxabcd\=ps
    658     xxxxabcd\=ph
    659     XXXXABCD\=ps
    660     XXXXABCD\=ph
    661 
    662 /abc\d*/utf
    663     xxxxabc1\=ps
    664     xxxxabc1\=ph
    665 
    666 /abc[de]*/utf
    667     xxxxabcde\=ps
    668     xxxxabcde\=ph
    669 
    670 /\bthe cat\b/utf
    671     the cat\=ps
    672     the cat\=ph
    673 
    674 /./newline=crlf,utf
    675     \r\=ps
    676     \r\=ph
    677   
    678 /.{2,3}/newline=crlf,utf
    679     \r\=ps
    680     \r\=ph
    681     \r\r\=ps
    682     \r\r\=ph
    683     \r\r\r\=ps
    684     \r\r\r\=ph
    685 
    686 /.{2,3}?/newline=crlf,utf
    687     \r\=ps
    688     \r\=ph
    689     \r\r\=ps
    690     \r\r\=ph
    691     \r\r\r\=ps
    692     \r\r\r\=ph
    693 
    694 /[^\x{100}]/utf
    695     \x{100}\x{101}X
    696 
    697 /[^\x{100}]+/utf
    698     \x{100}\x{101}X
    699 
    700 /\pL\P{Nd}/utf
    701     AB
    702 \= Expect no match
    703     A0
    704     00
    705 
    706 /\X./utf
    707     AB
    708     A\x{300}BC
    709     A\x{300}\x{301}\x{302}BC
    710 \= Expect no match
    711     \x{300}
    712 
    713 /\X\X/utf
    714     ABC
    715     A\x{300}B\x{300}\x{301}C
    716     A\x{300}\x{301}\x{302}BC
    717 \= Expect no match
    718     \x{300}
    719 
    720 /^\pL+/utf
    721     abcd
    722     a
    723 
    724 /^\PL+/utf
    725     1234
    726     =
    727 \= Expect no match
    728     abcd
    729 
    730 /^\X+/utf
    731     abcdA\x{300}\x{301}\x{302}
    732     A\x{300}\x{301}\x{302}
    733     A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}
    734     a
    735     \x{300}\x{301}\x{302}
    736 
    737 /\X?abc/utf
    738     abc
    739     A\x{300}abc
    740     A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
    741     \x{300}abc
    742 
    743 /^\X?abc/utf
    744     abc
    745     A\x{300}abc
    746     \x{300}abc
    747 \= Expect no match
    748     A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
    749 
    750 /\X*abc/utf
    751     abc
    752     A\x{300}abc
    753     A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
    754     \x{300}abc
    755 
    756 /^\X*abc/utf
    757     abc
    758     A\x{300}abc
    759     A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
    760     \x{300}abc
    761 
    762 /^\pL?=./utf
    763     A=b
    764     =c
    765 \= Expect no match
    766     1=2
    767     AAAA=b
    768 
    769 /^\pL*=./utf
    770     AAAA=b
    771     =c
    772 \= Expect no match
    773     1=2
    774 
    775 /^\X{2,3}X/utf
    776     A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}X
    777     A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}X
    778 \= Expect no match
    779     X
    780     A\x{300}\x{301}\x{302}X
    781     A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}X
    782 
    783 /^\pC\pL\pM\pN\pP\pS\pZ</utf
    784     \x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
    785     \np\x{300}9!\$ <
    786 \= Expect no match
    787     ap\x{300}9!\$ <
    788   
    789 /^\PC/utf
    790     X
    791 \= Expect no match
    792     \x7f
    793   
    794 /^\PL/utf
    795     9
    796 \= Expect no match
    797     \x{c0}
    798   
    799 /^\PM/utf
    800     X
    801 \= Expect no match
    802     \x{30f}
    803   
    804 /^\PN/utf
    805     X
    806 \= Expect no match
    807     \x{660}
    808   
    809 /^\PP/utf
    810     X
    811 \= Expect no match
    812     \x{66c}
    813   
    814 /^\PS/utf
    815     X
    816 \= Expect no match
    817     \x{f01}
    818   
    819 /^\PZ/utf
    820     X
    821 \= Expect no match
    822     \x{1680}
    823     
    824 /^\p{Cc}/utf
    825     \x{017}
    826     \x{09f}
    827 \= Expect no match
    828     \x{0600}
    829   
    830 /^\p{Cf}/utf
    831     \x{601}
    832     \x{180e}
    833     \x{061c}
    834     \x{2066}
    835     \x{2067}
    836     \x{2068}
    837     \x{2069}
    838 \= Expect no match
    839     \x{09f}
    840   
    841 /^\p{Cn}/utf
    842 \= Expect no match
    843     \x{09f}
    844   
    845 /^\p{Co}/utf
    846     \x{f8ff}
    847 \= Expect no match
    848     \x{09f}
    849   
    850 /^\p{Cs}/utf
    851     \x{dfff}\=no_utf_check
    852 \= Expect no match
    853     \x{09f}
    854   
    855 /^\p{Ll}/utf
    856     a
    857 \= Expect no match
    858     Z
    859     \x{e000}
    860   
    861 /^\p{Lm}/utf
    862     \x{2b0}
    863 \= Expect no match
    864     a
    865   
    866 /^\p{Lo}/utf
    867     \x{1bb}
    868 \= Expect no match
    869     a
    870     \x{2b0}
    871   
    872 /^\p{Lt}/utf
    873     \x{1c5}
    874 \= Expect no match
    875     a
    876     \x{2b0}
    877   
    878 /^\p{Lu}/utf
    879     A
    880 \= Expect no match
    881     \x{2b0}
    882   
    883 /^\p{Mc}/utf
    884     \x{903}
    885 \= Expect no match
    886     X
    887     \x{300}
    888        
    889 /^\p{Me}/utf
    890     \x{488}
    891 \= Expect no match
    892     X
    893     \x{903}
    894     \x{300}
    895   
    896 /^\p{Mn}/utf
    897     \x{300}
    898     \x{1a1b}
    899 \= Expect no match
    900     X
    901     \x{903}
    902   
    903 /^\p{Nd}+/utf,no_auto_possess
    904     0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}\x{66a}
    905     \x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}\x{6f6}\x{6f7}\x{6f8}\x{6f9}\x{6fa}
    906     \x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}\x{96c}\x{96d}\x{96e}\x{96f}\x{970}
    907 \= Expect no match
    908     X
    909   
    910 /^\p{Nl}/utf
    911     \x{16ee}
    912 \= Expect no match
    913     X
    914     \x{966}
    915   
    916 /^\p{No}/utf
    917     \x{b2}
    918     \x{b3}
    919 \= Expect no match
    920     X
    921     \x{16ee}
    922   
    923 /^\p{Pc}/utf
    924     \x5f
    925     \x{203f}
    926 \= Expect no match
    927     X
    928     -
    929     \x{58a}
    930   
    931 /^\p{Pd}/utf
    932     -
    933     \x{58a}
    934 \= Expect no match
    935     X
    936     \x{203f}
    937   
    938 /^\p{Pe}/utf
    939     )
    940     ]
    941     }
    942     \x{f3b}
    943     \x{2309}
    944     \x{230b}
    945 \= Expect no match
    946     X
    947     \x{203f}
    948     (
    949     [
    950     {
    951     \x{f3c}
    952 
    953 /^\p{Pf}/utf
    954     \x{bb}
    955     \x{2019}
    956 \= Expect no match
    957     X
    958     \x{203f}
    959   
    960 /^\p{Pi}/utf
    961     \x{ab}
    962     \x{2018}
    963 \= Expect no match
    964     X
    965     \x{203f}
    966   
    967 /^\p{Po}/utf
    968     !
    969     \x{37e}
    970 \= Expect no match
    971     X
    972     \x{203f}
    973   
    974 /^\p{Ps}/utf
    975     (
    976     [
    977     {
    978     \x{f3c}
    979     \x{2308}
    980     \x{230a}
    981 \= Expect no match
    982     X
    983     )
    984     ]
    985     }
    986     \x{f3b}
    987   
    988 /^\p{Sc}+/utf
    989     $\x{a2}\x{a3}\x{a4}\x{a5}\x{a6}
    990     \x{9f2}
    991 \= Expect no match
    992     X
    993     \x{2c2}
    994   
    995 /^\p{Sk}/utf
    996     \x{2c2}
    997 \= Expect no match
    998     X
    999     \x{9f2}
   1000   
   1001 /^\p{Sm}+/utf
   1002     +<|~\x{ac}\x{2044}
   1003 \= Expect no match
   1004     X
   1005     \x{9f2}
   1006   
   1007 /^\p{So}/utf
   1008     \x{a6}
   1009     \x{482}
   1010 \= Expect no match
   1011     X
   1012     \x{9f2}
   1013   
   1014 /^\p{Zl}/utf
   1015     \x{2028}
   1016 \= Expect no match
   1017     X
   1018     \x{2029}
   1019   
   1020 /^\p{Zp}/utf
   1021     \x{2029}
   1022 \= Expect no match
   1023     X
   1024     \x{2028}
   1025   
   1026 /^\p{Zs}/utf
   1027     \ \
   1028     \x{a0}
   1029     \x{1680}
   1030     \x{2000}
   1031     \x{2001}
   1032 \= Expect no match
   1033     \x{2028}
   1034     \x{200d}
   1035   
   1036 /\p{Nd}+(..)/utf
   1037       \x{660}\x{661}\x{662}ABC
   1038   
   1039 /\p{Nd}+?(..)/utf
   1040       \x{660}\x{661}\x{662}ABC
   1041   
   1042 /\p{Nd}{2,}(..)/utf
   1043       \x{660}\x{661}\x{662}ABC
   1044   
   1045 /\p{Nd}{2,}?(..)/utf
   1046       \x{660}\x{661}\x{662}ABC
   1047   
   1048 /\p{Nd}*(..)/utf
   1049       \x{660}\x{661}\x{662}ABC
   1050   
   1051 /\p{Nd}*?(..)/utf
   1052       \x{660}\x{661}\x{662}ABC
   1053   
   1054 /\p{Nd}{2}(..)/utf
   1055       \x{660}\x{661}\x{662}ABC
   1056   
   1057 /\p{Nd}{2,3}(..)/utf
   1058       \x{660}\x{661}\x{662}ABC
   1059   
   1060 /\p{Nd}{2,3}?(..)/utf
   1061       \x{660}\x{661}\x{662}ABC
   1062   
   1063 /\p{Nd}?(..)/utf
   1064       \x{660}\x{661}\x{662}ABC
   1065   
   1066 /\p{Nd}??(..)/utf
   1067       \x{660}\x{661}\x{662}ABC
   1068   
   1069 /\p{Nd}*+(..)/utf
   1070       \x{660}\x{661}\x{662}ABC
   1071   
   1072 /\p{Nd}*+(...)/utf
   1073       \x{660}\x{661}\x{662}ABC
   1074   
   1075 /\p{Nd}*+(....)/utf
   1076 \= Expect no match
   1077       \x{660}\x{661}\x{662}ABC
   1078   
   1079 /\p{Lu}/i,utf
   1080     A
   1081     a\x{10a0}B
   1082 \= Expect no match
   1083     a
   1084     \x{1d00}
   1085 
   1086 /\p{^Lu}/i,utf
   1087     1234
   1088 \= Expect no match
   1089     ABC
   1090 
   1091 /\P{Lu}/i,utf
   1092     1234
   1093 \= Expect no match
   1094     ABC
   1095 
   1096 /(?<=A\p{Nd})XYZ/utf
   1097     A2XYZ
   1098     123A5XYZPQR
   1099     ABA\x{660}XYZpqr
   1100 \= Expect no match
   1101     AXYZ
   1102     XYZ
   1103     
   1104 /(?<!\pL)XYZ/utf
   1105     1XYZ
   1106     AB=XYZ..
   1107     XYZ
   1108 \= Expect no match
   1109     WXYZ
   1110 
   1111 /[\p{Nd}]/utf
   1112     1234
   1113 
   1114 /[\p{Nd}+-]+/utf
   1115     1234
   1116     12-34
   1117     12+\x{661}-34
   1118 \= Expect no match
   1119     abcd
   1120 
   1121 /[\P{Nd}]+/utf
   1122     abcd
   1123 \= Expect no match
   1124     1234
   1125 
   1126 /\D+/utf,no_auto_possess
   1127     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   1128 \= Expect no match
   1129     11111111111111111111111111111111111111111111111111111111111111111111111
   1130      
   1131 /\P{Nd}+/utf,no_auto_possess
   1132     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   1133 \= Expect no match
   1134     11111111111111111111111111111111111111111111111111111111111111111111111
   1135 
   1136 /[\D]+/utf,no_auto_possess
   1137     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   1138 \= Expect no match
   1139     11111111111111111111111111111111111111111111111111111111111111111111111
   1140 
   1141 /[\P{Nd}]+/utf,no_auto_possess
   1142     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   1143 \= Expect no match
   1144     11111111111111111111111111111111111111111111111111111111111111111111111
   1145 
   1146 /[\D\P{Nd}]+/utf,no_auto_possess
   1147     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   1148 \= Expect no match
   1149     11111111111111111111111111111111111111111111111111111111111111111111111
   1150 
   1151 /\pL/utf
   1152     a
   1153     A
   1154 
   1155 /\pL/i,utf
   1156     a
   1157     A
   1158     
   1159 /\p{Lu}/utf
   1160     A
   1161     aZ
   1162 \= Expect no match
   1163     abc
   1164 
   1165 /\p{Lu}/i,utf
   1166     A
   1167     aZ
   1168 \= Expect no match
   1169     abc
   1170 
   1171 /\p{Ll}/utf
   1172     a
   1173     Az
   1174 \= Expect no match
   1175     ABC
   1176 
   1177 /\p{Ll}/i,utf
   1178     a
   1179     Az
   1180 \= Expect no match
   1181     ABC
   1182 
   1183 /^\x{c0}$/i,utf
   1184     \x{c0}
   1185     \x{e0}
   1186 
   1187 /^\x{e0}$/i,utf
   1188     \x{c0}
   1189     \x{e0}
   1190 
   1191 /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf
   1192     A\x{391}\x{10427}\x{ff3a}\x{1fb0}
   1193 \= Expect no match
   1194     a\x{391}\x{10427}\x{ff3a}\x{1fb0}
   1195     A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
   1196     A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
   1197     A\x{391}\x{10427}\x{ff5a}\x{1fb0}
   1198     A\x{391}\x{10427}\x{ff3a}\x{1fb8}
   1199 
   1200 /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf
   1201     A\x{391}\x{10427}\x{ff3a}\x{1fb0}
   1202     a\x{391}\x{10427}\x{ff3a}\x{1fb0}
   1203     A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
   1204     A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
   1205     A\x{391}\x{10427}\x{ff5a}\x{1fb0}
   1206     A\x{391}\x{10427}\x{ff3a}\x{1fb8}
   1207 
   1208 /\x{391}+/i,utf
   1209     \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}
   1210 
   1211 /\x{391}{3,5}(.)/i,utf
   1212     \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
   1213 
   1214 /\x{391}{3,5}?(.)/i,utf
   1215     \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
   1216 
   1217 /[\x{391}\x{ff3a}]/i,utf
   1218     \x{391}
   1219     \x{ff3a}
   1220     \x{3b1}
   1221     \x{ff5a}
   1222     
   1223 /[\x{c0}\x{391}]/i,utf
   1224     \x{c0}
   1225     \x{e0}
   1226 
   1227 /[\x{105}-\x{109}]/i,utf
   1228     \x{104}
   1229     \x{105}
   1230     \x{109}
   1231 \= Expect no match
   1232     \x{100}
   1233     \x{10a}
   1234     
   1235 /[z-\x{100}]/i,utf
   1236     Z
   1237     z
   1238     \x{39c}
   1239     \x{178}
   1240     |
   1241     \x{80}
   1242     \x{ff}
   1243     \x{100}
   1244     \x{101}
   1245 \= Expect no match
   1246     \x{102}
   1247     Y
   1248     y
   1249 
   1250 /[z-\x{100}]/i,utf
   1251 
   1252 /^\X/utf
   1253     A
   1254     A\x{300}BC
   1255     A\x{300}\x{301}\x{302}BC
   1256     \x{300}
   1257 
   1258 /^(\X*)C/utf
   1259     A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
   1260     A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
   1261 
   1262 /^(\X*?)C/utf
   1263     A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
   1264     A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
   1265 
   1266 /^(\X*)(.)/utf
   1267     A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
   1268     A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
   1269 
   1270 /^(\X*?)(.)/utf
   1271     A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
   1272     A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
   1273 
   1274 /^\X(.)/utf
   1275 \= Expect no match
   1276     A\x{300}\x{301}\x{302}
   1277 
   1278 /^\X{2,3}(.)/utf
   1279     A\x{300}\x{301}B\x{300}X
   1280     A\x{300}\x{301}B\x{300}C\x{300}\x{301}
   1281     A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
   1282     A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
   1283     
   1284 /^\X{2,3}?(.)/utf
   1285     A\x{300}\x{301}B\x{300}X
   1286     A\x{300}\x{301}B\x{300}C\x{300}\x{301}
   1287     A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
   1288     A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
   1289 
   1290 /^\pN{2,3}X/
   1291     12X
   1292     123X
   1293 \= Expect no match
   1294     X
   1295     1X
   1296     1234X
   1297 
   1298 /\x{100}/i,utf
   1299     \x{100}
   1300     \x{101}
   1301     
   1302 /^\p{Han}+/utf
   1303     \x{2e81}\x{3007}\x{2f804}\x{31a0}
   1304 \= Expect no match
   1305     \x{2e7f}
   1306 
   1307 /^\P{Katakana}+/utf
   1308     \x{3105}
   1309 \= Expect no match
   1310     \x{30ff}
   1311 
   1312 /^[\p{Arabic}]/utf
   1313     \x{06e9}
   1314     \x{060b}
   1315 \= Expect no match
   1316     X\x{06e9}
   1317 
   1318 /^[\P{Yi}]/utf
   1319     \x{2f800}
   1320 \= Expect no match
   1321     \x{a014}
   1322     \x{a4c6}
   1323 
   1324 /^\p{Any}X/utf
   1325     AXYZ
   1326     \x{1234}XYZ
   1327 \= Expect no match
   1328     X
   1329     
   1330 /^\P{Any}X/utf
   1331 \= Expect no match
   1332     AX
   1333     
   1334 /^\p{Any}?X/utf
   1335     XYZ
   1336     AXYZ
   1337     \x{1234}XYZ
   1338 \= Expect no match
   1339     ABXYZ
   1340 
   1341 /^\P{Any}?X/utf
   1342     XYZ
   1343 \= Expect no match
   1344     AXYZ
   1345     \x{1234}XYZ
   1346     ABXYZ
   1347 
   1348 /^\p{Any}+X/utf
   1349     AXYZ
   1350     \x{1234}XYZ
   1351     A\x{1234}XYZ
   1352 \= Expect no match
   1353     XYZ
   1354 
   1355 /^\P{Any}+X/utf
   1356 \= Expect no match
   1357     AXYZ
   1358     \x{1234}XYZ
   1359     A\x{1234}XYZ
   1360     XYZ
   1361 
   1362 /^\p{Any}*X/utf
   1363     XYZ
   1364     AXYZ
   1365     \x{1234}XYZ
   1366     A\x{1234}XYZ
   1367 
   1368 /^\P{Any}*X/utf
   1369     XYZ
   1370 \= Expect no match
   1371     AXYZ
   1372     \x{1234}XYZ
   1373     A\x{1234}XYZ
   1374 
   1375 /^[\p{Any}]X/utf
   1376     AXYZ
   1377     \x{1234}XYZ
   1378 \= Expect no match
   1379     X
   1380     
   1381 /^[\P{Any}]X/utf
   1382 \= Expect no match
   1383     AX
   1384     
   1385 /^[\p{Any}]?X/utf
   1386     XYZ
   1387     AXYZ
   1388     \x{1234}XYZ
   1389 \= Expect no match
   1390     ABXYZ
   1391 
   1392 /^[\P{Any}]?X/utf
   1393     XYZ
   1394 \= Expect no match
   1395     AXYZ
   1396     \x{1234}XYZ
   1397     ABXYZ
   1398 
   1399 /^[\p{Any}]+X/utf
   1400     AXYZ
   1401     \x{1234}XYZ
   1402     A\x{1234}XYZ
   1403 \= Expect no match
   1404     XYZ
   1405 
   1406 /^[\P{Any}]+X/utf
   1407 \= Expect no match
   1408     AXYZ
   1409     \x{1234}XYZ
   1410     A\x{1234}XYZ
   1411     XYZ
   1412 
   1413 /^[\p{Any}]*X/utf
   1414     XYZ
   1415     AXYZ
   1416     \x{1234}XYZ
   1417     A\x{1234}XYZ
   1418 
   1419 /^[\P{Any}]*X/utf
   1420     XYZ
   1421 \= Expect no match
   1422     AXYZ
   1423     \x{1234}XYZ
   1424     A\x{1234}XYZ
   1425 
   1426 /^\p{Any}{3,5}?/utf
   1427     abcdefgh
   1428     \x{1234}\n\r\x{3456}xyz
   1429 
   1430 /^\p{Any}{3,5}/utf
   1431     abcdefgh
   1432     \x{1234}\n\r\x{3456}xyz
   1433 
   1434 /^\P{Any}{3,5}?/utf
   1435 \= Expect no match
   1436     abcdefgh
   1437     \x{1234}\n\r\x{3456}xyz
   1438 
   1439 /^\p{L&}X/utf
   1440      AXY
   1441      aXY
   1442      \x{1c5}XY
   1443 \= Expect no match
   1444      \x{1bb}XY
   1445      \x{2b0}XY
   1446      !XY
   1447 
   1448 /^[\p{L&}]X/utf
   1449      AXY
   1450      aXY
   1451      \x{1c5}XY
   1452 \= Expect no match
   1453      \x{1bb}XY
   1454      \x{2b0}XY
   1455      !XY
   1456 
   1457 /^\p{L&}+X/utf
   1458      AXY
   1459      aXY
   1460      AbcdeXyz
   1461      \x{1c5}AbXY
   1462      abcDEXypqreXlmn
   1463 \= Expect no match
   1464      \x{1bb}XY
   1465      \x{2b0}XY
   1466      !XY
   1467 
   1468 /^[\p{L&}]+X/utf
   1469      AXY
   1470      aXY
   1471      AbcdeXyz
   1472      \x{1c5}AbXY
   1473      abcDEXypqreXlmn
   1474 \= Expect no match
   1475      \x{1bb}XY
   1476      \x{2b0}XY
   1477      !XY
   1478 
   1479 /^\p{L&}+?X/utf
   1480      AXY
   1481      aXY
   1482      AbcdeXyz
   1483      \x{1c5}AbXY
   1484      abcDEXypqreXlmn
   1485 \= Expect no match
   1486      \x{1bb}XY
   1487      \x{2b0}XY
   1488      !XY
   1489 
   1490 /^[\p{L&}]+?X/utf
   1491      AXY
   1492      aXY
   1493      AbcdeXyz
   1494      \x{1c5}AbXY
   1495      abcDEXypqreXlmn
   1496 \= Expect no match
   1497      \x{1bb}XY
   1498      \x{2b0}XY
   1499      !XY
   1500 
   1501 /^\P{L&}X/utf
   1502      !XY
   1503      \x{1bb}XY
   1504      \x{2b0}XY
   1505 \= Expect no match
   1506      \x{1c5}XY
   1507      AXY
   1508 
   1509 /^[\P{L&}]X/utf
   1510      !XY
   1511      \x{1bb}XY
   1512      \x{2b0}XY
   1513 \= Expect no match
   1514      \x{1c5}XY
   1515      AXY
   1516 
   1517 /^\x{023a}+?(\x{0130}+)/i,utf
   1518   \x{023a}\x{2c65}\x{0130}
   1519   
   1520 /^\x{023a}+([^X])/i,utf
   1521   \x{023a}\x{2c65}X
   1522  
   1523 /\x{c0}+\x{116}+/i,utf
   1524     \x{c0}\x{e0}\x{116}\x{117}
   1525 
   1526 /[\x{c0}\x{116}]+/i,utf
   1527     \x{c0}\x{e0}\x{116}\x{117}
   1528 
   1529 # Check property support in non-UTF-8 mode
   1530  
   1531 /\p{L}{4}/
   1532     123abcdefg
   1533     123abc\xc4\xc5zz
   1534 
   1535 /\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}/utf
   1536     \x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}====
   1537 
   1538 /\x{a77d}\x{1d79}/i,utf
   1539     \x{a77d}\x{1d79}
   1540     \x{1d79}\x{a77d}
   1541 
   1542 /\x{a77d}\x{1d79}/utf
   1543     \x{a77d}\x{1d79}
   1544 \= Expect no match
   1545     \x{1d79}\x{a77d}
   1546 
   1547 /^\p{Xan}/utf
   1548     ABCD
   1549     1234
   1550     \x{6ca}
   1551     \x{a6c}
   1552     \x{10a7}
   1553 \= Expect no match
   1554     _ABC
   1555 
   1556 /^\p{Xan}+/utf
   1557     ABCD1234\x{6ca}\x{a6c}\x{10a7}_
   1558 \= Expect no match
   1559     _ABC
   1560 
   1561 /^\p{Xan}*/utf
   1562     ABCD1234\x{6ca}\x{a6c}\x{10a7}_
   1563     
   1564 /^\p{Xan}{2,9}/utf
   1565     ABCD1234\x{6ca}\x{a6c}\x{10a7}_
   1566     
   1567 /^[\p{Xan}]/utf
   1568     ABCD1234_
   1569     1234abcd_
   1570     \x{6ca}
   1571     \x{a6c}
   1572     \x{10a7}
   1573 \= Expect no match
   1574     _ABC
   1575  
   1576 /^[\p{Xan}]+/utf
   1577     ABCD1234\x{6ca}\x{a6c}\x{10a7}_
   1578 \= Expect no match
   1579     _ABC
   1580 
   1581 /^>\p{Xsp}/utf
   1582     >\x{1680}\x{2028}\x{0b}
   1583 \= Expect no match
   1584     \x{0b}
   1585 
   1586 /^>\p{Xsp}+/utf,no_auto_possess
   1587     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
   1588 
   1589 /^>\p{Xsp}*/utf,no_auto_possess
   1590     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
   1591     
   1592 /^>\p{Xsp}{2,9}/utf,no_auto_possess
   1593     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
   1594     
   1595 /^>[\p{Xsp}]/utf,no_auto_possess
   1596     >\x{2028}\x{0b}
   1597  
   1598 /^>[\p{Xsp}]+/utf,no_auto_possess
   1599     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
   1600 
   1601 /^>\p{Xps}/utf
   1602     >\x{1680}\x{2028}\x{0b}
   1603     >\x{a0}
   1604 \= Expect no match
   1605     \x{0b}
   1606 
   1607 /^>\p{Xps}+/utf
   1608     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
   1609 
   1610 /^>\p{Xps}+?/utf
   1611     >\x{1680}\x{2028}\x{0b}
   1612 
   1613 /^>\p{Xps}*/utf
   1614     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
   1615     
   1616 /^>\p{Xps}{2,9}/utf
   1617     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
   1618     
   1619 /^>\p{Xps}{2,9}?/utf
   1620     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
   1621     
   1622 /^>[\p{Xps}]/utf
   1623     >\x{2028}\x{0b}
   1624  
   1625 /^>[\p{Xps}]+/utf
   1626     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
   1627 
   1628 /^\p{Xwd}/utf
   1629     ABCD
   1630     1234
   1631     \x{6ca}
   1632     \x{a6c}
   1633     \x{10a7}
   1634     _ABC
   1635 \= Expect no match
   1636     []
   1637 
   1638 /^\p{Xwd}+/utf
   1639     ABCD1234\x{6ca}\x{a6c}\x{10a7}_
   1640 
   1641 /^\p{Xwd}*/utf
   1642     ABCD1234\x{6ca}\x{a6c}\x{10a7}_
   1643     
   1644 /^\p{Xwd}{2,9}/utf
   1645     A_12\x{6ca}\x{a6c}\x{10a7}
   1646     
   1647 /^[\p{Xwd}]/utf
   1648     ABCD1234_
   1649     1234abcd_
   1650     \x{6ca}
   1651     \x{a6c}
   1652     \x{10a7}
   1653     _ABC
   1654 \= Expect no match
   1655     []
   1656  
   1657 /^[\p{Xwd}]+/utf
   1658     ABCD1234\x{6ca}\x{a6c}\x{10a7}_
   1659 
   1660 # Unicode properties for \b abd \B 
   1661 
   1662 /\b...\B/utf,ucp
   1663     abc_
   1664     \x{37e}abc\x{376}
   1665     \x{37e}\x{376}\x{371}\x{393}\x{394}
   1666     !\x{c0}++\x{c1}\x{c2}
   1667     !\x{c0}+++++
   1668 
   1669 # Without PCRE_UCP, non-ASCII always fail, even if < 256  
   1670 
   1671 /\b...\B/utf
   1672     abc_
   1673 \= Expect no match
   1674     \x{37e}abc\x{376}
   1675     \x{37e}\x{376}\x{371}\x{393}\x{394}
   1676     !\x{c0}++\x{c1}\x{c2}
   1677     !\x{c0}+++++
   1678 
   1679 # With PCRE_UCP, non-UTF8 chars that are < 256 still check properties  
   1680 
   1681 /\b...\B/ucp
   1682     abc_
   1683     !\x{c0}++\x{c1}\x{c2}
   1684     !\x{c0}+++++
   1685     
   1686 # Caseless single negated characters > 127 need UCP support 
   1687 
   1688 /[^\x{100}]/i,utf
   1689     \x{100}\x{101}X
   1690 
   1691 /[^\x{100}]+/i,utf
   1692     \x{100}\x{101}XX
   1693 
   1694 /^\X/utf
   1695     A\=ps
   1696     A\=ph
   1697     A\x{300}\x{301}\=ps
   1698     A\x{300}\x{301}\=ph
   1699     A\x{301}\=ps
   1700     A\x{301}\=ph
   1701     
   1702 /^\X{2,3}/utf
   1703     A\=ps
   1704     A\=ph
   1705     AA\=ps
   1706     AA\=ph
   1707     A\x{300}\x{301}\=ps
   1708     A\x{300}\x{301}\=ph
   1709     A\x{300}\x{301}A\x{300}\x{301}\=ps
   1710     A\x{300}\x{301}A\x{300}\x{301}\=ph
   1711 
   1712 /^\X{2}/utf
   1713     AA\=ps
   1714     AA\=ph
   1715     A\x{300}\x{301}A\x{300}\x{301}\=ps
   1716     A\x{300}\x{301}A\x{300}\x{301}\=ph
   1717     
   1718 /^\X+/utf
   1719     AA\=ps
   1720     AA\=ph
   1721 
   1722 /^\X+?Z/utf
   1723     AA\=ps
   1724     AA\=ph
   1725 
   1726 # These are tests for extended grapheme clusters  
   1727 
   1728 /^\X/utf,aftertext
   1729     G\x{34e}\x{34e}X
   1730     \x{34e}\x{34e}X
   1731     \x04X
   1732     \x{1100}X
   1733     \x{1100}\x{34e}X
   1734     \x{1b04}\x{1b04}X
   1735 \= These match up to the roman letters
   1736     \x{1111}\x{1111}L,L
   1737     \x{1111}\x{1111}\x{1169}L,L,V
   1738     \x{1111}\x{ae4c}L, LV
   1739     \x{1111}\x{ad89}L, LVT
   1740     \x{1111}\x{ae4c}\x{1169}L, LV, V
   1741     \x{1111}\x{ae4c}\x{1169}\x{1169}L, LV, V, V
   1742     \x{1111}\x{ae4c}\x{1169}\x{11fe}L, LV, V, T
   1743     \x{1111}\x{ad89}\x{11fe}L, LVT, T
   1744     \x{1111}\x{ad89}\x{11fe}\x{11fe}L, LVT, T, T
   1745     \x{ad89}\x{11fe}\x{11fe}LVT, T, T
   1746 \= These match just the first codepoint (invalid sequence)
   1747     \x{1111}\x{11fe}L, T
   1748     \x{ae4c}\x{1111}LV, L
   1749     \x{ae4c}\x{ae4c}LV, LV
   1750     \x{ae4c}\x{ad89}LV, LVT
   1751     \x{1169}\x{1111}V, L
   1752     \x{1169}\x{ae4c}V, LV
   1753     \x{1169}\x{ad89}V, LVT
   1754     \x{ad89}\x{1111}LVT, L
   1755     \x{ad89}\x{1169}LVT, V
   1756     \x{ad89}\x{ae4c}LVT, LV
   1757     \x{ad89}\x{ad89}LVT, LVT
   1758     \x{11fe}\x{1111}T, L
   1759     \x{11fe}\x{1169}T, V
   1760     \x{11fe}\x{ae4c}T, LV
   1761     \x{11fe}\x{ad89}T, LVT
   1762 \= Test extend and spacing mark
   1763     \x{1111}\x{ae4c}\x{0711}L, LV, extend
   1764     \x{1111}\x{ae4c}\x{1b04}L, LV, spacing mark
   1765     \x{1111}\x{ae4c}\x{1b04}\x{0711}\x{1b04}L, LV, spacing mark, extend, spacing mark
   1766 \= Test CR, LF, and control
   1767     \x0d\x{0711}CR, extend
   1768     \x0d\x{1b04}CR, spacingmark
   1769     \x0a\x{0711}LF, extend
   1770     \x0a\x{1b04}LF, spacingmark
   1771     \x0b\x{0711}Control, extend
   1772     \x09\x{1b04}Control, spacingmark
   1773 \= There are no Prepend characters, so we can't test Prepend, CR
   1774     
   1775 /^(?>\X{2})X/utf,aftertext
   1776     \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
   1777     
   1778 /^\X{2,4}X/utf,aftertext
   1779     \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
   1780     \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
   1781     \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
   1782 
   1783 /^\X{2,4}?X/utf,aftertext
   1784     \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
   1785     \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
   1786     \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
   1787 
   1788 /\x{1e9e}+/i,utf
   1789     \x{1e9e}\x{00df}
   1790 
   1791 /[z\x{1e9e}]+/i,utf
   1792     \x{1e9e}\x{00df}
   1793 
   1794 /\x{00df}+/i,utf
   1795     \x{1e9e}\x{00df}
   1796 
   1797 /[z\x{00df}]+/i,utf
   1798     \x{1e9e}\x{00df}
   1799 
   1800 /\x{1f88}+/i,utf
   1801     \x{1f88}\x{1f80}
   1802 
   1803 /[z\x{1f88}]+/i,utf
   1804     \x{1f88}\x{1f80}
   1805 
   1806 # Perl matches these 
   1807 
   1808 /\x{00b5}+/i,utf
   1809     \x{00b5}\x{039c}\x{03bc}
   1810 
   1811 /\x{039c}+/i,utf
   1812     \x{00b5}\x{039c}\x{03bc}
   1813 
   1814 /\x{03bc}+/i,utf
   1815     \x{00b5}\x{039c}\x{03bc}
   1816 
   1817 
   1818 /\x{00c5}+/i,utf
   1819     \x{00c5}\x{00e5}\x{212b}
   1820 
   1821 /\x{00e5}+/i,utf
   1822     \x{00c5}\x{00e5}\x{212b}
   1823 
   1824 /\x{212b}+/i,utf
   1825     \x{00c5}\x{00e5}\x{212b}
   1826 
   1827 /\x{01c4}+/i,utf
   1828     \x{01c4}\x{01c5}\x{01c6}
   1829 
   1830 /\x{01c5}+/i,utf
   1831     \x{01c4}\x{01c5}\x{01c6}
   1832 
   1833 /\x{01c6}+/i,utf
   1834     \x{01c4}\x{01c5}\x{01c6}
   1835 
   1836 /\x{01c7}+/i,utf
   1837     \x{01c7}\x{01c8}\x{01c9}
   1838 
   1839 /\x{01c8}+/i,utf
   1840     \x{01c7}\x{01c8}\x{01c9}
   1841 
   1842 /\x{01c9}+/i,utf
   1843     \x{01c7}\x{01c8}\x{01c9}
   1844 
   1845 
   1846 /\x{01ca}+/i,utf
   1847     \x{01ca}\x{01cb}\x{01cc}
   1848 
   1849 /\x{01cb}+/i,utf
   1850     \x{01ca}\x{01cb}\x{01cc}
   1851 
   1852 /\x{01cc}+/i,utf
   1853     \x{01ca}\x{01cb}\x{01cc}
   1854 
   1855 /\x{01f1}+/i,utf
   1856     \x{01f1}\x{01f2}\x{01f3}
   1857 
   1858 /\x{01f2}+/i,utf
   1859     \x{01f1}\x{01f2}\x{01f3}
   1860 
   1861 /\x{01f3}+/i,utf
   1862     \x{01f1}\x{01f2}\x{01f3}
   1863 
   1864 /\x{0345}+/i,utf
   1865     \x{0345}\x{0399}\x{03b9}\x{1fbe}
   1866 
   1867 /\x{0399}+/i,utf
   1868     \x{0345}\x{0399}\x{03b9}\x{1fbe}
   1869 
   1870 /\x{03b9}+/i,utf
   1871     \x{0345}\x{0399}\x{03b9}\x{1fbe}
   1872 
   1873 /\x{1fbe}+/i,utf
   1874     \x{0345}\x{0399}\x{03b9}\x{1fbe}
   1875 
   1876 /\x{0392}+/i,utf
   1877     \x{0392}\x{03b2}\x{03d0}
   1878 
   1879 /\x{03b2}+/i,utf
   1880     \x{0392}\x{03b2}\x{03d0}
   1881 
   1882 /\x{03d0}+/i,utf
   1883     \x{0392}\x{03b2}\x{03d0}
   1884     
   1885 
   1886 /\x{0395}+/i,utf
   1887     \x{0395}\x{03b5}\x{03f5}
   1888 
   1889 /\x{03b5}+/i,utf
   1890     \x{0395}\x{03b5}\x{03f5}
   1891 
   1892 /\x{03f5}+/i,utf
   1893     \x{0395}\x{03b5}\x{03f5}
   1894 
   1895 /\x{0398}+/i,utf
   1896     \x{0398}\x{03b8}\x{03d1}\x{03f4}
   1897 
   1898 /\x{03b8}+/i,utf
   1899     \x{0398}\x{03b8}\x{03d1}\x{03f4}
   1900 
   1901 /\x{03d1}+/i,utf
   1902     \x{0398}\x{03b8}\x{03d1}\x{03f4}
   1903 
   1904 /\x{03f4}+/i,utf
   1905     \x{0398}\x{03b8}\x{03d1}\x{03f4}
   1906 
   1907 /\x{039a}+/i,utf
   1908     \x{039a}\x{03ba}\x{03f0}
   1909 
   1910 /\x{03ba}+/i,utf
   1911     \x{039a}\x{03ba}\x{03f0}
   1912 
   1913 /\x{03f0}+/i,utf
   1914     \x{039a}\x{03ba}\x{03f0}
   1915     
   1916 /\x{03a0}+/i,utf
   1917     \x{03a0}\x{03c0}\x{03d6}
   1918 
   1919 /\x{03c0}+/i,utf
   1920     \x{03a0}\x{03c0}\x{03d6}
   1921 
   1922 /\x{03d6}+/i,utf
   1923     \x{03a0}\x{03c0}\x{03d6}
   1924 
   1925 /\x{03a1}+/i,utf
   1926     \x{03a1}\x{03c1}\x{03f1}
   1927 
   1928 /\x{03c1}+/i,utf
   1929     \x{03a1}\x{03c1}\x{03f1}
   1930 
   1931 /\x{03f1}+/i,utf
   1932     \x{03a1}\x{03c1}\x{03f1}
   1933 
   1934 /\x{03a3}+/i,utf
   1935     \x{03A3}\x{03C2}\x{03C3}
   1936 
   1937 /\x{03c2}+/i,utf
   1938     \x{03A3}\x{03C2}\x{03C3}
   1939 
   1940 /\x{03c3}+/i,utf
   1941     \x{03A3}\x{03C2}\x{03C3}
   1942 
   1943 /\x{03a6}+/i,utf
   1944     \x{03a6}\x{03c6}\x{03d5}
   1945 
   1946 /\x{03c6}+/i,utf
   1947     \x{03a6}\x{03c6}\x{03d5}
   1948 
   1949 /\x{03d5}+/i,utf
   1950     \x{03a6}\x{03c6}\x{03d5}
   1951 
   1952 /\x{03c9}+/i,utf
   1953     \x{03c9}\x{03a9}\x{2126}
   1954 
   1955 /\x{03a9}+/i,utf
   1956     \x{03c9}\x{03a9}\x{2126}
   1957 
   1958 /\x{2126}+/i,utf
   1959     \x{03c9}\x{03a9}\x{2126}
   1960     
   1961 /\x{1e60}+/i,utf
   1962     \x{1e60}\x{1e61}\x{1e9b}
   1963 
   1964 /\x{1e61}+/i,utf
   1965     \x{1e60}\x{1e61}\x{1e9b}
   1966 
   1967 /\x{1e9b}+/i,utf
   1968     \x{1e60}\x{1e61}\x{1e9b}
   1969     
   1970 /\x{1e9e}+/i,utf
   1971     \x{1e9e}\x{00df}
   1972 
   1973 /\x{00df}+/i,utf
   1974     \x{1e9e}\x{00df}
   1975     
   1976 /\x{1f88}+/i,utf
   1977     \x{1f88}\x{1f80}
   1978 
   1979 /\x{1f80}+/i,utf
   1980     \x{1f88}\x{1f80}
   1981 
   1982 /\x{004b}+/i,utf
   1983     \x{004b}\x{006b}\x{212a}
   1984 
   1985 /\x{006b}+/i,utf
   1986     \x{004b}\x{006b}\x{212a}
   1987 
   1988 /\x{212a}+/i,utf
   1989     \x{004b}\x{006b}\x{212a}
   1990 
   1991 /\x{0053}+/i,utf
   1992     \x{0053}\x{0073}\x{017f}
   1993 
   1994 /\x{0073}+/i,utf
   1995     \x{0053}\x{0073}\x{017f}
   1996 
   1997 /\x{017f}+/i,utf
   1998     \x{0053}\x{0073}\x{017f}
   1999 
   2000 /ist/i,utf
   2001 \= Expect no match
   2002     ikt
   2003 
   2004 /is+t/i,utf
   2005     iSs\x{17f}t
   2006 \= Expect no match
   2007     ikt
   2008 
   2009 /is+?t/i,utf
   2010 \= Expect no match
   2011     ikt
   2012 
   2013 /is?t/i,utf
   2014 \= Expect no match
   2015     ikt
   2016 
   2017 /is{2}t/i,utf
   2018 \= Expect no match
   2019     iskt
   2020 
   2021 /^\p{Xuc}/utf
   2022     $abc
   2023     @abc
   2024     `abc
   2025     \x{1234}abc
   2026 \= Expect no match
   2027     abc
   2028 
   2029 /^\p{Xuc}+/utf
   2030     $@`\x{a0}\x{1234}\x{e000}**
   2031 \= Expect no match
   2032     \x{9f}
   2033 
   2034 /^\p{Xuc}+?/utf
   2035     $@`\x{a0}\x{1234}\x{e000}**
   2036 \= Expect no match
   2037     \x{9f}
   2038 
   2039 /^\p{Xuc}+?\*/utf
   2040     $@`\x{a0}\x{1234}\x{e000}**
   2041 \= Expect no match
   2042     \x{9f}
   2043 
   2044 /^\p{Xuc}++/utf
   2045     $@`\x{a0}\x{1234}\x{e000}**
   2046 \= Expect no match
   2047     \x{9f}
   2048 
   2049 /^\p{Xuc}{3,5}/utf
   2050     $@`\x{a0}\x{1234}\x{e000}**
   2051 \= Expect no match
   2052     \x{9f}
   2053 
   2054 /^\p{Xuc}{3,5}?/utf
   2055     $@`\x{a0}\x{1234}\x{e000}**
   2056 \= Expect no match
   2057     \x{9f}
   2058 
   2059 /^[\p{Xuc}]/utf
   2060     $@`\x{a0}\x{1234}\x{e000}**
   2061 \= Expect no match
   2062     \x{9f}
   2063 
   2064 /^[\p{Xuc}]+/utf
   2065     $@`\x{a0}\x{1234}\x{e000}**
   2066 \= Expect no match
   2067     \x{9f}
   2068 
   2069 /^\P{Xuc}/utf
   2070     abc
   2071 \= Expect no match
   2072     $abc
   2073     @abc
   2074     `abc
   2075     \x{1234}abc
   2076 
   2077 /^[\P{Xuc}]/utf
   2078     abc
   2079 \= Expect no match
   2080     $abc
   2081     @abc
   2082     `abc
   2083     \x{1234}abc
   2084 
   2085 /^A\s+Z/utf,ucp
   2086     A\x{2005}Z
   2087     A\x{85}\x{180e}\x{2005}Z
   2088 
   2089 /^A[\s]+Z/utf,ucp
   2090     A\x{2005}Z
   2091     A\x{85}\x{180e}\x{2005}Z
   2092 
   2093 /(?<=\x{100})\x{200}(?=\x{300})/utf,allusedtext
   2094     \x{100}\x{200}\x{300}
   2095 
   2096 # End of testinput7
   2097