1/-- These tests for Unicode property support test PCRE's API and show some of 2 the compiled code. They are not Perl-compatible. --/ 3 4/[\p{L}]/DZ 5------------------------------------------------------------------ 6 Bra 7 [\p{L}] 8 Ket 9 End 10------------------------------------------------------------------ 11Capturing subpattern count = 0 12No options 13No first char 14No need char 15 16/[\p{^L}]/DZ 17------------------------------------------------------------------ 18 Bra 19 [\P{L}] 20 Ket 21 End 22------------------------------------------------------------------ 23Capturing subpattern count = 0 24No options 25No first char 26No need char 27 28/[\P{L}]/DZ 29------------------------------------------------------------------ 30 Bra 31 [\P{L}] 32 Ket 33 End 34------------------------------------------------------------------ 35Capturing subpattern count = 0 36No options 37No first char 38No need char 39 40/[\P{^L}]/DZ 41------------------------------------------------------------------ 42 Bra 43 [\p{L}] 44 Ket 45 End 46------------------------------------------------------------------ 47Capturing subpattern count = 0 48No options 49No first char 50No need char 51 52/[abc\p{L}\x{0660}]/8DZ 53------------------------------------------------------------------ 54 Bra 55 [a-c\p{L}\x{660}] 56 Ket 57 End 58------------------------------------------------------------------ 59Capturing subpattern count = 0 60Options: utf 61No first char 62No need char 63 64/[\p{Nd}]/8DZ 65------------------------------------------------------------------ 66 Bra 67 [\p{Nd}] 68 Ket 69 End 70------------------------------------------------------------------ 71Capturing subpattern count = 0 72Options: utf 73No first char 74No need char 75 1234 76 0: 1 77 78/[\p{Nd}+-]+/8DZ 79------------------------------------------------------------------ 80 Bra 81 [+\-\p{Nd}]++ 82 Ket 83 End 84------------------------------------------------------------------ 85Capturing subpattern count = 0 86Options: utf 87No first char 88No need char 89 1234 90 0: 1234 91 12-34 92 0: 12-34 93 12+\x{661}-34 94 0: 12+\x{661}-34 95 ** Failers 96No match 97 abcd 98No match 99 100/[\x{105}-\x{109}]/8iDZ 101------------------------------------------------------------------ 102 Bra 103 [\x{104}-\x{109}] 104 Ket 105 End 106------------------------------------------------------------------ 107Capturing subpattern count = 0 108Options: caseless utf 109No first char 110No need char 111 \x{104} 112 0: \x{104} 113 \x{105} 114 0: \x{105} 115 \x{109} 116 0: \x{109} 117 ** Failers 118No match 119 \x{100} 120No match 121 \x{10a} 122No match 123 124/[z-\x{100}]/8iDZ 125------------------------------------------------------------------ 126 Bra 127 [Zz-\xff\x{39c}\x{3bc}\x{212b}\x{1e9e}\x{212b}\x{178}\x{100}-\x{101}] 128 Ket 129 End 130------------------------------------------------------------------ 131Capturing subpattern count = 0 132Options: caseless utf 133No first char 134No need char 135 Z 136 0: Z 137 z 138 0: z 139 \x{39c} 140 0: \x{39c} 141 \x{178} 142 0: \x{178} 143 | 144 0: | 145 \x{80} 146 0: \x{80} 147 \x{ff} 148 0: \x{ff} 149 \x{100} 150 0: \x{100} 151 \x{101} 152 0: \x{101} 153 ** Failers 154No match 155 \x{102} 156No match 157 Y 158No match 159 y 160No match 161 162/[z-\x{100}]/8DZi 163------------------------------------------------------------------ 164 Bra 165 [Zz-\xff\x{39c}\x{3bc}\x{212b}\x{1e9e}\x{212b}\x{178}\x{100}-\x{101}] 166 Ket 167 End 168------------------------------------------------------------------ 169Capturing subpattern count = 0 170Options: caseless utf 171No first char 172No need char 173 174/(?:[\PPa*]*){8,}/ 175 176/[\P{Any}]/BZ 177------------------------------------------------------------------ 178 Bra 179 [\P{Any}] 180 Ket 181 End 182------------------------------------------------------------------ 183 184/[\P{Any}\E]/BZ 185------------------------------------------------------------------ 186 Bra 187 [\P{Any}] 188 Ket 189 End 190------------------------------------------------------------------ 191 192/(\P{Yi}+\277)/ 193 194/(\P{Yi}+\277)?/ 195 196/(?<=\P{Yi}{3}A)X/ 197 198/\p{Yi}+(\P{Yi}+)(?1)/ 199 200/(\P{Yi}{2}\277)?/ 201 202/[\P{Yi}A]/ 203 204/[\P{Yi}\P{Yi}\P{Yi}A]/ 205 206/[^\P{Yi}A]/ 207 208/[^\P{Yi}\P{Yi}\P{Yi}A]/ 209 210/(\P{Yi}*\277)*/ 211 212/(\P{Yi}*?\277)*/ 213 214/(\p{Yi}*+\277)*/ 215 216/(\P{Yi}?\277)*/ 217 218/(\P{Yi}??\277)*/ 219 220/(\p{Yi}?+\277)*/ 221 222/(\P{Yi}{0,3}\277)*/ 223 224/(\P{Yi}{0,3}?\277)*/ 225 226/(\p{Yi}{0,3}+\277)*/ 227 228/\p{Zl}{2,3}+/8BZ 229------------------------------------------------------------------ 230 Bra 231 prop Zl {2} 232 prop Zl ?+ 233 Ket 234 End 235------------------------------------------------------------------ 236 237 0: \x{2028}\x{2028} 238 \x{2028}\x{2028}\x{2028} 239 0: \x{2028}\x{2028}\x{2028} 240 241/\p{Zl}/8BZ 242------------------------------------------------------------------ 243 Bra 244 prop Zl 245 Ket 246 End 247------------------------------------------------------------------ 248 249/\p{Lu}{3}+/8BZ 250------------------------------------------------------------------ 251 Bra 252 prop Lu {3} 253 Ket 254 End 255------------------------------------------------------------------ 256 257/\pL{2}+/8BZ 258------------------------------------------------------------------ 259 Bra 260 prop L {2} 261 Ket 262 End 263------------------------------------------------------------------ 264 265/\p{Cc}{2}+/8BZ 266------------------------------------------------------------------ 267 Bra 268 prop Cc {2} 269 Ket 270 End 271------------------------------------------------------------------ 272 273/^\p{Cf}/8 274 \x{180e} 275 0: \x{180e} 276 \x{061c} 277 0: \x{61c} 278 \x{2066} 279 0: \x{2066} 280 \x{2067} 281 0: \x{2067} 282 \x{2068} 283 0: \x{2068} 284 \x{2069} 285 0: \x{2069} 286 287/^\p{Cs}/8 288 \?\x{dfff} 289 0: \x{dfff} 290 ** Failers 291No match 292 \x{09f} 293No match 294 295/^\p{Mn}/8 296 \x{1a1b} 297 0: \x{1a1b} 298 299/^\p{Pe}/8 300 \x{2309} 301 0: \x{2309} 302 \x{230b} 303 0: \x{230b} 304 305/^\p{Ps}/8 306 \x{2308} 307 0: \x{2308} 308 \x{230a} 309 0: \x{230a} 310 311/^\p{Sc}+/8 312 $\x{a2}\x{a3}\x{a4}\x{a5}\x{a6} 313 0: $\x{a2}\x{a3}\x{a4}\x{a5} 314 \x{9f2} 315 0: \x{9f2} 316 ** Failers 317No match 318 X 319No match 320 \x{2c2} 321No match 322 323/^\p{Zs}/8 324 \ \ 325 0: 326 \x{a0} 327 0: \x{a0} 328 \x{1680} 329 0: \x{1680} 330 \x{2000} 331 0: \x{2000} 332 \x{2001} 333 0: \x{2001} 334 ** Failers 335No match 336 \x{2028} 337No match 338 \x{200d} 339No match 340 341/-- These are here rather than in test 6 because Perl has problems with 342 the negative versions of the properties and behaves has changed how 343 it behaves for caseless matching. --/ 344 345/\p{^Lu}/8i 346 1234 347 0: 1 348 ** Failers 349 0: * 350 ABC 351No match 352 353/\P{Lu}/8i 354 1234 355 0: 1 356 ** Failers 357 0: * 358 ABC 359No match 360 361/\p{Ll}/8i 362 a 363 0: a 364 Az 365 0: z 366 ** Failers 367 0: a 368 ABC 369No match 370 371/\p{Lu}/8i 372 A 373 0: A 374 a\x{10a0}B 375 0: \x{10a0} 376 ** Failers 377 0: F 378 a 379No match 380 \x{1d00} 381No match 382 383/\p{Lu}/8i 384 A 385 0: A 386 aZ 387 0: Z 388 ** Failers 389 0: F 390 abc 391No match 392 393/[\x{c0}\x{391}]/8i 394 \x{c0} 395 0: \x{c0} 396 \x{e0} 397 0: \x{e0} 398 399/-- The next two are special cases where the lengths of the different cases of 400the same character differ. The first went wrong with heap frame storage; the 401second was broken in all cases. --/ 402 403/^\x{023a}+?(\x{0130}+)/8i 404 \x{023a}\x{2c65}\x{0130} 405 0: \x{23a}\x{2c65}\x{130} 406 1: \x{130} 407 408/^\x{023a}+([^X])/8i 409 \x{023a}\x{2c65}X 410 0: \x{23a}\x{2c65} 411 1: \x{2c65} 412 413/\x{c0}+\x{116}+/8i 414 \x{c0}\x{e0}\x{116}\x{117} 415 0: \x{c0}\x{e0}\x{116}\x{117} 416 417/[\x{c0}\x{116}]+/8i 418 \x{c0}\x{e0}\x{116}\x{117} 419 0: \x{c0}\x{e0}\x{116}\x{117} 420 421/(\x{de})\1/8i 422 \x{de}\x{de} 423 0: \x{de}\x{de} 424 1: \x{de} 425 \x{de}\x{fe} 426 0: \x{de}\x{fe} 427 1: \x{de} 428 \x{fe}\x{fe} 429 0: \x{fe}\x{fe} 430 1: \x{fe} 431 \x{fe}\x{de} 432 0: \x{fe}\x{de} 433 1: \x{fe} 434 435/^\x{c0}$/8i 436 \x{c0} 437 0: \x{c0} 438 \x{e0} 439 0: \x{e0} 440 441/^\x{e0}$/8i 442 \x{c0} 443 0: \x{c0} 444 \x{e0} 445 0: \x{e0} 446 447/-- The next two should be Perl-compatible, but it fails to match \x{e0}. PCRE 448will match it only with UCP support, because without that it has no notion 449of case for anything other than the ASCII letters. --/ 450 451/((?i)[\x{c0}])/8 452 \x{c0} 453 0: \x{c0} 454 1: \x{c0} 455 \x{e0} 456 0: \x{e0} 457 1: \x{e0} 458 459/(?i:[\x{c0}])/8 460 \x{c0} 461 0: \x{c0} 462 \x{e0} 463 0: \x{e0} 464 465/-- These are PCRE's extra properties to help with Unicodizing \d etc. --/ 466 467/^\p{Xan}/8 468 ABCD 469 0: A 470 1234 471 0: 1 472 \x{6ca} 473 0: \x{6ca} 474 \x{a6c} 475 0: \x{a6c} 476 \x{10a7} 477 0: \x{10a7} 478 ** Failers 479No match 480 _ABC 481No match 482 483/^\p{Xan}+/8 484 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 485 0: ABCD1234\x{6ca}\x{a6c}\x{10a7} 486 ** Failers 487No match 488 _ABC 489No match 490 491/^\p{Xan}+?/8 492 \x{6ca}\x{a6c}\x{10a7}_ 493 0: \x{6ca} 494 495/^\p{Xan}*/8 496 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 497 0: ABCD1234\x{6ca}\x{a6c}\x{10a7} 498 499/^\p{Xan}{2,9}/8 500 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 501 0: ABCD1234\x{6ca} 502 503/^\p{Xan}{2,9}?/8 504 \x{6ca}\x{a6c}\x{10a7}_ 505 0: \x{6ca}\x{a6c} 506 507/^[\p{Xan}]/8 508 ABCD1234_ 509 0: A 510 1234abcd_ 511 0: 1 512 \x{6ca} 513 0: \x{6ca} 514 \x{a6c} 515 0: \x{a6c} 516 \x{10a7} 517 0: \x{10a7} 518 ** Failers 519No match 520 _ABC 521No match 522 523/^[\p{Xan}]+/8 524 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 525 0: ABCD1234\x{6ca}\x{a6c}\x{10a7} 526 ** Failers 527No match 528 _ABC 529No match 530 531/^>\p{Xsp}/8 532 >\x{1680}\x{2028}\x{0b} 533 0: >\x{1680} 534 >\x{a0} 535 0: >\x{a0} 536 ** Failers 537No match 538 \x{0b} 539No match 540 541/^>\p{Xsp}+/8 542 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 543 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 544 545/^>\p{Xsp}+?/8 546 >\x{1680}\x{2028}\x{0b} 547 0: >\x{1680} 548 549/^>\p{Xsp}*/8 550 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 551 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 552 553/^>\p{Xsp}{2,9}/8 554 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 555 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 556 557/^>\p{Xsp}{2,9}?/8 558 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 559 0: > \x{09} 560 561/^>[\p{Xsp}]/8 562 >\x{2028}\x{0b} 563 0: >\x{2028} 564 565/^>[\p{Xsp}]+/8 566 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 567 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 568 569/^>\p{Xps}/8 570 >\x{1680}\x{2028}\x{0b} 571 0: >\x{1680} 572 >\x{a0} 573 0: >\x{a0} 574 ** Failers 575No match 576 \x{0b} 577No match 578 579/^>\p{Xps}+/8 580 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 581 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 582 583/^>\p{Xps}+?/8 584 >\x{1680}\x{2028}\x{0b} 585 0: >\x{1680} 586 587/^>\p{Xps}*/8 588 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 589 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 590 591/^>\p{Xps}{2,9}/8 592 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 593 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 594 595/^>\p{Xps}{2,9}?/8 596 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 597 0: > \x{09} 598 599/^>[\p{Xps}]/8 600 >\x{2028}\x{0b} 601 0: >\x{2028} 602 603/^>[\p{Xps}]+/8 604 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 605 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 606 607/^\p{Xwd}/8 608 ABCD 609 0: A 610 1234 611 0: 1 612 \x{6ca} 613 0: \x{6ca} 614 \x{a6c} 615 0: \x{a6c} 616 \x{10a7} 617 0: \x{10a7} 618 _ABC 619 0: _ 620 ** Failers 621No match 622 [] 623No match 624 625/^\p{Xwd}+/8 626 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 627 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 628 629/^\p{Xwd}+?/8 630 \x{6ca}\x{a6c}\x{10a7}_ 631 0: \x{6ca} 632 633/^\p{Xwd}*/8 634 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 635 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 636 637/^\p{Xwd}{2,9}/8 638 A_B12\x{6ca}\x{a6c}\x{10a7} 639 0: A_B12\x{6ca}\x{a6c}\x{10a7} 640 641/^\p{Xwd}{2,9}?/8 642 \x{6ca}\x{a6c}\x{10a7}_ 643 0: \x{6ca}\x{a6c} 644 645/^[\p{Xwd}]/8 646 ABCD1234_ 647 0: A 648 1234abcd_ 649 0: 1 650 \x{6ca} 651 0: \x{6ca} 652 \x{a6c} 653 0: \x{a6c} 654 \x{10a7} 655 0: \x{10a7} 656 _ABC 657 0: _ 658 ** Failers 659No match 660 [] 661No match 662 663/^[\p{Xwd}]+/8 664 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 665 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 666 667/-- A check not in UTF-8 mode --/ 668 669/^[\p{Xwd}]+/ 670 ABCD1234_ 671 0: ABCD1234_ 672 673/-- Some negative checks --/ 674 675/^[\P{Xwd}]+/8 676 !.+\x{019}\x{35a}AB 677 0: !.+\x{19}\x{35a} 678 679/^[\p{^Xwd}]+/8 680 !.+\x{019}\x{35a}AB 681 0: !.+\x{19}\x{35a} 682 683/[\D]/WBZ8 684------------------------------------------------------------------ 685 Bra 686 [\P{Nd}] 687 Ket 688 End 689------------------------------------------------------------------ 690 1\x{3c8}2 691 0: \x{3c8} 692 693/[\d]/WBZ8 694------------------------------------------------------------------ 695 Bra 696 [\p{Nd}] 697 Ket 698 End 699------------------------------------------------------------------ 700 >\x{6f4}< 701 0: \x{6f4} 702 703/[\S]/WBZ8 704------------------------------------------------------------------ 705 Bra 706 [\P{Xsp}] 707 Ket 708 End 709------------------------------------------------------------------ 710 \x{1680}\x{6f4}\x{1680} 711 0: \x{6f4} 712 713/[\s]/WBZ8 714------------------------------------------------------------------ 715 Bra 716 [\p{Xsp}] 717 Ket 718 End 719------------------------------------------------------------------ 720 >\x{1680}< 721 0: \x{1680} 722 723/[\W]/WBZ8 724------------------------------------------------------------------ 725 Bra 726 [\P{Xwd}] 727 Ket 728 End 729------------------------------------------------------------------ 730 A\x{1712}B 731 0: \x{1712} 732 733/[\w]/WBZ8 734------------------------------------------------------------------ 735 Bra 736 [\p{Xwd}] 737 Ket 738 End 739------------------------------------------------------------------ 740 >\x{1723}< 741 0: \x{1723} 742 743/\D/WBZ8 744------------------------------------------------------------------ 745 Bra 746 notprop Nd 747 Ket 748 End 749------------------------------------------------------------------ 750 1\x{3c8}2 751 0: \x{3c8} 752 753/\d/WBZ8 754------------------------------------------------------------------ 755 Bra 756 prop Nd 757 Ket 758 End 759------------------------------------------------------------------ 760 >\x{6f4}< 761 0: \x{6f4} 762 763/\S/WBZ8 764------------------------------------------------------------------ 765 Bra 766 notprop Xsp 767 Ket 768 End 769------------------------------------------------------------------ 770 \x{1680}\x{6f4}\x{1680} 771 0: \x{6f4} 772 773/\s/WBZ8 774------------------------------------------------------------------ 775 Bra 776 prop Xsp 777 Ket 778 End 779------------------------------------------------------------------ 780 >\x{1680}> 781 0: \x{1680} 782 783/\W/WBZ8 784------------------------------------------------------------------ 785 Bra 786 notprop Xwd 787 Ket 788 End 789------------------------------------------------------------------ 790 A\x{1712}B 791 0: \x{1712} 792 793/\w/WBZ8 794------------------------------------------------------------------ 795 Bra 796 prop Xwd 797 Ket 798 End 799------------------------------------------------------------------ 800 >\x{1723}< 801 0: \x{1723} 802 803/[[:alpha:]]/WBZ 804------------------------------------------------------------------ 805 Bra 806 [\p{L}] 807 Ket 808 End 809------------------------------------------------------------------ 810 811/[[:lower:]]/WBZ 812------------------------------------------------------------------ 813 Bra 814 [\p{Ll}] 815 Ket 816 End 817------------------------------------------------------------------ 818 819/[[:upper:]]/WBZ 820------------------------------------------------------------------ 821 Bra 822 [\p{Lu}] 823 Ket 824 End 825------------------------------------------------------------------ 826 827/[[:alnum:]]/WBZ 828------------------------------------------------------------------ 829 Bra 830 [\p{Xan}] 831 Ket 832 End 833------------------------------------------------------------------ 834 835/[[:ascii:]]/WBZ 836------------------------------------------------------------------ 837 Bra 838 [\x00-\x7f] 839 Ket 840 End 841------------------------------------------------------------------ 842 843/[[:cntrl:]]/WBZ 844------------------------------------------------------------------ 845 Bra 846 [\x00-\x1f\x7f] 847 Ket 848 End 849------------------------------------------------------------------ 850 851/[[:digit:]]/WBZ 852------------------------------------------------------------------ 853 Bra 854 [\p{Nd}] 855 Ket 856 End 857------------------------------------------------------------------ 858 859/[[:graph:]]/WBZ 860------------------------------------------------------------------ 861 Bra 862 [[:graph:]] 863 Ket 864 End 865------------------------------------------------------------------ 866 867/[[:print:]]/WBZ 868------------------------------------------------------------------ 869 Bra 870 [[:print:]] 871 Ket 872 End 873------------------------------------------------------------------ 874 875/[[:punct:]]/WBZ 876------------------------------------------------------------------ 877 Bra 878 [[:punct:]] 879 Ket 880 End 881------------------------------------------------------------------ 882 883/[[:space:]]/WBZ 884------------------------------------------------------------------ 885 Bra 886 [\p{Xps}] 887 Ket 888 End 889------------------------------------------------------------------ 890 891/[[:word:]]/WBZ 892------------------------------------------------------------------ 893 Bra 894 [\p{Xwd}] 895 Ket 896 End 897------------------------------------------------------------------ 898 899/[[:xdigit:]]/WBZ 900------------------------------------------------------------------ 901 Bra 902 [0-9A-Fa-f] 903 Ket 904 End 905------------------------------------------------------------------ 906 907/-- Unicode properties for \b abd \B --/ 908 909/\b...\B/8W 910 abc_ 911 0: abc 912 \x{37e}abc\x{376} 913 0: abc 914 \x{37e}\x{376}\x{371}\x{393}\x{394} 915 0: \x{376}\x{371}\x{393} 916 !\x{c0}++\x{c1}\x{c2} 917 0: ++\x{c1} 918 !\x{c0}+++++ 919 0: \x{c0}++ 920 921/-- Without PCRE_UCP, non-ASCII always fail, even if < 256 --/ 922 923/\b...\B/8 924 abc_ 925 0: abc 926 ** Failers 927 0: Fai 928 \x{37e}abc\x{376} 929No match 930 \x{37e}\x{376}\x{371}\x{393}\x{394} 931No match 932 !\x{c0}++\x{c1}\x{c2} 933No match 934 !\x{c0}+++++ 935No match 936 937/-- With PCRE_UCP, non-UTF8 chars that are < 256 still check properties --/ 938 939/\b...\B/W 940 abc_ 941 0: abc 942 !\x{c0}++\x{c1}\x{c2} 943 0: ++\xc1 944 !\x{c0}+++++ 945 0: \xc0++ 946 947/-- Some of these are silly, but they check various combinations --/ 948 949/[[:^alpha:][:^cntrl:]]+/8WBZ 950------------------------------------------------------------------ 951 Bra 952 [ -~\x80-\xff\P{L}\x{100}-\x{10ffff}]++ 953 Ket 954 End 955------------------------------------------------------------------ 956 123 957 0: 123 958 abc 959 0: abc 960 961/[[:^cntrl:][:^alpha:]]+/8WBZ 962------------------------------------------------------------------ 963 Bra 964 [ -~\x80-\xff\x{100}-\x{10ffff}\P{L}]++ 965 Ket 966 End 967------------------------------------------------------------------ 968 123 969 0: 123 970 abc 971 0: abc 972 973/[[:alpha:]]+/8WBZ 974------------------------------------------------------------------ 975 Bra 976 [\p{L}]++ 977 Ket 978 End 979------------------------------------------------------------------ 980 abc 981 0: abc 982 983/[[:^alpha:]\S]+/8WBZ 984------------------------------------------------------------------ 985 Bra 986 [\P{L}\P{Xsp}]++ 987 Ket 988 End 989------------------------------------------------------------------ 990 123 991 0: 123 992 abc 993 0: abc 994 995/[^\d]+/8WBZ 996------------------------------------------------------------------ 997 Bra 998 [^\p{Nd}]++ 999 Ket 1000 End 1001------------------------------------------------------------------ 1002 abc123 1003 0: abc 1004 abc\x{123} 1005 0: abc\x{123} 1006 \x{660}abc 1007 0: abc 1008 1009/\p{Lu}+9\p{Lu}+B\p{Lu}+b/BZ 1010------------------------------------------------------------------ 1011 Bra 1012 prop Lu ++ 1013 9 1014 prop Lu + 1015 B 1016 prop Lu ++ 1017 b 1018 Ket 1019 End 1020------------------------------------------------------------------ 1021 1022/\p{^Lu}+9\p{^Lu}+B\p{^Lu}+b/BZ 1023------------------------------------------------------------------ 1024 Bra 1025 notprop Lu + 1026 9 1027 notprop Lu ++ 1028 B 1029 notprop Lu + 1030 b 1031 Ket 1032 End 1033------------------------------------------------------------------ 1034 1035/\P{Lu}+9\P{Lu}+B\P{Lu}+b/BZ 1036------------------------------------------------------------------ 1037 Bra 1038 notprop Lu + 1039 9 1040 notprop Lu ++ 1041 B 1042 notprop Lu + 1043 b 1044 Ket 1045 End 1046------------------------------------------------------------------ 1047 1048/\p{Han}+X\p{Greek}+\x{370}/BZ8 1049------------------------------------------------------------------ 1050 Bra 1051 prop Han ++ 1052 X 1053 prop Greek + 1054 \x{370} 1055 Ket 1056 End 1057------------------------------------------------------------------ 1058 1059/\p{Xan}+!\p{Xan}+A/BZ 1060------------------------------------------------------------------ 1061 Bra 1062 prop Xan ++ 1063 ! 1064 prop Xan + 1065 A 1066 Ket 1067 End 1068------------------------------------------------------------------ 1069 1070/\p{Xsp}+!\p{Xsp}\t/BZ 1071------------------------------------------------------------------ 1072 Bra 1073 prop Xsp ++ 1074 ! 1075 prop Xsp 1076 \x09 1077 Ket 1078 End 1079------------------------------------------------------------------ 1080 1081/\p{Xps}+!\p{Xps}\t/BZ 1082------------------------------------------------------------------ 1083 Bra 1084 prop Xps ++ 1085 ! 1086 prop Xps 1087 \x09 1088 Ket 1089 End 1090------------------------------------------------------------------ 1091 1092/\p{Xwd}+!\p{Xwd}_/BZ 1093------------------------------------------------------------------ 1094 Bra 1095 prop Xwd ++ 1096 ! 1097 prop Xwd 1098 _ 1099 Ket 1100 End 1101------------------------------------------------------------------ 1102 1103/A+\p{N}A+\dB+\p{N}*B+\d*/WBZ 1104------------------------------------------------------------------ 1105 Bra 1106 A++ 1107 prop N 1108 A++ 1109 prop Nd 1110 B+ 1111 prop N *+ 1112 B++ 1113 prop Nd *+ 1114 Ket 1115 End 1116------------------------------------------------------------------ 1117 1118/-- These behaved oddly in Perl, so they are kept in this test --/ 1119 1120/(\x{23a}\x{23a}\x{23a})?\1/8i 1121 \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65} 1122No match 1123 1124/(ȺȺȺ)?\1/8i 1125 ȺȺȺⱥⱥ 1126No match 1127 1128/(\x{23a}\x{23a}\x{23a})?\1/8i 1129 \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65} 1130 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65} 1131 1: \x{23a}\x{23a}\x{23a} 1132 1133/(ȺȺȺ)?\1/8i 1134 ȺȺȺⱥⱥⱥ 1135 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65} 1136 1: \x{23a}\x{23a}\x{23a} 1137 1138/(\x{23a}\x{23a}\x{23a})\1/8i 1139 \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65} 1140No match 1141 1142/(ȺȺȺ)\1/8i 1143 ȺȺȺⱥⱥ 1144No match 1145 1146/(\x{23a}\x{23a}\x{23a})\1/8i 1147 \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65} 1148 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65} 1149 1: \x{23a}\x{23a}\x{23a} 1150 1151/(ȺȺȺ)\1/8i 1152 ȺȺȺⱥⱥⱥ 1153 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65} 1154 1: \x{23a}\x{23a}\x{23a} 1155 1156/(\x{2c65}\x{2c65})\1/8i 1157 \x{2c65}\x{2c65}\x{23a}\x{23a} 1158 0: \x{2c65}\x{2c65}\x{23a}\x{23a} 1159 1: \x{2c65}\x{2c65} 1160 1161/(ⱥⱥ)\1/8i 1162 ⱥⱥȺȺ 1163 0: \x{2c65}\x{2c65}\x{23a}\x{23a} 1164 1: \x{2c65}\x{2c65} 1165 1166/(\x{23a}\x{23a}\x{23a})\1Y/8i 1167 X\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}YZ 1168 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}Y 1169 1: \x{23a}\x{23a}\x{23a} 1170 1171/(\x{2c65}\x{2c65})\1Y/8i 1172 X\x{2c65}\x{2c65}\x{23a}\x{23a}YZ 1173 0: \x{2c65}\x{2c65}\x{23a}\x{23a}Y 1174 1: \x{2c65}\x{2c65} 1175 1176/-- --/ 1177 1178/-- These scripts weren't yet in Perl when I added Unicode 6.0.0 to PCRE --/ 1179 1180/^[\p{Batak}]/8 1181 \x{1bc0} 1182 0: \x{1bc0} 1183 \x{1bff} 1184 0: \x{1bff} 1185 ** Failers 1186No match 1187 \x{1bf4} 1188No match 1189 1190/^[\p{Brahmi}]/8 1191 \x{11000} 1192 0: \x{11000} 1193 \x{1106f} 1194 0: \x{1106f} 1195 ** Failers 1196No match 1197 \x{1104e} 1198No match 1199 1200/^[\p{Mandaic}]/8 1201 \x{840} 1202 0: \x{840} 1203 \x{85e} 1204 0: \x{85e} 1205 ** Failers 1206No match 1207 \x{85c} 1208No match 1209 \x{85d} 1210No match 1211 1212/-- --/ 1213 1214/(\X*)(.)/s8 1215 A\x{300} 1216 0: A 1217 1: 1218 2: A 1219 1220/^S(\X*)e(\X*)$/8 1221 Stéréo 1222 0: Ste\x{301}re\x{301}o 1223 1: te\x{301}r 1224 2: \x{301}o 1225 1226/^\X/8 1227 ́réo 1228 0: \x{301} 1229 1230/^a\X41z/<JS> 1231 aX41z 1232 0: aX41z 1233 *** Failers 1234No match 1235 aAz 1236No match 1237 1238/(?<=ab\Cde)X/8 1239Failed: \C not allowed in lookbehind assertion at offset 10 1240 1241/\X/ 1242 a\P 1243 0: a 1244 a\P\P 1245Partial match: a 1246 1247/\Xa/ 1248 aa\P 1249 0: aa 1250 aa\P\P 1251 0: aa 1252 1253/\X{2}/ 1254 aa\P 1255 0: aa 1256 aa\P\P 1257Partial match: aa 1258 1259/\X+a/ 1260 a\P 1261Partial match: a 1262 aa\P 1263 0: aa 1264 aa\P\P 1265Partial match: aa 1266 1267/\X+?a/ 1268 a\P 1269Partial match: a 1270 ab\P 1271Partial match: ab 1272 aa\P 1273 0: aa 1274 aa\P\P 1275 0: aa 1276 aba\P 1277 0: aba 1278 1279/-- These Unicode 6.1.0 scripts are not known to Perl. --/ 1280 1281/\p{Chakma}\d/8W 1282 \x{11100}\x{1113c} 1283 0: \x{11100}\x{1113c} 1284 1285/\p{Takri}\d/8W 1286 \x{11680}\x{116c0} 1287 0: \x{11680}\x{116c0} 1288 1289/^\X/8 1290 A\P 1291 0: A 1292 A\P\P 1293Partial match: A 1294 A\x{300}\x{301}\P 1295 0: A\x{300}\x{301} 1296 A\x{300}\x{301}\P\P 1297Partial match: A\x{300}\x{301} 1298 A\x{301}\P 1299 0: A\x{301} 1300 A\x{301}\P\P 1301Partial match: A\x{301} 1302 1303/^\X{2,3}/8 1304 A\P 1305Partial match: A 1306 A\P\P 1307Partial match: A 1308 AA\P 1309 0: AA 1310 AA\P\P 1311Partial match: AA 1312 A\x{300}\x{301}\P 1313Partial match: A\x{300}\x{301} 1314 A\x{300}\x{301}\P\P 1315Partial match: A\x{300}\x{301} 1316 A\x{300}\x{301}A\x{300}\x{301}\P 1317 0: A\x{300}\x{301}A\x{300}\x{301} 1318 A\x{300}\x{301}A\x{300}\x{301}\P\P 1319Partial match: A\x{300}\x{301}A\x{300}\x{301} 1320 1321/^\X{2}/8 1322 AA\P 1323 0: AA 1324 AA\P\P 1325Partial match: AA 1326 A\x{300}\x{301}A\x{300}\x{301}\P 1327 0: A\x{300}\x{301}A\x{300}\x{301} 1328 A\x{300}\x{301}A\x{300}\x{301}\P\P 1329Partial match: A\x{300}\x{301}A\x{300}\x{301} 1330 1331/^\X+/8 1332 AA\P 1333 0: AA 1334 AA\P\P 1335Partial match: AA 1336 1337/^\X+?Z/8 1338 AA\P 1339Partial match: AA 1340 AA\P\P 1341Partial match: AA 1342 1343/A\x{3a3}B/8iDZ 1344------------------------------------------------------------------ 1345 Bra 1346 /i A 1347 clist 03a3 03c2 03c3 1348 /i B 1349 Ket 1350 End 1351------------------------------------------------------------------ 1352Capturing subpattern count = 0 1353Options: caseless utf 1354First char = 'A' (caseless) 1355Need char = 'B' (caseless) 1356 1357/\x{3a3}B/8iDZ 1358------------------------------------------------------------------ 1359 Bra 1360 clist 03a3 03c2 03c3 1361 /i B 1362 Ket 1363 End 1364------------------------------------------------------------------ 1365Capturing subpattern count = 0 1366Options: caseless utf 1367No first char 1368Need char = 'B' (caseless) 1369 1370/[\x{3a3}]/8iBZ 1371------------------------------------------------------------------ 1372 Bra 1373 clist 03a3 03c2 03c3 1374 Ket 1375 End 1376------------------------------------------------------------------ 1377 1378/[^\x{3a3}]/8iBZ 1379------------------------------------------------------------------ 1380 Bra 1381 not clist 03a3 03c2 03c3 1382 Ket 1383 End 1384------------------------------------------------------------------ 1385 1386/[\x{3a3}]+/8iBZ 1387------------------------------------------------------------------ 1388 Bra 1389 clist 03a3 03c2 03c3 ++ 1390 Ket 1391 End 1392------------------------------------------------------------------ 1393 1394/[^\x{3a3}]+/8iBZ 1395------------------------------------------------------------------ 1396 Bra 1397 not clist 03a3 03c2 03c3 ++ 1398 Ket 1399 End 1400------------------------------------------------------------------ 1401 1402/a*\x{3a3}/8iBZ 1403------------------------------------------------------------------ 1404 Bra 1405 /i a*+ 1406 clist 03a3 03c2 03c3 1407 Ket 1408 End 1409------------------------------------------------------------------ 1410 1411/\x{3a3}+a/8iBZ 1412------------------------------------------------------------------ 1413 Bra 1414 clist 03a3 03c2 03c3 ++ 1415 /i a 1416 Ket 1417 End 1418------------------------------------------------------------------ 1419 1420/\x{3a3}*\x{3c2}/8iBZ 1421------------------------------------------------------------------ 1422 Bra 1423 clist 03a3 03c2 03c3 * 1424 clist 03a3 03c2 03c3 1425 Ket 1426 End 1427------------------------------------------------------------------ 1428 1429/\x{3a3}{3}/8i+ 1430 \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2} 1431 0: \x{3a3}\x{3c3}\x{3c2} 1432 0+ \x{3a3}\x{3c3}\x{3c2} 1433 1434/\x{3a3}{2,4}/8i+ 1435 \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2} 1436 0: \x{3a3}\x{3c3}\x{3c2}\x{3a3} 1437 0+ \x{3c3}\x{3c2} 1438 1439/\x{3a3}{2,4}?/8i+ 1440 \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2} 1441 0: \x{3a3}\x{3c3} 1442 0+ \x{3c2}\x{3a3}\x{3c3}\x{3c2} 1443 1444/\x{3a3}+./8i+ 1445 \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2} 1446 0: \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2} 1447 0+ 1448 1449/\x{3a3}++./8i+ 1450 ** Failers 1451No match 1452 \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2} 1453No match 1454 1455/\x{3a3}*\x{3c2}/8iBZ 1456------------------------------------------------------------------ 1457 Bra 1458 clist 03a3 03c2 03c3 * 1459 clist 03a3 03c2 03c3 1460 Ket 1461 End 1462------------------------------------------------------------------ 1463 1464/[^\x{3a3}]*\x{3c2}/8iBZ 1465------------------------------------------------------------------ 1466 Bra 1467 not clist 03a3 03c2 03c3 *+ 1468 clist 03a3 03c2 03c3 1469 Ket 1470 End 1471------------------------------------------------------------------ 1472 1473/[^a]*\x{3c2}/8iBZ 1474------------------------------------------------------------------ 1475 Bra 1476 /i [^a]* 1477 clist 03a3 03c2 03c3 1478 Ket 1479 End 1480------------------------------------------------------------------ 1481 1482/ist/8iBZ 1483------------------------------------------------------------------ 1484 Bra 1485 /i i 1486 clist 0053 0073 017f 1487 /i t 1488 Ket 1489 End 1490------------------------------------------------------------------ 1491 ikt 1492No match 1493 1494/is+t/8i 1495 iSs\x{17f}t 1496 0: iSs\x{17f}t 1497 ikt 1498No match 1499 1500/is+?t/8i 1501 ikt 1502No match 1503 1504/is?t/8i 1505 ikt 1506No match 1507 1508/is{2}t/8i 1509 iskt 1510No match 1511 1512/-- This property is a PCRE special --/ 1513 1514/^\p{Xuc}/8 1515 $abc 1516 0: $ 1517 @abc 1518 0: @ 1519 `abc 1520 0: ` 1521 \x{1234}abc 1522 0: \x{1234} 1523 ** Failers 1524No match 1525 abc 1526No match 1527 1528/^\p{Xuc}+/8 1529 $@`\x{a0}\x{1234}\x{e000}** 1530 0: $@`\x{a0}\x{1234}\x{e000} 1531 ** Failers 1532No match 1533 \x{9f} 1534No match 1535 1536/^\p{Xuc}+?/8 1537 $@`\x{a0}\x{1234}\x{e000}** 1538 0: $ 1539 ** Failers 1540No match 1541 \x{9f} 1542No match 1543 1544/^\p{Xuc}+?\*/8 1545 $@`\x{a0}\x{1234}\x{e000}** 1546 0: $@`\x{a0}\x{1234}\x{e000}* 1547 ** Failers 1548No match 1549 \x{9f} 1550No match 1551 1552/^\p{Xuc}++/8 1553 $@`\x{a0}\x{1234}\x{e000}** 1554 0: $@`\x{a0}\x{1234}\x{e000} 1555 ** Failers 1556No match 1557 \x{9f} 1558No match 1559 1560/^\p{Xuc}{3,5}/8 1561 $@`\x{a0}\x{1234}\x{e000}** 1562 0: $@`\x{a0}\x{1234} 1563 ** Failers 1564No match 1565 \x{9f} 1566No match 1567 1568/^\p{Xuc}{3,5}?/8 1569 $@`\x{a0}\x{1234}\x{e000}** 1570 0: $@` 1571 ** Failers 1572No match 1573 \x{9f} 1574No match 1575 1576/^[\p{Xuc}]/8 1577 $@`\x{a0}\x{1234}\x{e000}** 1578 0: $ 1579 ** Failers 1580No match 1581 \x{9f} 1582No match 1583 1584/^[\p{Xuc}]+/8 1585 $@`\x{a0}\x{1234}\x{e000}** 1586 0: $@`\x{a0}\x{1234}\x{e000} 1587 ** Failers 1588No match 1589 \x{9f} 1590No match 1591 1592/^\P{Xuc}/8 1593 abc 1594 0: a 1595 ** Failers 1596 0: * 1597 $abc 1598No match 1599 @abc 1600No match 1601 `abc 1602No match 1603 \x{1234}abc 1604No match 1605 1606/^[\P{Xuc}]/8 1607 abc 1608 0: a 1609 ** Failers 1610 0: * 1611 $abc 1612No match 1613 @abc 1614No match 1615 `abc 1616No match 1617 \x{1234}abc 1618No match 1619 1620/-- Some auto-possessification tests --/ 1621 1622/\pN+\z/BZ 1623------------------------------------------------------------------ 1624 Bra 1625 prop N ++ 1626 \z 1627 Ket 1628 End 1629------------------------------------------------------------------ 1630 1631/\PN+\z/BZ 1632------------------------------------------------------------------ 1633 Bra 1634 notprop N ++ 1635 \z 1636 Ket 1637 End 1638------------------------------------------------------------------ 1639 1640/\pN+/BZ 1641------------------------------------------------------------------ 1642 Bra 1643 prop N ++ 1644 Ket 1645 End 1646------------------------------------------------------------------ 1647 1648/\PN+/BZ 1649------------------------------------------------------------------ 1650 Bra 1651 notprop N ++ 1652 Ket 1653 End 1654------------------------------------------------------------------ 1655 1656/\p{Any}+\p{Any} \p{Any}+\P{Any} \p{Any}+\p{L&} \p{Any}+\p{L} \p{Any}+\p{Lu} \p{Any}+\p{Han} \p{Any}+\p{Xan} \p{Any}+\p{Xsp} \p{Any}+\p{Xps} \p{Xwd}+\p{Any} \p{Any}+\p{Xuc}/BWZx 1657------------------------------------------------------------------ 1658 Bra 1659 prop Any + 1660 prop Any 1661 prop Any + 1662 notprop Any 1663 prop Any + 1664 prop L& 1665 prop Any + 1666 prop L 1667 prop Any + 1668 prop Lu 1669 prop Any + 1670 prop Han 1671 prop Any + 1672 prop Xan 1673 prop Any + 1674 prop Xsp 1675 prop Any + 1676 prop Xps 1677 prop Xwd + 1678 prop Any 1679 prop Any + 1680 prop Xuc 1681 Ket 1682 End 1683------------------------------------------------------------------ 1684 1685/\p{L&}+\p{Any} \p{L&}+\p{L&} \P{L&}+\p{L&} \p{L&}+\p{L} \p{L&}+\p{Lu} \p{L&}+\p{Han} \p{L&}+\p{Xan} \p{L&}+\P{Xan} \p{L&}+\p{Xsp} \p{L&}+\p{Xps} \p{Xwd}+\p{L&} \p{L&}+\p{Xuc}/BWZx 1686------------------------------------------------------------------ 1687 Bra 1688 prop L& + 1689 prop Any 1690 prop L& + 1691 prop L& 1692 notprop L& ++ 1693 prop L& 1694 prop L& + 1695 prop L 1696 prop L& + 1697 prop Lu 1698 prop L& + 1699 prop Han 1700 prop L& + 1701 prop Xan 1702 prop L& ++ 1703 notprop Xan 1704 prop L& ++ 1705 prop Xsp 1706 prop L& ++ 1707 prop Xps 1708 prop Xwd + 1709 prop L& 1710 prop L& + 1711 prop Xuc 1712 Ket 1713 End 1714------------------------------------------------------------------ 1715 1716/\p{N}+\p{Any} \p{N}+\p{L&} \p{N}+\p{L} \p{N}+\P{L} \p{N}+\P{N} \p{N}+\p{Lu} \p{N}+\p{Han} \p{N}+\p{Xan} \p{N}+\p{Xsp} \p{N}+\p{Xps} \p{Xwd}+\p{N} \p{N}+\p{Xuc}/BWZx 1717------------------------------------------------------------------ 1718 Bra 1719 prop N + 1720 prop Any 1721 prop N + 1722 prop L& 1723 prop N ++ 1724 prop L 1725 prop N + 1726 notprop L 1727 prop N ++ 1728 notprop N 1729 prop N ++ 1730 prop Lu 1731 prop N + 1732 prop Han 1733 prop N + 1734 prop Xan 1735 prop N ++ 1736 prop Xsp 1737 prop N ++ 1738 prop Xps 1739 prop Xwd + 1740 prop N 1741 prop N + 1742 prop Xuc 1743 Ket 1744 End 1745------------------------------------------------------------------ 1746 1747/\p{Lu}+\p{Any} \p{Lu}+\p{L&} \p{Lu}+\p{L} \p{Lu}+\p{Lu} \P{Lu}+\p{Lu} \p{Lu}+\p{Nd} \p{Lu}+\P{Nd} \p{Lu}+\p{Han} \p{Lu}+\p{Xan} \p{Lu}+\p{Xsp} \p{Lu}+\p{Xps} \p{Xwd}+\p{Lu} \p{Lu}+\p{Xuc}/BWZx 1748------------------------------------------------------------------ 1749 Bra 1750 prop Lu + 1751 prop Any 1752 prop Lu + 1753 prop L& 1754 prop Lu + 1755 prop L 1756 prop Lu + 1757 prop Lu 1758 notprop Lu ++ 1759 prop Lu 1760 prop Lu ++ 1761 prop Nd 1762 prop Lu + 1763 notprop Nd 1764 prop Lu + 1765 prop Han 1766 prop Lu + 1767 prop Xan 1768 prop Lu ++ 1769 prop Xsp 1770 prop Lu ++ 1771 prop Xps 1772 prop Xwd + 1773 prop Lu 1774 prop Lu + 1775 prop Xuc 1776 Ket 1777 End 1778------------------------------------------------------------------ 1779 1780/\p{Han}+\p{Lu} \p{Han}+\p{L&} \p{Han}+\p{L} \p{Han}+\p{Lu} \p{Han}+\p{Arabic} \p{Arabic}+\p{Arabic} \p{Han}+\p{Xan} \p{Han}+\p{Xsp} \p{Han}+\p{Xps} \p{Xwd}+\p{Han} \p{Han}+\p{Xuc}/BWZx 1781------------------------------------------------------------------ 1782 Bra 1783 prop Han + 1784 prop Lu 1785 prop Han + 1786 prop L& 1787 prop Han + 1788 prop L 1789 prop Han + 1790 prop Lu 1791 prop Han ++ 1792 prop Arabic 1793 prop Arabic + 1794 prop Arabic 1795 prop Han + 1796 prop Xan 1797 prop Han + 1798 prop Xsp 1799 prop Han + 1800 prop Xps 1801 prop Xwd + 1802 prop Han 1803 prop Han + 1804 prop Xuc 1805 Ket 1806 End 1807------------------------------------------------------------------ 1808 1809/\p{Xan}+\p{Any} \p{Xan}+\p{L&} \P{Xan}+\p{L&} \p{Xan}+\p{L} \p{Xan}+\p{Lu} \p{Xan}+\p{Han} \p{Xan}+\p{Xan} \p{Xan}+\P{Xan} \p{Xan}+\p{Xsp} \p{Xan}+\p{Xps} \p{Xwd}+\p{Xan} \p{Xan}+\p{Xuc}/BWZx 1810------------------------------------------------------------------ 1811 Bra 1812 prop Xan + 1813 prop Any 1814 prop Xan + 1815 prop L& 1816 notprop Xan ++ 1817 prop L& 1818 prop Xan + 1819 prop L 1820 prop Xan + 1821 prop Lu 1822 prop Xan + 1823 prop Han 1824 prop Xan + 1825 prop Xan 1826 prop Xan ++ 1827 notprop Xan 1828 prop Xan ++ 1829 prop Xsp 1830 prop Xan ++ 1831 prop Xps 1832 prop Xwd + 1833 prop Xan 1834 prop Xan + 1835 prop Xuc 1836 Ket 1837 End 1838------------------------------------------------------------------ 1839 1840/\p{Xsp}+\p{Any} \p{Xsp}+\p{L&} \p{Xsp}+\p{L} \p{Xsp}+\p{Lu} \p{Xsp}+\p{Han} \p{Xsp}+\p{Xan} \p{Xsp}+\p{Xsp} \P{Xsp}+\p{Xsp} \p{Xsp}+\p{Xps} \p{Xwd}+\p{Xsp} \p{Xsp}+\p{Xuc}/BWZx 1841------------------------------------------------------------------ 1842 Bra 1843 prop Xsp + 1844 prop Any 1845 prop Xsp ++ 1846 prop L& 1847 prop Xsp ++ 1848 prop L 1849 prop Xsp ++ 1850 prop Lu 1851 prop Xsp + 1852 prop Han 1853 prop Xsp ++ 1854 prop Xan 1855 prop Xsp + 1856 prop Xsp 1857 notprop Xsp ++ 1858 prop Xsp 1859 prop Xsp + 1860 prop Xps 1861 prop Xwd ++ 1862 prop Xsp 1863 prop Xsp + 1864 prop Xuc 1865 Ket 1866 End 1867------------------------------------------------------------------ 1868 1869/\p{Xwd}+\p{Any} \p{Xwd}+\p{L&} \p{Xwd}+\p{L} \p{Xwd}+\p{Lu} \p{Xwd}+\p{Han} \p{Xwd}+\p{Xan} \p{Xwd}+\p{Xsp} \p{Xwd}+\p{Xps} \p{Xwd}+\p{Xwd} \p{Xwd}+\P{Xwd} \p{Xwd}+\p{Xuc}/BWZx 1870------------------------------------------------------------------ 1871 Bra 1872 prop Xwd + 1873 prop Any 1874 prop Xwd + 1875 prop L& 1876 prop Xwd + 1877 prop L 1878 prop Xwd + 1879 prop Lu 1880 prop Xwd + 1881 prop Han 1882 prop Xwd + 1883 prop Xan 1884 prop Xwd ++ 1885 prop Xsp 1886 prop Xwd ++ 1887 prop Xps 1888 prop Xwd + 1889 prop Xwd 1890 prop Xwd ++ 1891 notprop Xwd 1892 prop Xwd + 1893 prop Xuc 1894 Ket 1895 End 1896------------------------------------------------------------------ 1897 1898/\p{Xuc}+\p{Any} \p{Xuc}+\p{L&} \p{Xuc}+\p{L} \p{Xuc}+\p{Lu} \p{Xuc}+\p{Han} \p{Xuc}+\p{Xan} \p{Xuc}+\p{Xsp} \p{Xuc}+\p{Xps} \p{Xwd}+\p{Xuc} \p{Xuc}+\p{Xuc} \p{Xuc}+\P{Xuc}/BWZx 1899------------------------------------------------------------------ 1900 Bra 1901 prop Xuc + 1902 prop Any 1903 prop Xuc + 1904 prop L& 1905 prop Xuc + 1906 prop L 1907 prop Xuc + 1908 prop Lu 1909 prop Xuc + 1910 prop Han 1911 prop Xuc + 1912 prop Xan 1913 prop Xuc + 1914 prop Xsp 1915 prop Xuc + 1916 prop Xps 1917 prop Xwd + 1918 prop Xuc 1919 prop Xuc + 1920 prop Xuc 1921 prop Xuc ++ 1922 notprop Xuc 1923 Ket 1924 End 1925------------------------------------------------------------------ 1926 1927/\p{N}+\p{Ll} \p{N}+\p{Nd} \p{N}+\P{Nd}/BWZx 1928------------------------------------------------------------------ 1929 Bra 1930 prop N ++ 1931 prop Ll 1932 prop N + 1933 prop Nd 1934 prop N + 1935 notprop Nd 1936 Ket 1937 End 1938------------------------------------------------------------------ 1939 1940/\p{Xan}+\p{L} \p{Xan}+\p{N} \p{Xan}+\p{C} \p{Xan}+\P{L} \P{Xan}+\p{N} \p{Xan}+\P{C}/BWZx 1941------------------------------------------------------------------ 1942 Bra 1943 prop Xan + 1944 prop L 1945 prop Xan + 1946 prop N 1947 prop Xan ++ 1948 prop C 1949 prop Xan + 1950 notprop L 1951 notprop Xan ++ 1952 prop N 1953 prop Xan + 1954 notprop C 1955 Ket 1956 End 1957------------------------------------------------------------------ 1958 1959/\p{L}+\p{Xan} \p{N}+\p{Xan} \p{C}+\p{Xan} \P{L}+\p{Xan} \p{N}+\p{Xan} \P{C}+\p{Xan} \p{L}+\P{Xan}/BWZx 1960------------------------------------------------------------------ 1961 Bra 1962 prop L + 1963 prop Xan 1964 prop N + 1965 prop Xan 1966 prop C ++ 1967 prop Xan 1968 notprop L + 1969 prop Xan 1970 prop N + 1971 prop Xan 1972 notprop C + 1973 prop Xan 1974 prop L ++ 1975 notprop Xan 1976 Ket 1977 End 1978------------------------------------------------------------------ 1979 1980/\p{Xan}+\p{Lu} \p{Xan}+\p{Nd} \p{Xan}+\p{Cc} \p{Xan}+\P{Ll} \P{Xan}+\p{No} \p{Xan}+\P{Cf}/BWZx 1981------------------------------------------------------------------ 1982 Bra 1983 prop Xan + 1984 prop Lu 1985 prop Xan + 1986 prop Nd 1987 prop Xan ++ 1988 prop Cc 1989 prop Xan + 1990 notprop Ll 1991 notprop Xan ++ 1992 prop No 1993 prop Xan + 1994 notprop Cf 1995 Ket 1996 End 1997------------------------------------------------------------------ 1998 1999/\p{Lu}+\p{Xan} \p{Nd}+\p{Xan} \p{Cs}+\p{Xan} \P{Lt}+\p{Xan} \p{Nl}+\p{Xan} \P{Cc}+\p{Xan} \p{Lt}+\P{Xan}/BWZx 2000------------------------------------------------------------------ 2001 Bra 2002 prop Lu + 2003 prop Xan 2004 prop Nd + 2005 prop Xan 2006 prop Cs ++ 2007 prop Xan 2008 notprop Lt + 2009 prop Xan 2010 prop Nl + 2011 prop Xan 2012 notprop Cc + 2013 prop Xan 2014 prop Lt ++ 2015 notprop Xan 2016 Ket 2017 End 2018------------------------------------------------------------------ 2019 2020/\w+\p{P} \w+\p{Po} \w+\s \p{Xan}+\s \s+\p{Xan} \s+\w/BWZx 2021------------------------------------------------------------------ 2022 Bra 2023 prop Xwd + 2024 prop P 2025 prop Xwd + 2026 prop Po 2027 prop Xwd ++ 2028 prop Xsp 2029 prop Xan ++ 2030 prop Xsp 2031 prop Xsp ++ 2032 prop Xan 2033 prop Xsp ++ 2034 prop Xwd 2035 Ket 2036 End 2037------------------------------------------------------------------ 2038 2039/\w+\P{P} \W+\p{Po} \w+\S \P{Xan}+\s \s+\P{Xan} \s+\W/BWZx 2040------------------------------------------------------------------ 2041 Bra 2042 prop Xwd + 2043 notprop P 2044 notprop Xwd + 2045 prop Po 2046 prop Xwd + 2047 notprop Xsp 2048 notprop Xan + 2049 prop Xsp 2050 prop Xsp + 2051 notprop Xan 2052 prop Xsp + 2053 notprop Xwd 2054 Ket 2055 End 2056------------------------------------------------------------------ 2057 2058/\w+\p{Po} \w+\p{Pc} \W+\p{Po} \W+\p{Pc} \w+\P{Po} \w+\P{Pc}/BWZx 2059------------------------------------------------------------------ 2060 Bra 2061 prop Xwd + 2062 prop Po 2063 prop Xwd ++ 2064 prop Pc 2065 notprop Xwd + 2066 prop Po 2067 notprop Xwd + 2068 prop Pc 2069 prop Xwd + 2070 notprop Po 2071 prop Xwd + 2072 notprop Pc 2073 Ket 2074 End 2075------------------------------------------------------------------ 2076 2077/\p{Nl}+\p{Xan} \P{Nl}+\p{Xan} \p{Nl}+\P{Xan} \P{Nl}+\P{Xan}/BWZx 2078------------------------------------------------------------------ 2079 Bra 2080 prop Nl + 2081 prop Xan 2082 notprop Nl + 2083 prop Xan 2084 prop Nl ++ 2085 notprop Xan 2086 notprop Nl + 2087 notprop Xan 2088 Ket 2089 End 2090------------------------------------------------------------------ 2091 2092/\p{Xan}+\p{Nl} \P{Xan}+\p{Nl} \p{Xan}+\P{Nl} \P{Xan}+\P{Nl}/BWZx 2093------------------------------------------------------------------ 2094 Bra 2095 prop Xan + 2096 prop Nl 2097 notprop Xan ++ 2098 prop Nl 2099 prop Xan + 2100 notprop Nl 2101 notprop Xan + 2102 notprop Nl 2103 Ket 2104 End 2105------------------------------------------------------------------ 2106 2107/\p{Xan}+\p{Nd} \P{Xan}+\p{Nd} \p{Xan}+\P{Nd} \P{Xan}+\P{Nd}/BWZx 2108------------------------------------------------------------------ 2109 Bra 2110 prop Xan + 2111 prop Nd 2112 notprop Xan ++ 2113 prop Nd 2114 prop Xan + 2115 notprop Nd 2116 notprop Xan + 2117 notprop Nd 2118 Ket 2119 End 2120------------------------------------------------------------------ 2121 2122/-- End auto-possessification tests --/ 2123 2124/\w+/8CWBZ 2125------------------------------------------------------------------ 2126 Bra 2127 Callout 255 0 3 2128 prop Xwd ++ 2129 Callout 255 3 0 2130 Ket 2131 End 2132------------------------------------------------------------------ 2133 abcd 2134--->abcd 2135 +0 ^ \w+ 2136 +3 ^ ^ 2137 0: abcd 2138 2139/[\p{N}]?+/BZO 2140------------------------------------------------------------------ 2141 Bra 2142 [\p{N}]?+ 2143 Ket 2144 End 2145------------------------------------------------------------------ 2146 2147/[\p{L}ab]{2,3}+/BZO 2148------------------------------------------------------------------ 2149 Bra 2150 [ab\p{L}]{2,3}+ 2151 Ket 2152 End 2153------------------------------------------------------------------ 2154 2155/\D+\X \d+\X \S+\X \s+\X \W+\X \w+\X \C+\X \R+\X \H+\X \h+\X \V+\X \v+\X a+\X \n+\X .+\X/BZx 2156------------------------------------------------------------------ 2157 Bra 2158 \D+ 2159 extuni 2160 \d+ 2161 extuni 2162 \S+ 2163 extuni 2164 \s+ 2165 extuni 2166 \W+ 2167 extuni 2168 \w+ 2169 extuni 2170 AllAny+ 2171 extuni 2172 \R+ 2173 extuni 2174 \H+ 2175 extuni 2176 \h+ 2177 extuni 2178 \V+ 2179 extuni 2180 \v+ 2181 extuni 2182 a+ 2183 extuni 2184 \x0a+ 2185 extuni 2186 Any+ 2187 extuni 2188 Ket 2189 End 2190------------------------------------------------------------------ 2191 2192/.+\X/BZxs 2193------------------------------------------------------------------ 2194 Bra 2195 AllAny+ 2196 extuni 2197 Ket 2198 End 2199------------------------------------------------------------------ 2200 2201/\X+$/BZxm 2202------------------------------------------------------------------ 2203 Bra 2204 extuni+ 2205 /m $ 2206 Ket 2207 End 2208------------------------------------------------------------------ 2209 2210/\X+\D \X+\d \X+\S \X+\s \X+\W \X+\w \X+. \X+\C \X+\R \X+\H \X+\h \X+\V \X+\v \X+\X \X+\Z \X+\z \X+$/BZx 2211------------------------------------------------------------------ 2212 Bra 2213 extuni+ 2214 \D 2215 extuni+ 2216 \d 2217 extuni+ 2218 \S 2219 extuni+ 2220 \s 2221 extuni+ 2222 \W 2223 extuni+ 2224 \w 2225 extuni+ 2226 Any 2227 extuni+ 2228 AllAny 2229 extuni+ 2230 \R 2231 extuni+ 2232 \H 2233 extuni+ 2234 \h 2235 extuni+ 2236 \V 2237 extuni+ 2238 \v 2239 extuni+ 2240 extuni 2241 extuni+ 2242 \Z 2243 extuni++ 2244 \z 2245 extuni+ 2246 $ 2247 Ket 2248 End 2249------------------------------------------------------------------ 2250 2251/\d+\s{0,5}=\s*\S?=\w{0,4}\W*/8WBZ 2252------------------------------------------------------------------ 2253 Bra 2254 prop Nd ++ 2255 prop Xsp {0,5}+ 2256 = 2257 prop Xsp *+ 2258 notprop Xsp ? 2259 = 2260 prop Xwd {0,4}+ 2261 notprop Xwd *+ 2262 Ket 2263 End 2264------------------------------------------------------------------ 2265 2266/[RST]+/8iWBZ 2267------------------------------------------------------------------ 2268 Bra 2269 [R-Tr-t\x{17f}]++ 2270 Ket 2271 End 2272------------------------------------------------------------------ 2273 2274/[R-T]+/8iWBZ 2275------------------------------------------------------------------ 2276 Bra 2277 [R-Tr-t\x{17f}]++ 2278 Ket 2279 End 2280------------------------------------------------------------------ 2281 2282/[Q-U]+/8iWBZ 2283------------------------------------------------------------------ 2284 Bra 2285 [Q-Uq-u\x{17f}]++ 2286 Ket 2287 End 2288------------------------------------------------------------------ 2289 2290/^s?c/mi8I 2291Capturing subpattern count = 0 2292Options: caseless multiline utf 2293First char at start or follows newline 2294Need char = 'c' (caseless) 2295 scat 2296 0: sc 2297 2298/[\W\p{Any}]/BZ 2299------------------------------------------------------------------ 2300 Bra 2301 [\x00-/:-@[-^`{-\xff\p{Any}] 2302 Ket 2303 End 2304------------------------------------------------------------------ 2305 abc 2306 0: a 2307 123 2308 0: 1 2309 2310/[\W\pL]/BZ 2311------------------------------------------------------------------ 2312 Bra 2313 [\x00-/:-@[-^`{-\xff\p{L}] 2314 Ket 2315 End 2316------------------------------------------------------------------ 2317 abc 2318 0: a 2319 ** Failers 2320 0: * 2321 123 2322No match 2323 2324/a[[:punct:]b]/WBZ 2325------------------------------------------------------------------ 2326 Bra 2327 a 2328 [b[:punct:]] 2329 Ket 2330 End 2331------------------------------------------------------------------ 2332 2333/a[[:punct:]b]/8WBZ 2334------------------------------------------------------------------ 2335 Bra 2336 a 2337 [b[:punct:]] 2338 Ket 2339 End 2340------------------------------------------------------------------ 2341 2342/a[b[:punct:]]/8WBZ 2343------------------------------------------------------------------ 2344 Bra 2345 a 2346 [b[:punct:]] 2347 Ket 2348 End 2349------------------------------------------------------------------ 2350 2351/-- End of testinput7 --/ 2352