• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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