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 ------------------------------------------------------------------ 11 Capturing subpattern count = 0 12 No options 13 No first char 14 No need char 15 16 /[\p{^L}]/DZ 17 ------------------------------------------------------------------ 18 Bra 19 [\P{L}] 20 Ket 21 End 22 ------------------------------------------------------------------ 23 Capturing subpattern count = 0 24 No options 25 No first char 26 No need char 27 28 /[\P{L}]/DZ 29 ------------------------------------------------------------------ 30 Bra 31 [\P{L}] 32 Ket 33 End 34 ------------------------------------------------------------------ 35 Capturing subpattern count = 0 36 No options 37 No first char 38 No need char 39 40 /[\P{^L}]/DZ 41 ------------------------------------------------------------------ 42 Bra 43 [\p{L}] 44 Ket 45 End 46 ------------------------------------------------------------------ 47 Capturing subpattern count = 0 48 No options 49 No first char 50 No 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 ------------------------------------------------------------------ 59 Capturing subpattern count = 0 60 Options: utf8 61 No first char 62 No need char 63 64 /[\p{Nd}]/8DZ 65 ------------------------------------------------------------------ 66 Bra 67 [\p{Nd}] 68 Ket 69 End 70 ------------------------------------------------------------------ 71 Capturing subpattern count = 0 72 Options: utf8 73 No first char 74 No need char 75 1234 76 0: 1 77 78 /[\p{Nd}+-]+/8DZ 79 ------------------------------------------------------------------ 80 Bra 81 [+\-\p{Nd}]+ 82 Ket 83 End 84 ------------------------------------------------------------------ 85 Capturing subpattern count = 0 86 Options: utf8 87 No first char 88 No 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 96 No match 97 abcd 98 No 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 ------------------------------------------------------------------ 107 Capturing subpattern count = 0 108 Options: caseless utf8 109 First char = 'A' (caseless) 110 No 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 ------------------------------------------------------------------ 119 Capturing subpattern count = 0 120 Options: utf8 121 First char = 'A' 122 Need char = 176 123 124 /AB\x{1fb0}/8DZ 125 ------------------------------------------------------------------ 126 Bra 127 AB\x{1fb0} 128 Ket 129 End 130 ------------------------------------------------------------------ 131 Capturing subpattern count = 0 132 Options: utf8 133 First char = 'A' 134 Need char = 176 135 136 /AB\x{1fb0}/8DZi 137 ------------------------------------------------------------------ 138 Bra 139 NC AB\x{1fb0} 140 Ket 141 End 142 ------------------------------------------------------------------ 143 Capturing subpattern count = 0 144 Options: caseless utf8 145 First char = 'A' (caseless) 146 Need char = 'B' (caseless) 147 148 /[\x{105}-\x{109}]/8iDZ 149 ------------------------------------------------------------------ 150 Bra 151 [\x{104}-\x{109}] 152 Ket 153 End 154 ------------------------------------------------------------------ 155 Capturing subpattern count = 0 156 Options: caseless utf8 157 No first char 158 No 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 166 No match 167 \x{100} 168 No match 169 \x{10a} 170 No match 171 172 /[z-\x{100}]/8iDZ 173 ------------------------------------------------------------------ 174 Bra 175 [Z\x{39c}\x{178}z-\x{101}] 176 Ket 177 End 178 ------------------------------------------------------------------ 179 Capturing subpattern count = 0 180 Options: caseless utf8 181 No first char 182 No 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 202 No match 203 \x{102} 204 No match 205 Y 206 No match 207 y 208 No match 209 210 /[z-\x{100}]/8DZi 211 ------------------------------------------------------------------ 212 Bra 213 [Z\x{39c}\x{178}z-\x{101}] 214 Ket 215 End 216 ------------------------------------------------------------------ 217 Capturing subpattern count = 0 218 Options: caseless utf8 219 No first char 220 No 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 325 No match 326 \x{09f} 327 No 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 335 No match 336 X 337 No match 338 \x{2c2} 339 No 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 355 No match 356 \x{2028} 357 No match 358 \x{200d} 359 No 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 370 No match 371 372 /\P{Lu}/8i 373 1234 374 0: 1 375 ** Failers 376 0: * 377 ABC 378 No match 379 380 /\p{Ll}/8i 381 a 382 0: a 383 Az 384 0: z 385 ** Failers 386 0: a 387 ABC 388 No 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 398 No match 399 \x{1d00} 400 No 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 409 the same character differ. The first went wrong with heap frame storage; the 410 second 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 457 will match it only with UCP support, because without that it has no notion 458 of 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} 486 No 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 502 No match 503 _ABC 504 No 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 510 No match 511 _ABC 512 No 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 542 No match 543 _ABC 544 No 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 550 No match 551 _ABC 552 No 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 560 No match 561 \x{0b} 562 No 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 598 No match 599 \x{0b} 600 No 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 644 No match 645 [] 646 No 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 682 No match 683 [] 684 No 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} 960 No match 961 \x{37e}\x{376}\x{371}\x{393}\x{394} 962 No match 963 !\x{c0}++\x{c1}\x{c2} 964 No match 965 !\x{c0}+++++ 966 No 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} 982 No 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 1051 Capturing subpattern count = 0 1052 Options: caseless utf8 1053 No first char 1054 No need char 1055 Subject length lower bound = 17 1056 Starting 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 1063 Capturing subpattern count = 0 1064 No options 1065 No first char 1066 No need char 1067 Subject length lower bound = 0 1068 No 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