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