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: utf8 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: utf8 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: utf8 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/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8iDZ 101------------------------------------------------------------------ 102 Bra 103 NC A\x{391}\x{10427}\x{ff3a}\x{1fb0} 104 Ket 105 End 106------------------------------------------------------------------ 107Capturing subpattern count = 0 108Options: caseless utf8 109First char = 'A' (caseless) 110No need char 111 112/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8DZ 113------------------------------------------------------------------ 114 Bra 115 A\x{391}\x{10427}\x{ff3a}\x{1fb0} 116 Ket 117 End 118------------------------------------------------------------------ 119Capturing subpattern count = 0 120Options: utf8 121First char = 'A' 122Need char = 176 123 124/AB\x{1fb0}/8DZ 125------------------------------------------------------------------ 126 Bra 127 AB\x{1fb0} 128 Ket 129 End 130------------------------------------------------------------------ 131Capturing subpattern count = 0 132Options: utf8 133First char = 'A' 134Need char = 176 135 136/AB\x{1fb0}/8DZi 137------------------------------------------------------------------ 138 Bra 139 NC AB\x{1fb0} 140 Ket 141 End 142------------------------------------------------------------------ 143Capturing subpattern count = 0 144Options: caseless utf8 145First char = 'A' (caseless) 146Need char = 'B' (caseless) 147 148/[\x{105}-\x{109}]/8iDZ 149------------------------------------------------------------------ 150 Bra 151 [\x{104}-\x{109}] 152 Ket 153 End 154------------------------------------------------------------------ 155Capturing subpattern count = 0 156Options: caseless utf8 157No first char 158No need char 159 \x{104} 160 0: \x{104} 161 \x{105} 162 0: \x{105} 163 \x{109} 164 0: \x{109} 165 ** Failers 166No match 167 \x{100} 168No match 169 \x{10a} 170No match 171 172/[z-\x{100}]/8iDZ 173------------------------------------------------------------------ 174 Bra 175 [Z\x{39c}\x{178}z-\x{101}] 176 Ket 177 End 178------------------------------------------------------------------ 179Capturing subpattern count = 0 180Options: caseless utf8 181No first char 182No need char 183 Z 184 0: Z 185 z 186 0: z 187 \x{39c} 188 0: \x{39c} 189 \x{178} 190 0: \x{178} 191 | 192 0: | 193 \x{80} 194 0: \x{80} 195 \x{ff} 196 0: \x{ff} 197 \x{100} 198 0: \x{100} 199 \x{101} 200 0: \x{101} 201 ** Failers 202No match 203 \x{102} 204No match 205 Y 206No match 207 y 208No match 209 210/[z-\x{100}]/8DZi 211------------------------------------------------------------------ 212 Bra 213 [Z\x{39c}\x{178}z-\x{101}] 214 Ket 215 End 216------------------------------------------------------------------ 217Capturing subpattern count = 0 218Options: caseless utf8 219No first char 220No need char 221 222/(?:[\PPa*]*){8,}/ 223 224/[\P{Any}]/BZ 225------------------------------------------------------------------ 226 Bra 227 [\P{Any}] 228 Ket 229 End 230------------------------------------------------------------------ 231 232/[\P{Any}\E]/BZ 233------------------------------------------------------------------ 234 Bra 235 [\P{Any}] 236 Ket 237 End 238------------------------------------------------------------------ 239 240/(\P{Yi}+\277)/ 241 242/(\P{Yi}+\277)?/ 243 244/(?<=\P{Yi}{3}A)X/ 245 246/\p{Yi}+(\P{Yi}+)(?1)/ 247 248/(\P{Yi}{2}\277)?/ 249 250/[\P{Yi}A]/ 251 252/[\P{Yi}\P{Yi}\P{Yi}A]/ 253 254/[^\P{Yi}A]/ 255 256/[^\P{Yi}\P{Yi}\P{Yi}A]/ 257 258/(\P{Yi}*\277)*/ 259 260/(\P{Yi}*?\277)*/ 261 262/(\p{Yi}*+\277)*/ 263 264/(\P{Yi}?\277)*/ 265 266/(\P{Yi}??\277)*/ 267 268/(\p{Yi}?+\277)*/ 269 270/(\P{Yi}{0,3}\277)*/ 271 272/(\P{Yi}{0,3}?\277)*/ 273 274/(\p{Yi}{0,3}+\277)*/ 275 276/\p{Zl}{2,3}+/8BZ 277------------------------------------------------------------------ 278 Bra 279 prop Zl {2} 280 prop Zl ?+ 281 Ket 282 End 283------------------------------------------------------------------ 284 \xe2\x80\xa8\xe2\x80\xa8 285 0: \x{2028}\x{2028} 286 \x{2028}\x{2028}\x{2028} 287 0: \x{2028}\x{2028}\x{2028} 288 289/\p{Zl}/8BZ 290------------------------------------------------------------------ 291 Bra 292 prop Zl 293 Ket 294 End 295------------------------------------------------------------------ 296 297/\p{Lu}{3}+/8BZ 298------------------------------------------------------------------ 299 Bra 300 prop Lu {3} 301 Ket 302 End 303------------------------------------------------------------------ 304 305/\pL{2}+/8BZ 306------------------------------------------------------------------ 307 Bra 308 prop L {2} 309 Ket 310 End 311------------------------------------------------------------------ 312 313/\p{Cc}{2}+/8BZ 314------------------------------------------------------------------ 315 Bra 316 prop Cc {2} 317 Ket 318 End 319------------------------------------------------------------------ 320 321/^\p{Cs}/8 322 \?\x{dfff} 323 0: \x{dfff} 324 ** Failers 325No match 326 \x{09f} 327No match 328 329/^\p{Sc}+/8 330 $\x{a2}\x{a3}\x{a4}\x{a5}\x{a6} 331 0: $\x{a2}\x{a3}\x{a4}\x{a5} 332 \x{9f2} 333 0: \x{9f2} 334 ** Failers 335No match 336 X 337No match 338 \x{2c2} 339No match 340 341/^\p{Zs}/8 342 \ \ 343 0: 344 \x{a0} 345 0: \x{a0} 346 \x{1680} 347 0: \x{1680} 348 \x{180e} 349 0: \x{180e} 350 \x{2000} 351 0: \x{2000} 352 \x{2001} 353 0: \x{2001} 354 ** Failers 355No match 356 \x{2028} 357No match 358 \x{200d} 359No match 360 361/-- These four are here rather than in test 6 because Perl has problems with 362 the negative versions of the properties. --/ 363 364/\p{^Lu}/8i 365 1234 366 0: 1 367 ** Failers 368 0: * 369 ABC 370No match 371 372/\P{Lu}/8i 373 1234 374 0: 1 375 ** Failers 376 0: * 377 ABC 378No match 379 380/\p{Ll}/8i 381 a 382 0: a 383 Az 384 0: z 385 ** Failers 386 0: a 387 ABC 388No match 389 390/\p{Lu}/8i 391 A 392 0: A 393 a\x{10a0}B 394 0: \x{10a0} 395 ** Failers 396 0: F 397 a 398No match 399 \x{1d00} 400No match 401 402/[\x{c0}\x{391}]/8i 403 \x{c0} 404 0: \x{c0} 405 \x{e0} 406 0: \x{e0} 407 408/-- The next two are special cases where the lengths of the different cases of 409the same character differ. The first went wrong with heap frame storage; the 410second was broken in all cases. --/ 411 412/^\x{023a}+?(\x{0130}+)/8i 413 \x{023a}\x{2c65}\x{0130} 414 0: \x{23a}\x{2c65}\x{130} 415 1: \x{130} 416 417/^\x{023a}+([^X])/8i 418 \x{023a}\x{2c65}X 419 0: \x{23a}\x{2c65} 420 1: \x{2c65} 421 422/\x{c0}+\x{116}+/8i 423 \x{c0}\x{e0}\x{116}\x{117} 424 0: \x{c0}\x{e0}\x{116}\x{117} 425 426/[\x{c0}\x{116}]+/8i 427 \x{c0}\x{e0}\x{116}\x{117} 428 0: \x{c0}\x{e0}\x{116}\x{117} 429 430/(\x{de})\1/8i 431 \x{de}\x{de} 432 0: \x{de}\x{de} 433 1: \x{de} 434 \x{de}\x{fe} 435 0: \x{de}\x{fe} 436 1: \x{de} 437 \x{fe}\x{fe} 438 0: \x{fe}\x{fe} 439 1: \x{fe} 440 \x{fe}\x{de} 441 0: \x{fe}\x{de} 442 1: \x{fe} 443 444/^\x{c0}$/8i 445 \x{c0} 446 0: \x{c0} 447 \x{e0} 448 0: \x{e0} 449 450/^\x{e0}$/8i 451 \x{c0} 452 0: \x{c0} 453 \x{e0} 454 0: \x{e0} 455 456/-- The next two should be Perl-compatible, but it fails to match \x{e0}. PCRE 457will match it only with UCP support, because without that it has no notion 458of case for anything other than the ASCII letters. --/ 459 460/((?i)[\x{c0}])/8 461 \x{c0} 462 0: \x{c0} 463 1: \x{c0} 464 \x{e0} 465 0: \x{e0} 466 1: \x{e0} 467 468/(?i:[\x{c0}])/8 469 \x{c0} 470 0: \x{c0} 471 \x{e0} 472 0: \x{e0} 473 474/-- This should be Perl-compatible but Perl 5.11 gets \x{300} wrong. --/8 475 476/^\X/8 477 A 478 0: A 479 A\x{300}BC 480 0: A\x{300} 481 A\x{300}\x{301}\x{302}BC 482 0: A\x{300}\x{301}\x{302} 483 *** Failers 484 0: * 485 \x{300} 486No match 487 488/-- These are PCRE's extra properties to help with Unicodizing \d etc. --/ 489 490/^\p{Xan}/8 491 ABCD 492 0: A 493 1234 494 0: 1 495 \x{6ca} 496 0: \x{6ca} 497 \x{a6c} 498 0: \x{a6c} 499 \x{10a7} 500 0: \x{10a7} 501 ** Failers 502No match 503 _ABC 504No match 505 506/^\p{Xan}+/8 507 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 508 0: ABCD1234\x{6ca}\x{a6c}\x{10a7} 509 ** Failers 510No match 511 _ABC 512No match 513 514/^\p{Xan}+?/8 515 \x{6ca}\x{a6c}\x{10a7}_ 516 0: \x{6ca} 517 518/^\p{Xan}*/8 519 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 520 0: ABCD1234\x{6ca}\x{a6c}\x{10a7} 521 522/^\p{Xan}{2,9}/8 523 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 524 0: ABCD1234\x{6ca} 525 526/^\p{Xan}{2,9}?/8 527 \x{6ca}\x{a6c}\x{10a7}_ 528 0: \x{6ca}\x{a6c} 529 530/^[\p{Xan}]/8 531 ABCD1234_ 532 0: A 533 1234abcd_ 534 0: 1 535 \x{6ca} 536 0: \x{6ca} 537 \x{a6c} 538 0: \x{a6c} 539 \x{10a7} 540 0: \x{10a7} 541 ** Failers 542No match 543 _ABC 544No match 545 546/^[\p{Xan}]+/8 547 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 548 0: ABCD1234\x{6ca}\x{a6c}\x{10a7} 549 ** Failers 550No match 551 _ABC 552No match 553 554/^>\p{Xsp}/8 555 >\x{1680}\x{2028}\x{0b} 556 0: >\x{1680} 557 >\x{a0} 558 0: >\x{a0} 559 ** Failers 560No match 561 \x{0b} 562No match 563 564/^>\p{Xsp}+/8 565 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 566 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028} 567 568/^>\p{Xsp}+?/8 569 >\x{1680}\x{2028}\x{0b} 570 0: >\x{1680} 571 572/^>\p{Xsp}*/8 573 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 574 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028} 575 576/^>\p{Xsp}{2,9}/8 577 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 578 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028} 579 580/^>\p{Xsp}{2,9}?/8 581 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 582 0: > \x{09} 583 584/^>[\p{Xsp}]/8 585 >\x{2028}\x{0b} 586 0: >\x{2028} 587 588/^>[\p{Xsp}]+/8 589 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 590 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028} 591 592/^>\p{Xps}/8 593 >\x{1680}\x{2028}\x{0b} 594 0: >\x{1680} 595 >\x{a0} 596 0: >\x{a0} 597 ** Failers 598No match 599 \x{0b} 600No match 601 602/^>\p{Xps}+/8 603 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 604 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 605 606/^>\p{Xps}+?/8 607 >\x{1680}\x{2028}\x{0b} 608 0: >\x{1680} 609 610/^>\p{Xps}*/8 611 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 612 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 613 614/^>\p{Xps}{2,9}/8 615 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 616 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 617 618/^>\p{Xps}{2,9}?/8 619 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 620 0: > \x{09} 621 622/^>[\p{Xps}]/8 623 >\x{2028}\x{0b} 624 0: >\x{2028} 625 626/^>[\p{Xps}]+/8 627 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 628 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 629 630/^\p{Xwd}/8 631 ABCD 632 0: A 633 1234 634 0: 1 635 \x{6ca} 636 0: \x{6ca} 637 \x{a6c} 638 0: \x{a6c} 639 \x{10a7} 640 0: \x{10a7} 641 _ABC 642 0: _ 643 ** Failers 644No match 645 [] 646No match 647 648/^\p{Xwd}+/8 649 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 650 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 651 652/^\p{Xwd}+?/8 653 \x{6ca}\x{a6c}\x{10a7}_ 654 0: \x{6ca} 655 656/^\p{Xwd}*/8 657 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 658 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 659 660/^\p{Xwd}{2,9}/8 661 A_B12\x{6ca}\x{a6c}\x{10a7} 662 0: A_B12\x{6ca}\x{a6c}\x{10a7} 663 664/^\p{Xwd}{2,9}?/8 665 \x{6ca}\x{a6c}\x{10a7}_ 666 0: \x{6ca}\x{a6c} 667 668/^[\p{Xwd}]/8 669 ABCD1234_ 670 0: A 671 1234abcd_ 672 0: 1 673 \x{6ca} 674 0: \x{6ca} 675 \x{a6c} 676 0: \x{a6c} 677 \x{10a7} 678 0: \x{10a7} 679 _ABC 680 0: _ 681 ** Failers 682No match 683 [] 684No match 685 686/^[\p{Xwd}]+/8 687 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 688 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 689 690/-- A check not in UTF-8 mode --/ 691 692/^[\p{Xwd}]+/ 693 ABCD1234_ 694 0: ABCD1234_ 695 696/-- Some negative checks --/ 697 698/^[\P{Xwd}]+/8 699 !.+\x{019}\x{35a}AB 700 0: !.+\x{19}\x{35a} 701 702/^[\p{^Xwd}]+/8 703 !.+\x{019}\x{35a}AB 704 0: !.+\x{19}\x{35a} 705 706/[\D]/WBZ8 707------------------------------------------------------------------ 708 Bra 709 [\P{Nd}] 710 Ket 711 End 712------------------------------------------------------------------ 713 1\x{3c8}2 714 0: \x{3c8} 715 716/[\d]/WBZ8 717------------------------------------------------------------------ 718 Bra 719 [\p{Nd}] 720 Ket 721 End 722------------------------------------------------------------------ 723 >\x{6f4}< 724 0: \x{6f4} 725 726/[\S]/WBZ8 727------------------------------------------------------------------ 728 Bra 729 [\P{Xsp}] 730 Ket 731 End 732------------------------------------------------------------------ 733 \x{1680}\x{6f4}\x{1680} 734 0: \x{6f4} 735 736/[\s]/WBZ8 737------------------------------------------------------------------ 738 Bra 739 [\p{Xsp}] 740 Ket 741 End 742------------------------------------------------------------------ 743 >\x{1680}< 744 0: \x{1680} 745 746/[\W]/WBZ8 747------------------------------------------------------------------ 748 Bra 749 [\P{Xwd}] 750 Ket 751 End 752------------------------------------------------------------------ 753 A\x{1712}B 754 0: \x{1712} 755 756/[\w]/WBZ8 757------------------------------------------------------------------ 758 Bra 759 [\p{Xwd}] 760 Ket 761 End 762------------------------------------------------------------------ 763 >\x{1723}< 764 0: \x{1723} 765 766/\D/WBZ8 767------------------------------------------------------------------ 768 Bra 769 notprop Nd 770 Ket 771 End 772------------------------------------------------------------------ 773 1\x{3c8}2 774 0: \x{3c8} 775 776/\d/WBZ8 777------------------------------------------------------------------ 778 Bra 779 prop Nd 780 Ket 781 End 782------------------------------------------------------------------ 783 >\x{6f4}< 784 0: \x{6f4} 785 786/\S/WBZ8 787------------------------------------------------------------------ 788 Bra 789 notprop Xsp 790 Ket 791 End 792------------------------------------------------------------------ 793 \x{1680}\x{6f4}\x{1680} 794 0: \x{6f4} 795 796/\s/WBZ8 797------------------------------------------------------------------ 798 Bra 799 prop Xsp 800 Ket 801 End 802------------------------------------------------------------------ 803 >\x{1680}> 804 0: \x{1680} 805 806/\W/WBZ8 807------------------------------------------------------------------ 808 Bra 809 notprop Xwd 810 Ket 811 End 812------------------------------------------------------------------ 813 A\x{1712}B 814 0: \x{1712} 815 816/\w/WBZ8 817------------------------------------------------------------------ 818 Bra 819 prop Xwd 820 Ket 821 End 822------------------------------------------------------------------ 823 >\x{1723}< 824 0: \x{1723} 825 826/[[:alpha:]]/WBZ 827------------------------------------------------------------------ 828 Bra 829 [\p{L}] 830 Ket 831 End 832------------------------------------------------------------------ 833 834/[[:lower:]]/WBZ 835------------------------------------------------------------------ 836 Bra 837 [\p{Ll}] 838 Ket 839 End 840------------------------------------------------------------------ 841 842/[[:upper:]]/WBZ 843------------------------------------------------------------------ 844 Bra 845 [\p{Lu}] 846 Ket 847 End 848------------------------------------------------------------------ 849 850/[[:alnum:]]/WBZ 851------------------------------------------------------------------ 852 Bra 853 [\p{Xan}] 854 Ket 855 End 856------------------------------------------------------------------ 857 858/[[:ascii:]]/WBZ 859------------------------------------------------------------------ 860 Bra 861 [\x00-\x7f] 862 Ket 863 End 864------------------------------------------------------------------ 865 866/[[:blank:]]/WBZ 867------------------------------------------------------------------ 868 Bra 869 [\x09 \xa0] 870 Ket 871 End 872------------------------------------------------------------------ 873 874/[[:cntrl:]]/WBZ 875------------------------------------------------------------------ 876 Bra 877 [\x00-\x1f\x7f] 878 Ket 879 End 880------------------------------------------------------------------ 881 882/[[:digit:]]/WBZ 883------------------------------------------------------------------ 884 Bra 885 [\p{Nd}] 886 Ket 887 End 888------------------------------------------------------------------ 889 890/[[:graph:]]/WBZ 891------------------------------------------------------------------ 892 Bra 893 [!-~] 894 Ket 895 End 896------------------------------------------------------------------ 897 898/[[:print:]]/WBZ 899------------------------------------------------------------------ 900 Bra 901 [ -~] 902 Ket 903 End 904------------------------------------------------------------------ 905 906/[[:punct:]]/WBZ 907------------------------------------------------------------------ 908 Bra 909 [!-/:-@[-`{-~] 910 Ket 911 End 912------------------------------------------------------------------ 913 914/[[:space:]]/WBZ 915------------------------------------------------------------------ 916 Bra 917 [\p{Xps}] 918 Ket 919 End 920------------------------------------------------------------------ 921 922/[[:word:]]/WBZ 923------------------------------------------------------------------ 924 Bra 925 [\p{Xwd}] 926 Ket 927 End 928------------------------------------------------------------------ 929 930/[[:xdigit:]]/WBZ 931------------------------------------------------------------------ 932 Bra 933 [0-9A-Fa-f] 934 Ket 935 End 936------------------------------------------------------------------ 937 938/-- Unicode properties for \b abd \B --/ 939 940/\b...\B/8W 941 abc_ 942 0: abc 943 \x{37e}abc\x{376} 944 0: abc 945 \x{37e}\x{376}\x{371}\x{393}\x{394} 946 0: \x{376}\x{371}\x{393} 947 !\x{c0}++\x{c1}\x{c2} 948 0: ++\x{c1} 949 !\x{c0}+++++ 950 0: \x{c0}++ 951 952/-- Without PCRE_UCP, non-ASCII always fail, even if < 256 --/ 953 954/\b...\B/8 955 abc_ 956 0: abc 957 ** Failers 958 0: Fai 959 \x{37e}abc\x{376} 960No match 961 \x{37e}\x{376}\x{371}\x{393}\x{394} 962No match 963 !\x{c0}++\x{c1}\x{c2} 964No match 965 !\x{c0}+++++ 966No match 967 968/-- With PCRE_UCP, non-UTF8 chars that are < 256 still check properties --/ 969 970/\b...\B/W 971 abc_ 972 0: abc 973 !\x{c0}++\x{c1}\x{c2} 974 0: ++\xc1 975 !\x{c0}+++++ 976 0: \xc0++ 977 978/-- POSIX interface --/ 979 980/\w/P 981 +++\x{c2} 982No match: POSIX code 17: match failed 983 984/\w/WP 985 +++\x{c2} 986 0: \xc2 987 988/-- Some of these are silly, but they check various combinations --/ 989 990/[[:^alpha:][:^cntrl:]]+/8WBZ 991------------------------------------------------------------------ 992 Bra 993 [ -~\x80-\xff\P{L}]+ 994 Ket 995 End 996------------------------------------------------------------------ 997 123 998 0: 123 999 abc 1000 0: abc 1001 1002/[[:^cntrl:][:^alpha:]]+/8WBZ 1003------------------------------------------------------------------ 1004 Bra 1005 [ -~\x80-\xff\P{L}]+ 1006 Ket 1007 End 1008------------------------------------------------------------------ 1009 123 1010 0: 123 1011 abc 1012 0: abc 1013 1014/[[:alpha:]]+/8WBZ 1015------------------------------------------------------------------ 1016 Bra 1017 [\p{L}]+ 1018 Ket 1019 End 1020------------------------------------------------------------------ 1021 abc 1022 0: abc 1023 1024/[[:^alpha:]\S]+/8WBZ 1025------------------------------------------------------------------ 1026 Bra 1027 [\P{L}\P{Xsp}]+ 1028 Ket 1029 End 1030------------------------------------------------------------------ 1031 123 1032 0: 123 1033 abc 1034 0: abc 1035 1036/[^\d]+/8WBZ 1037------------------------------------------------------------------ 1038 Bra 1039 [^\p{Nd}]+ 1040 Ket 1041 End 1042------------------------------------------------------------------ 1043 abc123 1044 0: abc 1045 abc\x{123} 1046 0: abc\x{123} 1047 \x{660}abc 1048 0: abc 1049 1050/\x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}/8iSI 1051Capturing subpattern count = 0 1052Options: caseless utf8 1053No first char 1054No need char 1055Subject length lower bound = 17 1056Starting byte set: \xd0 \xd1 1057 \x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f} 1058 0: \x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f} 1059 \x{451}\x{440}\x{441}\x{442}\x{443}\x{444}\x{445}\x{446}\x{447}\x{448}\x{449}\x{44a}\x{44b}\x{44c}\x{44d}\x{44e}\x{44f} 1060 0: \x{451}\x{440}\x{441}\x{442}\x{443}\x{444}\x{445}\x{446}\x{447}\x{448}\x{449}\x{44a}\x{44b}\x{44c}\x{44d}\x{44e}\x{44f} 1061 1062/\p{Xps}*/SI 1063Capturing subpattern count = 0 1064No options 1065No first char 1066No need char 1067Subject length lower bound = 0 1068No set of starting bytes 1069 1070/\p{Lu}+9\p{Lu}+B\p{Lu}+b/BZ 1071------------------------------------------------------------------ 1072 Bra 1073 prop Lu ++ 1074 9 1075 prop Lu + 1076 B 1077 prop Lu ++ 1078 b 1079 Ket 1080 End 1081------------------------------------------------------------------ 1082 1083/\p{^Lu}+9\p{^Lu}+B\p{^Lu}+b/BZ 1084------------------------------------------------------------------ 1085 Bra 1086 notprop Lu + 1087 9 1088 notprop Lu ++ 1089 B 1090 notprop Lu + 1091 b 1092 Ket 1093 End 1094------------------------------------------------------------------ 1095 1096/\P{Lu}+9\P{Lu}+B\P{Lu}+b/BZ 1097------------------------------------------------------------------ 1098 Bra 1099 notprop Lu + 1100 9 1101 notprop Lu ++ 1102 B 1103 notprop Lu + 1104 b 1105 Ket 1106 End 1107------------------------------------------------------------------ 1108 1109/\p{Han}+X\p{Greek}+\x{370}/BZ8 1110------------------------------------------------------------------ 1111 Bra 1112 prop Han ++ 1113 X 1114 prop Greek + 1115 \x{370} 1116 Ket 1117 End 1118------------------------------------------------------------------ 1119 1120/\p{Xan}+!\p{Xan}+A/BZ 1121------------------------------------------------------------------ 1122 Bra 1123 prop Xan ++ 1124 ! 1125 prop Xan + 1126 A 1127 Ket 1128 End 1129------------------------------------------------------------------ 1130 1131/\p{Xsp}+!\p{Xsp}\t/BZ 1132------------------------------------------------------------------ 1133 Bra 1134 prop Xsp ++ 1135 ! 1136 prop Xsp 1137 \x09 1138 Ket 1139 End 1140------------------------------------------------------------------ 1141 1142/\p{Xps}+!\p{Xps}\t/BZ 1143------------------------------------------------------------------ 1144 Bra 1145 prop Xps ++ 1146 ! 1147 prop Xps 1148 \x09 1149 Ket 1150 End 1151------------------------------------------------------------------ 1152 1153/\p{Xwd}+!\p{Xwd}_/BZ 1154------------------------------------------------------------------ 1155 Bra 1156 prop Xwd ++ 1157 ! 1158 prop Xwd 1159 _ 1160 Ket 1161 End 1162------------------------------------------------------------------ 1163 1164/A+\p{N}A+\dB+\p{N}*B+\d*/WBZ 1165------------------------------------------------------------------ 1166 Bra 1167 A++ 1168 prop N 1169 A++ 1170 prop Nd 1171 B+ 1172 prop N *+ 1173 B+ 1174 prop Nd * 1175 Ket 1176 End 1177------------------------------------------------------------------ 1178 1179/-- End of testinput12 --/ 1180