new upstream release (3.3.0); modify package compatibility for Stretch
[ossec-hids.git] / src / external / pcre2-10.32 / testdata / testinput5
1 # This set of tests checks the API, internals, and non-Perl stuff for UTF
2 # support, including Unicode properties. However, tests that give different
3 # results in 8-bit, 16-bit, and 32-bit modes are excluded (see tests 10 and
4 # 12).
5
6 #newline_default lf any anycrlf
7
8 # PCRE2 and Perl disagree about the characteristics of certain Unicode
9 # characters. For example, 061C was considered by Perl to be Arabic, though
10 # it was not listed as such in the Unicode Scripts.txt file for Unicode 8.
11 # However, it *is* in that file for Unicode 10, but when I came to re-check,
12 # Perl had changed in the meantime, with 5.026 not recognizing it as Arabic.
13
14 # 2066-2069 are graphic and printable according to Perl, though they are
15 # actually "isolate" control characters. That is why the following tests are
16 # here rather than in test 4.
17
18 /^[\p{Arabic}]/utf
19     \x{061c}
20
21 /^[[:graph:]]+$/utf,ucp
22 \= Expect no match
23     \x{61c}
24     \x{2066}
25     \x{2067}
26     \x{2068}
27     \x{2069}
28
29 /^[[:print:]]+$/utf,ucp
30 \= Expect no match
31     \x{61c}
32     \x{2066}
33     \x{2067}
34     \x{2068}
35     \x{2069}
36
37 /^[[:^graph:]]+$/utf,ucp
38     \x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{61c}\x{1680}
39     \x{2028}\x{2029}\x{202f}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}
40
41 /^[[:^print:]]+$/utf,ucp
42     \x{09}\x{1D}\x{85}\x{61c}\x{2028}\x{2029}\x{2065}\x{2066}\x{2067}
43     \x{2068}\x{2069}
44
45 # Perl does not consider U+180e to be a space character. It is true that it
46 # does not appear in the Unicode PropList.txt file as such, but in many other
47 # sources it is listed as a space, and has been treated as such in PCRE for
48 # a long time.
49
50 /^>[[:blank:]]*/utf,ucp
51     >\x{20}\x{a0}\x{1680}\x{180e}\x{2000}\x{202f}\x{9}\x{b}\x{2028}
52
53 /^A\s+Z/utf,ucp
54     A\x{85}\x{180e}\x{2005}Z
55
56 /^A[\s]+Z/utf,ucp
57     A\x{2005}Z
58     A\x{85}\x{2005}Z
59
60 /^[[:graph:]]+$/utf,ucp
61 \= Expect no match
62     \x{180e}
63
64 /^[[:print:]]+$/utf,ucp
65     \x{180e}
66
67 /^[[:^graph:]]+$/utf,ucp
68     \x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{61c}\x{1680}\x{180e}
69
70 /^[[:^print:]]+$/utf,ucp
71 \= Expect no match
72     \x{180e}
73
74 # End of U+180E tests.
75
76 # ---------------------------------------------------------------------
77
78 /\x{110000}/IB,utf
79
80 /\o{4200000}/IB,utf
81
82 /\x{ffffffff}/utf
83
84 /\o{37777777777}/utf
85
86 /\x{100000000}/utf
87
88 /\o{77777777777}/utf
89
90 /\x{d800}/utf
91
92 /\o{154000}/utf
93
94 /\x{dfff}/utf
95
96 /\o{157777}/utf
97
98 /\x{d7ff}/utf
99
100 /\o{153777}/utf
101
102 /\x{e000}/utf
103
104 /\o{170000}/utf
105
106 /^\x{100}a\x{1234}/utf
107     \x{100}a\x{1234}bcd
108
109 /\x{0041}\x{2262}\x{0391}\x{002e}/IB,utf
110     \x{0041}\x{2262}\x{0391}\x{002e}
111
112 /.{3,5}X/IB,utf
113     \x{212ab}\x{212ab}\x{212ab}\x{861}X
114
115 /.{3,5}?/IB,utf
116     \x{212ab}\x{212ab}\x{212ab}\x{861}
117
118 /^[ab]/IB,utf
119     bar
120 \= Expect no match
121     c
122     \x{ff}
123     \x{100}
124
125 /\x{100}*(\d+|"(?1)")/utf
126     1234
127     "1234"
128     \x{100}1234
129     "\x{100}1234"
130     \x{100}\x{100}12ab
131     \x{100}\x{100}"12"
132 \= Expect no match
133     \x{100}\x{100}abcd
134
135 /\x{100}*/IB,utf
136
137 /a\x{100}*/IB,utf
138
139 /ab\x{100}*/IB,utf
140
141 /[\x{200}-\x{100}]/utf
142
143 /[Ā-Ą]/utf
144     \x{100}
145     \x{104}
146 \= Expect no match
147     \x{105}
148     \x{ff}
149
150 /[\xFF]/IB
151     >\xff<
152
153 /[^\xFF]/IB
154
155 /[Ä-Ü]/utf
156     Ö # Matches without Study
157     \x{d6}
158
159 /[Ä-Ü]/utf
160     Ö <-- Same with Study
161     \x{d6}
162
163 /[\x{c4}-\x{dc}]/utf
164     Ö # Matches without Study
165     \x{d6}
166
167 /[\x{c4}-\x{dc}]/utf
168     Ö <-- Same with Study
169     \x{d6}
170
171 /[^\x{100}]abc(xyz(?1))/IB,utf
172
173 /(\x{100}(b(?2)c))?/IB,utf
174
175 /(\x{100}(b(?2)c)){0,2}/IB,utf
176
177 /(\x{100}(b(?1)c))?/IB,utf
178
179 /(\x{100}(b(?1)c)){0,2}/IB,utf
180
181 /\W/utf
182     A.B
183     A\x{100}B
184
185 /\w/utf
186     \x{100}X
187
188 # Use no_start_optimize because the first code unit is different in 8-bit from
189 # the wider modes.
190
191 /^\ሴ/IB,utf,no_start_optimize
192
193 /()()()()()()()()()()
194  ()()()()()()()()()()
195  ()()()()()()()()()()
196  ()()()()()()()()()()
197  A (x) (?41) B/x,utf
198     AxxB
199
200 /^[\x{100}\E-\Q\E\x{150}]/B,utf
201
202 /^[\QĀ\E-\QŐ\E]/B,utf
203
204 /^abc./gmx,newline=any,utf
205     abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK
206
207 /abc.$/gmx,newline=any,utf
208     abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x{0085} abc7\x{2028} abc8\x{2029} abc9
209
210 /^a\Rb/bsr=unicode,utf
211     a\nb
212     a\rb
213     a\r\nb
214     a\x0bb
215     a\x0cb
216     a\x{85}b
217     a\x{2028}b
218     a\x{2029}b
219 \= Expect no match
220     a\n\rb
221
222 /^a\R*b/bsr=unicode,utf
223     ab
224     a\nb
225     a\rb
226     a\r\nb
227     a\x0bb
228     a\x0c\x{2028}\x{2029}b
229     a\x{85}b
230     a\n\rb
231     a\n\r\x{85}\x0cb
232
233 /^a\R+b/bsr=unicode,utf
234     a\nb
235     a\rb
236     a\r\nb
237     a\x0bb
238     a\x0c\x{2028}\x{2029}b
239     a\x{85}b
240     a\n\rb
241     a\n\r\x{85}\x0cb
242 \= Expect no match
243     ab
244
245 /^a\R{1,3}b/bsr=unicode,utf
246     a\nb
247     a\n\rb
248     a\n\r\x{85}b
249     a\r\n\r\nb
250     a\r\n\r\n\r\nb
251     a\n\r\n\rb
252     a\n\n\r\nb
253 \= Expect no match
254     a\n\n\n\rb
255     a\r
256
257 /\H\h\V\v/utf
258     X X\x0a
259     X\x09X\x0b
260 \= Expect no match
261     \x{a0} X\x0a
262
263 /\H*\h+\V?\v{3,4}/utf
264     \x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
265     \x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a
266     \x09\x20\x{a0}\x0a\x0b\x0c
267 \= Expect no match
268     \x09\x20\x{a0}\x0a\x0b
269
270 /\H\h\V\v/utf
271     \x{3001}\x{3000}\x{2030}\x{2028}
272     X\x{180e}X\x{85}
273 \= Expect no match
274     \x{2009} X\x0a
275
276 /\H*\h+\V?\v{3,4}/utf
277     \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a
278     \x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a
279     \x09\x20\x{202f}\x0a\x0b\x0c
280 \= Expect no match
281     \x09\x{200a}\x{a0}\x{2028}\x0b
282
283 /[\h]/B,utf
284     >\x{1680}
285
286 /[\h]{3,}/B,utf
287     >\x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}<
288
289 /[\v]/B,utf
290
291 /[\H]/B,utf
292
293 /[\V]/B,utf
294
295 /.*$/newline=any,utf
296     \x{1ec5}
297
298 /a\Rb/I,bsr=anycrlf,utf
299     a\rb
300     a\nb
301     a\r\nb
302 \= Expect no match
303     a\x{85}b
304     a\x0bb
305
306 /a\Rb/I,bsr=unicode,utf
307     a\rb
308     a\nb
309     a\r\nb
310     a\x{85}b
311     a\x0bb
312
313 /a\R?b/I,bsr=anycrlf,utf
314     a\rb
315     a\nb
316     a\r\nb
317 \= Expect no match
318     a\x{85}b
319     a\x0bb
320
321 /a\R?b/I,bsr=unicode,utf
322     a\rb
323     a\nb
324     a\r\nb
325     a\x{85}b
326     a\x0bb
327
328 /.*a.*=.b.*/utf,newline=any
329     QQQ\x{2029}ABCaXYZ=!bPQR
330 \= Expect no match
331     a\x{2029}b
332     \x61\xe2\x80\xa9\x62
333
334 /[[:a\x{100}b:]]/utf
335
336 /a[^]b/utf,alt_bsux,allow_empty_class,match_unset_backref
337     a\x{1234}b
338     a\nb
339 \= Expect no match
340     ab
341
342 /a[^]+b/utf,alt_bsux,allow_empty_class,match_unset_backref
343     aXb
344     a\nX\nX\x{1234}b
345 \= Expect no match
346     ab
347
348 /(\x{de})\1/
349     \x{de}\x{de}
350
351 /X/newline=any,utf,firstline
352     A\x{1ec5}ABCXYZ
353
354 /Xa{2,4}b/utf
355     X\=ps
356     Xa\=ps
357     Xaa\=ps
358     Xaaa\=ps
359     Xaaaa\=ps
360
361 /Xa{2,4}?b/utf
362     X\=ps
363     Xa\=ps
364     Xaa\=ps
365     Xaaa\=ps
366     Xaaaa\=ps
367
368 /Xa{2,4}+b/utf
369     X\=ps
370     Xa\=ps
371     Xaa\=ps
372     Xaaa\=ps
373     Xaaaa\=ps
374
375 /X\x{123}{2,4}b/utf
376     X\=ps
377     X\x{123}\=ps
378     X\x{123}\x{123}\=ps
379     X\x{123}\x{123}\x{123}\=ps
380     X\x{123}\x{123}\x{123}\x{123}\=ps
381
382 /X\x{123}{2,4}?b/utf
383     X\=ps
384     X\x{123}\=ps
385     X\x{123}\x{123}\=ps
386     X\x{123}\x{123}\x{123}\=ps
387     X\x{123}\x{123}\x{123}\x{123}\=ps
388
389 /X\x{123}{2,4}+b/utf
390     X\=ps
391     X\x{123}\=ps
392     X\x{123}\x{123}\=ps
393     X\x{123}\x{123}\x{123}\=ps
394     X\x{123}\x{123}\x{123}\x{123}\=ps
395
396 /X\x{123}{2,4}b/utf
397 \= Expect no match
398     Xx\=ps
399     X\x{123}x\=ps
400     X\x{123}\x{123}x\=ps
401     X\x{123}\x{123}\x{123}x\=ps
402     X\x{123}\x{123}\x{123}\x{123}x\=ps
403
404 /X\x{123}{2,4}?b/utf
405 \= Expect no match
406     Xx\=ps
407     X\x{123}x\=ps
408     X\x{123}\x{123}x\=ps
409     X\x{123}\x{123}\x{123}x\=ps
410     X\x{123}\x{123}\x{123}\x{123}x\=ps
411
412 /X\x{123}{2,4}+b/utf
413 \= Expect no match
414     Xx\=ps
415     X\x{123}x\=ps
416     X\x{123}\x{123}x\=ps
417     X\x{123}\x{123}\x{123}x\=ps
418     X\x{123}\x{123}\x{123}\x{123}x\=ps
419
420 /X\d{2,4}b/utf
421     X\=ps
422     X3\=ps
423     X33\=ps
424     X333\=ps
425     X3333\=ps
426
427 /X\d{2,4}?b/utf
428     X\=ps
429     X3\=ps
430     X33\=ps
431     X333\=ps
432     X3333\=ps
433
434 /X\d{2,4}+b/utf
435     X\=ps
436     X3\=ps
437     X33\=ps
438     X333\=ps
439     X3333\=ps
440
441 /X\D{2,4}b/utf
442     X\=ps
443     Xa\=ps
444     Xaa\=ps
445     Xaaa\=ps
446     Xaaaa\=ps
447
448 /X\D{2,4}?b/utf
449     X\=ps
450     Xa\=ps
451     Xaa\=ps
452     Xaaa\=ps
453     Xaaaa\=ps
454
455 /X\D{2,4}+b/utf
456     X\=ps
457     Xa\=ps
458     Xaa\=ps
459     Xaaa\=ps
460     Xaaaa\=ps
461
462 /X\D{2,4}b/utf
463     X\=ps
464     X\x{123}\=ps
465     X\x{123}\x{123}\=ps
466     X\x{123}\x{123}\x{123}\=ps
467     X\x{123}\x{123}\x{123}\x{123}\=ps
468
469 /X\D{2,4}?b/utf
470     X\=ps
471     X\x{123}\=ps
472     X\x{123}\x{123}\=ps
473     X\x{123}\x{123}\x{123}\=ps
474     X\x{123}\x{123}\x{123}\x{123}\=ps
475
476 /X\D{2,4}+b/utf
477     X\=ps
478     X\x{123}\=ps
479     X\x{123}\x{123}\=ps
480     X\x{123}\x{123}\x{123}\=ps
481     X\x{123}\x{123}\x{123}\x{123}\=ps
482
483 /X[abc]{2,4}b/utf
484     X\=ps
485     Xa\=ps
486     Xaa\=ps
487     Xaaa\=ps
488     Xaaaa\=ps
489
490 /X[abc]{2,4}?b/utf
491     X\=ps
492     Xa\=ps
493     Xaa\=ps
494     Xaaa\=ps
495     Xaaaa\=ps
496
497 /X[abc]{2,4}+b/utf
498     X\=ps
499     Xa\=ps
500     Xaa\=ps
501     Xaaa\=ps
502     Xaaaa\=ps
503
504 /X[abc\x{123}]{2,4}b/utf
505     X\=ps
506     X\x{123}\=ps
507     X\x{123}\x{123}\=ps
508     X\x{123}\x{123}\x{123}\=ps
509     X\x{123}\x{123}\x{123}\x{123}\=ps
510
511 /X[abc\x{123}]{2,4}?b/utf
512     X\=ps
513     X\x{123}\=ps
514     X\x{123}\x{123}\=ps
515     X\x{123}\x{123}\x{123}\=ps
516     X\x{123}\x{123}\x{123}\x{123}\=ps
517
518 /X[abc\x{123}]{2,4}+b/utf
519     X\=ps
520     X\x{123}\=ps
521     X\x{123}\x{123}\=ps
522     X\x{123}\x{123}\x{123}\=ps
523     X\x{123}\x{123}\x{123}\x{123}\=ps
524
525 /X[^a]{2,4}b/utf
526     X\=ps
527     Xz\=ps
528     Xzz\=ps
529     Xzzz\=ps
530     Xzzzz\=ps
531
532 /X[^a]{2,4}?b/utf
533     X\=ps
534     Xz\=ps
535     Xzz\=ps
536     Xzzz\=ps
537     Xzzzz\=ps
538
539 /X[^a]{2,4}+b/utf
540     X\=ps
541     Xz\=ps
542     Xzz\=ps
543     Xzzz\=ps
544     Xzzzz\=ps
545
546 /X[^a]{2,4}b/utf
547     X\=ps
548     X\x{123}\=ps
549     X\x{123}\x{123}\=ps
550     X\x{123}\x{123}\x{123}\=ps
551     X\x{123}\x{123}\x{123}\x{123}\=ps
552
553 /X[^a]{2,4}?b/utf
554     X\=ps
555     X\x{123}\=ps
556     X\x{123}\x{123}\=ps
557     X\x{123}\x{123}\x{123}\=ps
558     X\x{123}\x{123}\x{123}\x{123}\=ps
559
560 /X[^a]{2,4}+b/utf
561     X\=ps
562     X\x{123}\=ps
563     X\x{123}\x{123}\=ps
564     X\x{123}\x{123}\x{123}\=ps
565     X\x{123}\x{123}\x{123}\x{123}\=ps
566
567 /(Y)X\1{2,4}b/utf
568     YX\=ps
569     YXY\=ps
570     YXYY\=ps
571     YXYYY\=ps
572     YXYYYY\=ps
573
574 /(Y)X\1{2,4}?b/utf
575     YX\=ps
576     YXY\=ps
577     YXYY\=ps
578     YXYYY\=ps
579     YXYYYY\=ps
580
581 /(Y)X\1{2,4}+b/utf
582     YX\=ps
583     YXY\=ps
584     YXYY\=ps
585     YXYYY\=ps
586     YXYYYY\=ps
587
588 /(\x{123})X\1{2,4}b/utf
589     \x{123}X\=ps
590     \x{123}X\x{123}\=ps
591     \x{123}X\x{123}\x{123}\=ps
592     \x{123}X\x{123}\x{123}\x{123}\=ps
593     \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps
594
595 /(\x{123})X\1{2,4}?b/utf
596     \x{123}X\=ps
597     \x{123}X\x{123}\=ps
598     \x{123}X\x{123}\x{123}\=ps
599     \x{123}X\x{123}\x{123}\x{123}\=ps
600     \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps
601
602 /(\x{123})X\1{2,4}+b/utf
603     \x{123}X\=ps
604     \x{123}X\x{123}\=ps
605     \x{123}X\x{123}\x{123}\=ps
606     \x{123}X\x{123}\x{123}\x{123}\=ps
607     \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps
608
609 /\bthe cat\b/utf
610     the cat\=ps
611     the cat\=ph
612
613 /abcd*/utf
614     xxxxabcd\=ps
615     xxxxabcd\=ph
616
617 /abcd*/i,utf
618     xxxxabcd\=ps
619     xxxxabcd\=ph
620     XXXXABCD\=ps
621     XXXXABCD\=ph
622
623 /abc\d*/utf
624     xxxxabc1\=ps
625     xxxxabc1\=ph
626
627 /(a)bc\1*/utf
628     xxxxabca\=ps
629     xxxxabca\=ph
630
631 /abc[de]*/utf
632     xxxxabcde\=ps
633     xxxxabcde\=ph
634
635 /X\W{3}X/utf
636     X\=ps
637
638 /\sxxx\s/utf,tables=2
639     AB\x{85}xxx\x{a0}XYZ
640     AB\x{a0}xxx\x{85}XYZ
641
642 /\S \S/utf,tables=2
643     \x{a2} \x{84}
644
645 'A#хц'Bx,newline=any,utf
646
647 'A#хц
648   PQ'Bx,newline=any,utf
649
650 /a+#хaa
651   z#XX?/Bx,newline=any,utf
652
653 /a+#хaa
654   z#х?/Bx,newline=any,utf
655
656 /\g{A}xxx#bXX(?'A'123)\r(?'A'456)/Bx,newline=any,utf
657
658 /\g{A}xxx#bх(?'A'123)\r(?'A'456)/Bx,newline=any,utf
659
660 /^\cģ/utf
661
662 /(\R*)(.)/s,utf
663     \r\n
664     \r\r\n\n\r
665     \r\r\n\n\r\n
666
667 /(\R)*(.)/s,utf
668     \r\n
669     \r\r\n\n\r
670     \r\r\n\n\r\n
671
672 /[^\x{1234}]+/Ii,utf
673
674 /[^\x{1234}]+?/Ii,utf
675
676 /[^\x{1234}]++/Ii,utf
677
678 /[^\x{1234}]{2}/Ii,utf
679
680 /f.*/
681     for\=ph
682
683 /f.*/s
684     for\=ph
685
686 /f.*/utf
687     for\=ph
688
689 /f.*/s,utf
690     for\=ph
691
692 /\x{d7ff}\x{e000}/utf
693
694 /\x{d800}/utf
695
696 /\x{dfff}/utf
697
698 /\h+/utf
699     \x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
700     \x{3001}\x{2fff}\x{200a}\x{a0}\x{2000}
701
702 /[\h\x{e000}]+/B,utf
703     \x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
704     \x{3001}\x{2fff}\x{200a}\x{a0}\x{2000}
705
706 /\H+/utf
707     \x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
708     \x{2000}\x{200a}\x{1fff}\x{200b}
709     \x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
710     \x{a0}\x{3000}\x{9f}\x{a1}\x{2fff}\x{3001}
711
712 /[\H\x{d7ff}]+/B,utf
713     \x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
714     \x{2000}\x{200a}\x{1fff}\x{200b}
715     \x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
716     \x{a0}\x{3000}\x{9f}\x{a1}\x{2fff}\x{3001}
717
718 /\v+/utf
719     \x{2027}\x{2030}\x{2028}\x{2029}
720     \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
721
722 /[\v\x{e000}]+/B,utf
723     \x{2027}\x{2030}\x{2028}\x{2029}
724     \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
725
726 /\V+/utf
727     \x{2028}\x{2029}\x{2027}\x{2030}
728     \x{85}\x0a\x0b\x0c\x0d\x09\x0e\x{84}\x{86}
729
730 /[\V\x{d7ff}]+/B,utf
731     \x{2028}\x{2029}\x{2027}\x{2030}
732     \x{85}\x0a\x0b\x0c\x0d\x09\x0e\x{84}\x{86}
733
734 /\R+/bsr=unicode,utf
735     \x{2027}\x{2030}\x{2028}\x{2029}
736     \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
737
738 /(..)\1/utf
739     ab\=ps
740     aba\=ps
741     abab\=ps
742
743 /(..)\1/i,utf
744     ab\=ps
745     abA\=ps
746     aBAb\=ps
747
748 /(..)\1{2,}/utf
749     ab\=ps
750     aba\=ps
751     abab\=ps
752     ababa\=ps
753     ababab\=ps
754     ababab\=ph
755     abababa\=ps
756     abababa\=ph
757
758 /(..)\1{2,}/i,utf
759     ab\=ps
760     aBa\=ps
761     aBAb\=ps
762     AbaBA\=ps
763     abABAb\=ps
764     aBAbaB\=ph
765     abABabA\=ps
766     abaBABa\=ph
767
768 /(..)\1{2,}?x/i,utf
769     ab\=ps
770     abA\=ps
771     aBAb\=ps
772     abaBA\=ps
773     abAbaB\=ps
774     abaBabA\=ps
775     abAbABaBx\=ps
776
777 /./utf,newline=crlf
778     \r\=ps
779     \r\=ph
780
781 /.{2,3}/utf,newline=crlf
782     \r\=ps
783     \r\=ph
784     \r\r\=ps
785     \r\r\=ph
786     \r\r\r\=ps
787     \r\r\r\=ph
788
789 /.{2,3}?/utf,newline=crlf
790     \r\=ps
791     \r\=ph
792     \r\r\=ps
793     \r\r\=ph
794     \r\r\r\=ps
795     \r\r\r\=ph
796
797 /[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/B,utf
798
799 /[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/Bi,utf
800
801 /[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/B,utf
802
803 /[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/Bi,utf
804
805 /(?<=\x{1234}\x{1234})\bxy/I,utf
806
807 /(?<!^)ETA/utf
808 \= Expect no match
809     ETA
810
811 /\u0100/B,utf,alt_bsux,allow_empty_class,match_unset_backref
812
813 /[\u0100-\u0200]/B,utf,alt_bsux,allow_empty_class,match_unset_backref
814
815 /\ud800/utf,alt_bsux,allow_empty_class,match_unset_backref
816
817 /^a+[a\x{200}]/B,utf
818     aa
819
820 /[b-d\x{200}-\x{250}]*[ae-h]?#[\x{200}-\x{250}]{0,8}[\x00-\xff]*#[\x{200}-\x{250}]+[a-z]/B,utf
821
822 /[\p{L}]/IB
823
824 /[\p{^L}]/IB
825
826 /[\P{L}]/IB
827
828 /[\P{^L}]/IB
829
830 /[abc\p{L}\x{0660}]/IB,utf
831
832 /[\p{Nd}]/IB,utf
833     1234
834
835 /[\p{Nd}+-]+/IB,utf
836     1234
837     12-34
838     12+\x{661}-34
839 \= Expect no match
840     abcd
841
842 /(?:[\PPa*]*){8,}/
843
844 /[\P{Any}]/B
845
846 /[\P{Any}\E]/B
847
848 /(\P{Yi}+\277)/
849
850 /(\P{Yi}+\277)?/
851
852 /(?<=\P{Yi}{3}A)X/
853
854 /\p{Yi}+(\P{Yi}+)(?1)/
855
856 /(\P{Yi}{2}\277)?/
857
858 /[\P{Yi}A]/
859
860 /[\P{Yi}\P{Yi}\P{Yi}A]/
861
862 /[^\P{Yi}A]/
863
864 /[^\P{Yi}\P{Yi}\P{Yi}A]/
865
866 /(\P{Yi}*\277)*/
867
868 /(\P{Yi}*?\277)*/
869
870 /(\p{Yi}*+\277)*/
871
872 /(\P{Yi}?\277)*/
873
874 /(\P{Yi}??\277)*/
875
876 /(\p{Yi}?+\277)*/
877
878 /(\P{Yi}{0,3}\277)*/
879
880 /(\P{Yi}{0,3}?\277)*/
881
882 /(\p{Yi}{0,3}+\277)*/
883
884 /\p{Zl}{2,3}+/B,utf
885     


886     \x{2028}\x{2028}\x{2028}
887
888 /\p{Zl}/B,utf
889
890 /\p{Lu}{3}+/B,utf
891
892 /\pL{2}+/B,utf
893
894 /\p{Cc}{2}+/B,utf
895
896 /^\p{Cf}/utf
897     \x{180e}
898     \x{061c}
899     \x{2066}
900     \x{2067}
901     \x{2068}
902     \x{2069}
903
904 /^\p{Cs}/utf
905     \x{dfff}\=no_utf_check
906 \= Expect no match
907     \x{09f}
908
909 /^\p{Mn}/utf
910     \x{1a1b}
911
912 /^\p{Pe}/utf
913     \x{2309}
914     \x{230b}
915
916 /^\p{Ps}/utf
917     \x{2308}
918     \x{230a}
919
920 /^\p{Sc}+/utf
921     $\x{a2}\x{a3}\x{a4}\x{a5}\x{a6}
922     \x{9f2}
923 \= Expect no match
924     X
925     \x{2c2}
926
927 /^\p{Zs}/utf
928     \ \
929     \x{a0}
930     \x{1680}
931     \x{2000}
932     \x{2001}
933 \= Expect no match
934     \x{2028}
935     \x{200d}
936
937 # These are here because Perl has problems with the negative versions of the
938 # properties and has changed how it behaves for caseless matching.
939
940 /\p{^Lu}/i,utf
941     1234
942 \= Expect no match
943     ABC
944
945 /\P{Lu}/i,utf
946     1234
947 \= Expect no match
948     ABC
949
950 /\p{Ll}/i,utf
951     a
952     Az
953 \= Expect no match
954     ABC
955
956 /\p{Lu}/i,utf
957     A
958     a\x{10a0}B
959 \= Expect no match
960     a
961     \x{1d00}
962
963 /\p{Lu}/i,utf
964     A
965     aZ
966 \= Expect no match
967     abc
968
969 /[\x{c0}\x{391}]/i,utf
970     \x{c0}
971     \x{e0}
972
973 # The next two are special cases where the lengths of the different cases of
974 # the same character differ. The first went wrong with heap frame storage; the
975 # second was broken in all cases.
976
977 /^\x{023a}+?(\x{0130}+)/i,utf
978   \x{023a}\x{2c65}\x{0130}
979
980 /^\x{023a}+([^X])/i,utf
981   \x{023a}\x{2c65}X
982
983 /\x{c0}+\x{116}+/i,utf
984     \x{c0}\x{e0}\x{116}\x{117}
985
986 /[\x{c0}\x{116}]+/i,utf
987     \x{c0}\x{e0}\x{116}\x{117}
988
989 /(\x{de})\1/i,utf
990     \x{de}\x{de}
991     \x{de}\x{fe}
992     \x{fe}\x{fe}
993     \x{fe}\x{de}
994
995 /^\x{c0}$/i,utf
996     \x{c0}
997     \x{e0}
998
999 /^\x{e0}$/i,utf
1000     \x{c0}
1001     \x{e0}
1002
1003 # The next two should be Perl-compatible, but it fails to match \x{e0}. PCRE
1004 # will match it only with UCP support, because without that it has no notion
1005 # of case for anything other than the ASCII letters.
1006
1007 /((?i)[\x{c0}])/utf
1008     \x{c0}
1009     \x{e0}
1010
1011 /(?i:[\x{c0}])/utf
1012     \x{c0}
1013     \x{e0}
1014
1015 # These are PCRE's extra properties to help with Unicodizing \d etc.
1016
1017 /^\p{Xan}/utf
1018     ABCD
1019     1234
1020     \x{6ca}
1021     \x{a6c}
1022     \x{10a7}
1023 \= Expect no match
1024     _ABC
1025
1026 /^\p{Xan}+/utf
1027     ABCD1234\x{6ca}\x{a6c}\x{10a7}_
1028 \= Expect no match
1029     _ABC
1030
1031 /^\p{Xan}+?/utf
1032     \x{6ca}\x{a6c}\x{10a7}_
1033
1034 /^\p{Xan}*/utf
1035     ABCD1234\x{6ca}\x{a6c}\x{10a7}_
1036
1037 /^\p{Xan}{2,9}/utf
1038     ABCD1234\x{6ca}\x{a6c}\x{10a7}_
1039
1040 /^\p{Xan}{2,9}?/utf
1041     \x{6ca}\x{a6c}\x{10a7}_
1042
1043 /^[\p{Xan}]/utf
1044     ABCD1234_
1045     1234abcd_
1046     \x{6ca}
1047     \x{a6c}
1048     \x{10a7}
1049 \= Expect no match
1050     _ABC
1051
1052 /^[\p{Xan}]+/utf
1053     ABCD1234\x{6ca}\x{a6c}\x{10a7}_
1054 \= Expect no match
1055     _ABC
1056
1057 /^>\p{Xsp}/utf
1058     >\x{1680}\x{2028}\x{0b}
1059     >\x{a0}
1060 \= Expect no match
1061     \x{0b}
1062
1063 /^>\p{Xsp}+/utf
1064     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1065
1066 /^>\p{Xsp}+?/utf
1067     >\x{1680}\x{2028}\x{0b}
1068
1069 /^>\p{Xsp}*/utf
1070     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1071
1072 /^>\p{Xsp}{2,9}/utf
1073     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1074
1075 /^>\p{Xsp}{2,9}?/utf
1076     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1077
1078 /^>[\p{Xsp}]/utf
1079     >\x{2028}\x{0b}
1080
1081 /^>[\p{Xsp}]+/utf
1082     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1083
1084 /^>\p{Xps}/utf
1085     >\x{1680}\x{2028}\x{0b}
1086     >\x{a0}
1087 \= Expect no match
1088     \x{0b}
1089
1090 /^>\p{Xps}+/utf
1091     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1092
1093 /^>\p{Xps}+?/utf
1094     >\x{1680}\x{2028}\x{0b}
1095
1096 /^>\p{Xps}*/utf
1097     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1098
1099 /^>\p{Xps}{2,9}/utf
1100     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1101
1102 /^>\p{Xps}{2,9}?/utf
1103     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1104
1105 /^>[\p{Xps}]/utf
1106     >\x{2028}\x{0b}
1107
1108 /^>[\p{Xps}]+/utf
1109     > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1110
1111 /^\p{Xwd}/utf
1112     ABCD
1113     1234
1114     \x{6ca}
1115     \x{a6c}
1116     \x{10a7}
1117     _ABC
1118 \= Expect no match
1119     []
1120
1121 /^\p{Xwd}+/utf
1122     ABCD1234\x{6ca}\x{a6c}\x{10a7}_
1123
1124 /^\p{Xwd}+?/utf
1125     \x{6ca}\x{a6c}\x{10a7}_
1126
1127 /^\p{Xwd}*/utf
1128     ABCD1234\x{6ca}\x{a6c}\x{10a7}_
1129
1130 /^\p{Xwd}{2,9}/utf
1131     A_B12\x{6ca}\x{a6c}\x{10a7}
1132
1133 /^\p{Xwd}{2,9}?/utf
1134     \x{6ca}\x{a6c}\x{10a7}_
1135
1136 /^[\p{Xwd}]/utf
1137     ABCD1234_
1138     1234abcd_
1139     \x{6ca}
1140     \x{a6c}
1141     \x{10a7}
1142     _ABC
1143 \= Expect no match
1144     []
1145
1146 /^[\p{Xwd}]+/utf
1147     ABCD1234\x{6ca}\x{a6c}\x{10a7}_
1148
1149 # A check not in UTF-8 mode
1150
1151 /^[\p{Xwd}]+/
1152     ABCD1234_
1153
1154 # Some negative checks
1155
1156 /^[\P{Xwd}]+/utf
1157     !.+\x{019}\x{35a}AB
1158
1159 /^[\p{^Xwd}]+/utf
1160     !.+\x{019}\x{35a}AB
1161
1162 /[\D]/B,utf,ucp
1163     1\x{3c8}2
1164
1165 /[\d]/B,utf,ucp
1166     >\x{6f4}<
1167
1168 /[\S]/B,utf,ucp
1169     \x{1680}\x{6f4}\x{1680}
1170
1171 /[\s]/B,utf,ucp
1172     >\x{1680}<
1173
1174 /[\W]/B,utf,ucp
1175     A\x{1712}B
1176
1177 /[\w]/B,utf,ucp
1178     >\x{1723}<
1179
1180 /\D/B,utf,ucp
1181     1\x{3c8}2
1182
1183 /\d/B,utf,ucp
1184     >\x{6f4}<
1185
1186 /\S/B,utf,ucp
1187     \x{1680}\x{6f4}\x{1680}
1188
1189 /\s/B,utf,ucp
1190     >\x{1680}>
1191
1192 /\W/B,utf,ucp
1193     A\x{1712}B
1194
1195 /\w/B,utf,ucp
1196     >\x{1723}<
1197
1198 /[[:alpha:]]/B,ucp
1199
1200 /[[:lower:]]/B,ucp
1201
1202 /[[:upper:]]/B,ucp
1203
1204 /[[:alnum:]]/B,ucp
1205
1206 /[[:ascii:]]/B,ucp
1207
1208 /[[:cntrl:]]/B,ucp
1209
1210 /[[:digit:]]/B,ucp
1211
1212 /[[:graph:]]/B,ucp
1213
1214 /[[:print:]]/B,ucp
1215
1216 /[[:punct:]]/B,ucp
1217
1218 /[[:space:]]/B,ucp
1219
1220 /[[:word:]]/B,ucp
1221
1222 /[[:xdigit:]]/B,ucp
1223
1224 # Unicode properties for \b abd \B
1225
1226 /\b...\B/utf,ucp
1227     abc_
1228     \x{37e}abc\x{376}
1229     \x{37e}\x{376}\x{371}\x{393}\x{394}
1230     !\x{c0}++\x{c1}\x{c2}
1231     !\x{c0}+++++
1232
1233 # Without PCRE_UCP, non-ASCII always fail, even if < 256
1234
1235 /\b...\B/utf
1236     abc_
1237 \= Expect no match
1238     \x{37e}abc\x{376}
1239     \x{37e}\x{376}\x{371}\x{393}\x{394}
1240     !\x{c0}++\x{c1}\x{c2}
1241     !\x{c0}+++++
1242
1243 # With PCRE_UCP, non-UTF8 chars that are < 256 still check properties
1244
1245 /\b...\B/ucp
1246     abc_
1247     !\x{c0}++\x{c1}\x{c2}
1248     !\x{c0}+++++
1249
1250 # Some of these are silly, but they check various combinations
1251
1252 /[[:^alpha:][:^cntrl:]]+/B,utf,ucp
1253     123
1254     abc
1255
1256 /[[:^cntrl:][:^alpha:]]+/B,utf,ucp
1257     123
1258     abc
1259
1260 /[[:alpha:]]+/B,utf,ucp
1261     abc
1262
1263 /[[:^alpha:]\S]+/B,utf,ucp
1264     123
1265     abc
1266
1267 /[^\d]+/B,utf,ucp
1268     abc123
1269     abc\x{123}
1270     \x{660}abc
1271
1272 /\p{Lu}+9\p{Lu}+B\p{Lu}+b/B
1273
1274 /\p{^Lu}+9\p{^Lu}+B\p{^Lu}+b/B
1275
1276 /\P{Lu}+9\P{Lu}+B\P{Lu}+b/B
1277
1278 /\p{Han}+X\p{Greek}+\x{370}/B,utf
1279
1280 /\p{Xan}+!\p{Xan}+A/B
1281
1282 /\p{Xsp}+!\p{Xsp}\t/B
1283
1284 /\p{Xps}+!\p{Xps}\t/B
1285
1286 /\p{Xwd}+!\p{Xwd}_/B
1287
1288 /A+\p{N}A+\dB+\p{N}*B+\d*/B,ucp
1289
1290 # These behaved oddly in Perl, so they are kept in this test
1291
1292 /(\x{23a}\x{23a}\x{23a})?\1/i,utf
1293 \= Expect no match
1294     \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
1295
1296 /(ȺȺȺ)?\1/i,utf
1297 \= Expect no match
1298     ȺȺȺⱥⱥ
1299
1300 /(\x{23a}\x{23a}\x{23a})?\1/i,utf
1301     \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1302
1303 /(ȺȺȺ)?\1/i,utf
1304     ȺȺȺⱥⱥⱥ
1305
1306 /(\x{23a}\x{23a}\x{23a})\1/i,utf
1307 \= Expect no match
1308     \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
1309
1310 /(ȺȺȺ)\1/i,utf
1311 \= Expect no match
1312     ȺȺȺⱥⱥ
1313
1314 /(\x{23a}\x{23a}\x{23a})\1/i,utf
1315     \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1316
1317 /(ȺȺȺ)\1/i,utf
1318     ȺȺȺⱥⱥⱥ
1319
1320 /(\x{2c65}\x{2c65})\1/i,utf
1321     \x{2c65}\x{2c65}\x{23a}\x{23a}
1322
1323 /(ⱥⱥ)\1/i,utf
1324     ⱥⱥȺȺ
1325
1326 /(\x{23a}\x{23a}\x{23a})\1Y/i,utf
1327     X\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}YZ
1328
1329 /(\x{2c65}\x{2c65})\1Y/i,utf
1330     X\x{2c65}\x{2c65}\x{23a}\x{23a}YZ
1331
1332 # These scripts weren't yet in Perl when I added Unicode 6.0.0 to PCRE
1333
1334 /^[\p{Batak}]/utf
1335     \x{1bc0}
1336     \x{1bff}
1337 \= Expect no match
1338     \x{1bf4}
1339
1340 /^[\p{Brahmi}]/utf
1341     \x{11000}
1342     \x{1106f}
1343 \= Expect no match
1344     \x{1104e}
1345
1346 /^[\p{Mandaic}]/utf
1347     \x{840}
1348     \x{85e}
1349 \= Expect no match
1350     \x{85c}
1351     \x{85d}
1352
1353 /(\X*)(.)/s,utf
1354     A\x{300}
1355
1356 /^S(\X*)e(\X*)$/utf
1357     Stéréo
1358
1359 /^\X/utf
1360     ́réo
1361
1362 /^a\X41z/alt_bsux,allow_empty_class,match_unset_backref,dupnames
1363     aX41z
1364 \= Expect no match
1365     aAz
1366
1367 /\X/
1368     a\=ps
1369     a\=ph
1370
1371 /\Xa/
1372     aa\=ps
1373     aa\=ph
1374
1375 /\X{2}/
1376     aa\=ps
1377     aa\=ph
1378
1379 /\X+a/
1380     a\=ps
1381     aa\=ps
1382     aa\=ph
1383
1384 /\X+?a/
1385     a\=ps
1386     ab\=ps
1387     aa\=ps
1388     aa\=ph
1389     aba\=ps
1390
1391 # These Unicode 6.1.0 scripts are not known to Perl.
1392
1393 /\p{Chakma}\d/utf,ucp
1394     \x{11100}\x{1113c}
1395
1396 /\p{Takri}\d/utf,ucp
1397     \x{11680}\x{116c0}
1398
1399 /^\X/utf
1400     A\=ps
1401     A\=ph
1402     A\x{300}\x{301}\=ps
1403     A\x{300}\x{301}\=ph
1404     A\x{301}\=ps
1405     A\x{301}\=ph
1406
1407 /^\X{2,3}/utf
1408     A\=ps
1409     A\=ph
1410     AA\=ps
1411     AA\=ph
1412     A\x{300}\x{301}\=ps
1413     A\x{300}\x{301}\=ph
1414     A\x{300}\x{301}A\x{300}\x{301}\=ps
1415     A\x{300}\x{301}A\x{300}\x{301}\=ph
1416
1417 /^\X{2}/utf
1418     AA\=ps
1419     AA\=ph
1420     A\x{300}\x{301}A\x{300}\x{301}\=ps
1421     A\x{300}\x{301}A\x{300}\x{301}\=ph
1422
1423 /^\X+/utf
1424     AA\=ps
1425     AA\=ph
1426
1427 /^\X+?Z/utf
1428     AA\=ps
1429     AA\=ph
1430
1431 /A\x{3a3}B/IBi,utf
1432
1433 /[\x{3a3}]/Bi,utf
1434
1435 /[^\x{3a3}]/Bi,utf
1436
1437 /[\x{3a3}]+/Bi,utf
1438
1439 /[^\x{3a3}]+/Bi,utf
1440
1441 /a*\x{3a3}/Bi,utf
1442
1443 /\x{3a3}+a/Bi,utf
1444
1445 /\x{3a3}*\x{3c2}/Bi,utf
1446
1447 /\x{3a3}{3}/i,utf,aftertext
1448     \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
1449
1450 /\x{3a3}{2,4}/i,utf,aftertext
1451     \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
1452
1453 /\x{3a3}{2,4}?/i,utf,aftertext
1454     \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
1455
1456 /\x{3a3}+./i,utf,aftertext
1457     \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
1458
1459 /\x{3a3}++./i,utf,aftertext
1460 \= Expect no match
1461     \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
1462
1463 /\x{3a3}*\x{3c2}/Bi,utf
1464
1465 /[^\x{3a3}]*\x{3c2}/Bi,utf
1466
1467 /[^a]*\x{3c2}/Bi,utf
1468
1469 /ist/Bi,utf
1470 \= Expect no match
1471     ikt
1472
1473 /is+t/i,utf
1474     iSs\x{17f}t
1475 \= Expect no match
1476     ikt
1477
1478 /is+?t/i,utf
1479 \= Expect no match
1480     ikt
1481
1482 /is?t/i,utf
1483 \= Expect no match
1484     ikt
1485
1486 /is{2}t/i,utf
1487 \= Expect no match
1488     iskt
1489
1490 # This property is a PCRE special
1491
1492 /^\p{Xuc}/utf
1493     $abc
1494     @abc
1495     `abc
1496     \x{1234}abc
1497 \= Expect no match
1498     abc
1499
1500 /^\p{Xuc}+/utf
1501     $@`\x{a0}\x{1234}\x{e000}**
1502 \= Expect no match
1503     \x{9f}
1504
1505 /^\p{Xuc}+?/utf
1506     $@`\x{a0}\x{1234}\x{e000}**
1507 \= Expect no match
1508     \x{9f}
1509
1510 /^\p{Xuc}+?\*/utf
1511     $@`\x{a0}\x{1234}\x{e000}**
1512 \= Expect no match
1513     \x{9f}
1514
1515 /^\p{Xuc}++/utf
1516     $@`\x{a0}\x{1234}\x{e000}**
1517 \= Expect no match
1518     \x{9f}
1519
1520 /^\p{Xuc}{3,5}/utf
1521     $@`\x{a0}\x{1234}\x{e000}**
1522 \= Expect no match
1523     \x{9f}
1524
1525 /^\p{Xuc}{3,5}?/utf
1526     $@`\x{a0}\x{1234}\x{e000}**
1527 \= Expect no match
1528     \x{9f}
1529
1530 /^[\p{Xuc}]/utf
1531     $@`\x{a0}\x{1234}\x{e000}**
1532 \= Expect no match
1533     \x{9f}
1534
1535 /^[\p{Xuc}]+/utf
1536     $@`\x{a0}\x{1234}\x{e000}**
1537 \= Expect no match
1538     \x{9f}
1539
1540 /^\P{Xuc}/utf
1541     abc
1542 \= Expect no match
1543     $abc
1544     @abc
1545     `abc
1546     \x{1234}abc
1547
1548 /^[\P{Xuc}]/utf
1549     abc
1550 \= Expect no match
1551     $abc
1552     @abc
1553     `abc
1554     \x{1234}abc
1555
1556 # Some auto-possessification tests
1557
1558 /\pN+\z/B
1559
1560 /\PN+\z/B
1561
1562 /\pN+/B
1563
1564 /\PN+/B
1565
1566 /\p{Any}+\p{Any} \p{Any}+\P{Any} \p{Any}+\p{L&} \p{Any}+\p{L} \p{Any}+\p{Lu} \p{Any}+\p{Han} \p{Any}+\p{Xan} \p{Any}+\p{Xsp} \p{Any}+\p{Xps} \p{Xwd}+\p{Any} \p{Any}+\p{Xuc}/Bx,ucp
1567
1568 /\p{L&}+\p{Any} \p{L&}+\p{L&} \P{L&}+\p{L&} \p{L&}+\p{L} \p{L&}+\p{Lu} \p{L&}+\p{Han} \p{L&}+\p{Xan} \p{L&}+\P{Xan} \p{L&}+\p{Xsp} \p{L&}+\p{Xps} \p{Xwd}+\p{L&} \p{L&}+\p{Xuc}/Bx,ucp
1569
1570 /\p{N}+\p{Any} \p{N}+\p{L&} \p{N}+\p{L} \p{N}+\P{L} \p{N}+\P{N} \p{N}+\p{Lu} \p{N}+\p{Han} \p{N}+\p{Xan} \p{N}+\p{Xsp} \p{N}+\p{Xps} \p{Xwd}+\p{N} \p{N}+\p{Xuc}/Bx,ucp
1571
1572 /\p{Lu}+\p{Any} \p{Lu}+\p{L&} \p{Lu}+\p{L} \p{Lu}+\p{Lu} \P{Lu}+\p{Lu} \p{Lu}+\p{Nd} \p{Lu}+\P{Nd} \p{Lu}+\p{Han} \p{Lu}+\p{Xan} \p{Lu}+\p{Xsp} \p{Lu}+\p{Xps} \p{Xwd}+\p{Lu} \p{Lu}+\p{Xuc}/Bx,ucp
1573
1574 /\p{Han}+\p{Lu} \p{Han}+\p{L&} \p{Han}+\p{L} \p{Han}+\p{Lu} \p{Han}+\p{Arabic} \p{Arabic}+\p{Arabic} \p{Han}+\p{Xan} \p{Han}+\p{Xsp} \p{Han}+\p{Xps} \p{Xwd}+\p{Han} \p{Han}+\p{Xuc}/Bx,ucp
1575
1576 /\p{Xan}+\p{Any} \p{Xan}+\p{L&} \P{Xan}+\p{L&} \p{Xan}+\p{L} \p{Xan}+\p{Lu} \p{Xan}+\p{Han} \p{Xan}+\p{Xan} \p{Xan}+\P{Xan} \p{Xan}+\p{Xsp} \p{Xan}+\p{Xps} \p{Xwd}+\p{Xan} \p{Xan}+\p{Xuc}/Bx,ucp
1577
1578 /\p{Xsp}+\p{Any} \p{Xsp}+\p{L&} \p{Xsp}+\p{L} \p{Xsp}+\p{Lu} \p{Xsp}+\p{Han} \p{Xsp}+\p{Xan} \p{Xsp}+\p{Xsp} \P{Xsp}+\p{Xsp} \p{Xsp}+\p{Xps} \p{Xwd}+\p{Xsp} \p{Xsp}+\p{Xuc}/Bx,ucp
1579
1580 /\p{Xwd}+\p{Any} \p{Xwd}+\p{L&} \p{Xwd}+\p{L} \p{Xwd}+\p{Lu} \p{Xwd}+\p{Han} \p{Xwd}+\p{Xan} \p{Xwd}+\p{Xsp} \p{Xwd}+\p{Xps} \p{Xwd}+\p{Xwd} \p{Xwd}+\P{Xwd} \p{Xwd}+\p{Xuc}/Bx,ucp
1581
1582 /\p{Xuc}+\p{Any} \p{Xuc}+\p{L&} \p{Xuc}+\p{L} \p{Xuc}+\p{Lu} \p{Xuc}+\p{Han} \p{Xuc}+\p{Xan} \p{Xuc}+\p{Xsp} \p{Xuc}+\p{Xps} \p{Xwd}+\p{Xuc} \p{Xuc}+\p{Xuc} \p{Xuc}+\P{Xuc}/Bx,ucp
1583
1584 /\p{N}+\p{Ll} \p{N}+\p{Nd} \p{N}+\P{Nd}/Bx,ucp
1585
1586 /\p{Xan}+\p{L} \p{Xan}+\p{N} \p{Xan}+\p{C} \p{Xan}+\P{L} \P{Xan}+\p{N} \p{Xan}+\P{C}/Bx,ucp
1587
1588 /\p{L}+\p{Xan} \p{N}+\p{Xan} \p{C}+\p{Xan} \P{L}+\p{Xan} \p{N}+\p{Xan} \P{C}+\p{Xan} \p{L}+\P{Xan}/Bx,ucp
1589
1590 /\p{Xan}+\p{Lu} \p{Xan}+\p{Nd} \p{Xan}+\p{Cc} \p{Xan}+\P{Ll} \P{Xan}+\p{No} \p{Xan}+\P{Cf}/Bx,ucp
1591
1592 /\p{Lu}+\p{Xan} \p{Nd}+\p{Xan} \p{Cs}+\p{Xan} \P{Lt}+\p{Xan} \p{Nl}+\p{Xan} \P{Cc}+\p{Xan} \p{Lt}+\P{Xan}/Bx,ucp
1593
1594 /\w+\p{P} \w+\p{Po} \w+\s \p{Xan}+\s \s+\p{Xan} \s+\w/Bx,ucp
1595
1596 /\w+\P{P} \W+\p{Po} \w+\S \P{Xan}+\s \s+\P{Xan} \s+\W/Bx,ucp
1597
1598 /\w+\p{Po} \w+\p{Pc} \W+\p{Po} \W+\p{Pc} \w+\P{Po} \w+\P{Pc}/Bx,ucp
1599
1600 /\p{Nl}+\p{Xan} \P{Nl}+\p{Xan} \p{Nl}+\P{Xan} \P{Nl}+\P{Xan}/Bx,ucp
1601
1602 /\p{Xan}+\p{Nl} \P{Xan}+\p{Nl} \p{Xan}+\P{Nl} \P{Xan}+\P{Nl}/Bx,ucp
1603
1604 /\p{Xan}+\p{Nd} \P{Xan}+\p{Nd} \p{Xan}+\P{Nd} \P{Xan}+\P{Nd}/Bx,ucp
1605
1606 # End auto-possessification tests
1607
1608 /\w+/B,utf,ucp,auto_callout
1609     abcd
1610
1611 /[\p{N}]?+/B,no_auto_possess
1612
1613 /[\p{L}ab]{2,3}+/B,no_auto_possess
1614
1615 /\D+\X \d+\X \S+\X \s+\X \W+\X \w+\X \R+\X \H+\X \h+\X \V+\X \v+\X a+\X \n+\X .+\X/Bx
1616
1617 /.+\X/Bsx
1618
1619 /\X+$/Bmx
1620
1621 /\X+\D \X+\d \X+\S \X+\s \X+\W \X+\w \X+. \X+\R \X+\H \X+\h \X+\V \X+\v \X+\X \X+\Z \X+\z \X+$/Bx
1622
1623 /\d+\s{0,5}=\s*\S?=\w{0,4}\W*/B,utf,ucp
1624
1625 /[RST]+/Bi,utf,ucp
1626
1627 /[R-T]+/Bi,utf,ucp
1628
1629 /[Q-U]+/Bi,utf,ucp
1630
1631 /^s?c/Iim,utf
1632     scat
1633
1634 /\X?abc/utf,no_start_optimize
1635     \xff\x7f\x00\x00\x03\x00\x41\xcc\x80\x41\x{300}\x61\x62\x63\x00\=no_utf_check,offset=06
1636
1637 /\x{100}\x{200}\K\x{300}/utf,startchar
1638     \x{100}\x{200}\x{300}
1639
1640 # Test UTF characters in a substitution
1641
1642 /ábc/utf,replace=XሴZ
1643     123ábc123
1644
1645 /(?<=abc)(|def)/g,utf,replace=<$0>
1646     123abcáyzabcdef789abcሴqr
1647
1648 /[A-`]/iB,utf
1649     abcdefghijklmno
1650
1651 /(?<=\K\x{17f})/g,utf,aftertext
1652     \x{17f}\x{17f}\x{17f}\x{17f}\x{17f}
1653
1654 /(?<=\K\x{17f})/altglobal,utf,aftertext
1655     \x{17f}\x{17f}\x{17f}\x{17f}\x{17f}
1656
1657 "\xa\xf<(.\pZ*\P{Xwd}+^\xa8\3'3yq.::?(?J:()\xd1+!~:3'(8?:)':(?'d'(?'d'^u]!.+.+\\A\Ah(n+?9){7}+\K;(?'X'u'(?'c'(?'z'(?<y>\xb::\xf0'|\xd3(\xae?'w(z\x8?P>l)\x8?P>a)'\H\R\xd1+!!~:3'(?:h$N{26875}\W+?\\=D{2}\x89(?i:Uy0\N({2\xa(\v\x85*){y*\A(()\p{L}+?\P{^Xan}'+?\xff\+pS\?|).{;y*\A(()\p{L}+?\8}\d?1(|)(/1){7}.+[Lp{Me}].\s\xdcC*?(?(<y>))(?<!^)$C((;*?(R))+(\xbf(R))\x8a\X*?\x8a\xb\xd1^9\3*+(\xc1,\k'R'\xb4)\xcc(z\z(?J)(?'X'\x1b(\xb\xd1^9\?'3*+P{^Xan}+?\xff\+(\xc1.]k+\xb'Pm'\xb4)\xcc4f\xa7'\xd1V(?i:U,{2,2})'(?'X'))?-%--\x95$9*\4'|\xd1(\x9c''%\x94$9)#(?'R')3\x7?('P\xed7'\xa8\xb1^u\xeaw\1\0\0\(|(?1){7}.+[\p{Me}].\s\xdcC*^\x14?(?(<y>))(?<!^)$C((;*?(R*?))+(?(R)\x8a\X*?\x8a\xb\xd1^9\3*+|(\xc1,\k'R'\xb4)\xcc! z)\z(?JJ)(?'X';(\xb\xd1^9\?'3*+(\xc1.]k+\xb'Pm'\xb4))':(?'d')(?'RD'(d')|)|$)'|(?<x>\g{d});\g{x}\x11\g{d}\x81\|$((?'X'\'X'(?'W''\x92()'9'\x83*))\xba*\!?^ <){)':;\xcc4'\xd1'(?'X'28))?-%--\x95$9*\4'|\xd1((''e\x94*$9:)*#(?'R')3)\x7?('P\xed')\\x16:;()\x1e\x10*:(?<y>)\xd1+0!~:(?)'d'E:yD!\s(?'R'\x1e;\x10:U))|'\x9g!\xb0*){)\\x16:;()\x1e\x10\x87*:(?<y>)\xd1+!~:(?)'}'\d'E:yD!\s(?'R'\x1e;\x10:U))|'))|)g!\xb0*R+9{29+)#(?'P'})*?pS\{3,}\x85,{0,}l{*UTF)(\xe{7}){3722,{9,}d{2,?|))|{)\(A?&d}}{\xa,}2}){3,}7,l{)22}(,}l:7{2,4}}29\x19+)#?'P'})*v?))\x5"
1658
1659 /$(&.+[\p{Me}].\s\xdcC*?(?(<y>))(?<!^)$C((;*?(R))+(?(R)){0,6}?|){12\x8a\X*?\x8a\x0b\xd1^9\3*+(\xc1,\k'P'\xb4)\xcc(z\z(?JJ)(?'X'8};(\x0b\xd1^9\?'3*+(\xc1.]k+\x0b'Pm'\xb4\xcc4'\xd1'(?'X'))?-%--\x95$9*\4'|\xd1(''%\x95*$9)#(?'R')3\x07?('P\xed')\\x16:;()\x1e\x10*:(?<y>)\xd1+!~:(?)''(d'E:yD!\s(?'R'\x1e;\x10:U))|')g!\xb0*){29+))#(?'P'})*?/
1660
1661 "(*UTF)(*UCP)(.UTF).+X(\V+;\^(\D|)!999}(?(?C{7(?C')\H*\S*/^\x5\xa\\xd3\x85n?(;\D*(?m).[^mH+((*UCP)(*U:F)})(?!^)(?'"
1662
1663 /[\pS#moq]/
1664     =
1665
1666 /(*:a\x{12345}b\t(d\)c)xxx/utf,alt_verbnames,mark
1667     cxxxz
1668
1669 /abcd/utf,replace=x\x{824}y\o{3333}z(\Q12\$34$$\x34\E5$$),substitute_extended
1670     abcd
1671
1672 /a(\x{e0}\x{101})(\x{c0}\x{102})/utf,replace=a\u$1\U$1\E$1\l$2\L$2\Eab\U\x{e0}\x{101}\L\x{d0}\x{160}\EDone,substitute_extended
1673     a\x{e0}\x{101}\x{c0}\x{102}
1674
1675 /((?<digit>\d)|(?<letter>\p{L}))/g,substitute_extended,replace=<${digit:+digit; :not digit; }${letter:+letter:not a letter}>
1676     ab12cde
1677
1678 /(*UCP)(*UTF)[[:>:]]X/B
1679
1680 /abc/utf,replace=xyz
1681     abc\=zero_terminate
1682
1683 /a[[:punct:]b]/ucp,bincode
1684
1685 /a[[:punct:]b]/utf,ucp,bincode
1686
1687 /a[b[:punct:]]/utf,ucp,bincode
1688
1689 /[[:^ascii:]]/utf,ucp,bincode
1690
1691 /[[:^ascii:]\w]/utf,ucp,bincode
1692
1693 /[\w[:^ascii:]]/utf,ucp,bincode
1694
1695 /[^[:ascii:]\W]/utf,ucp,bincode
1696     \x{de}
1697     \x{200}
1698 \= Expect no match
1699     \x{300}
1700     \x{37e}
1701
1702 /[[:^ascii:]a]/utf,ucp,bincode
1703
1704 /L(?#(|++<!(2)?/B,utf,no_auto_possess,auto_callout
1705
1706 /L(?#(|++<!(2)?/B,utf,ucp,auto_callout
1707
1708 /(*UTF)C\x09((?<!'(?x)!*H? #\xcc\x9a[^$]/
1709
1710 /[\D]/utf
1711     \x{1d7cf}
1712
1713 /[\D\P{Nd}]/utf
1714     \x{1d7cf}
1715
1716 /[^\D]/utf
1717     a9b
1718 \= Expect no match
1719     \x{1d7cf}
1720
1721 /[^\D\P{Nd}]/utf
1722     a9b
1723     \x{1d7cf}
1724 \= Expect no match
1725     \x{10000}
1726
1727 # Hex uses pattern length, not zero-terminated. This tests for overrunning
1728 # the given length of a pattern.
1729
1730 /'(*UTF)'/hex
1731
1732 /'#('/hex,extended,utf
1733
1734 /a(?<=A\XB)/utf
1735
1736 /ab(?<=A\RB)/utf
1737
1738 /../utf,auto_callout
1739     \n\x{123}\x{123}\x{123}\x{123}
1740
1741 # This tests processing wide characters in extended mode.
1742
1743 /XȀ/x,utf
1744
1745 # These three test a bug fix that was not clearing up after a locale setting
1746 # when the test or a subsequent one matched a wide character.
1747
1748 //locale=C
1749
1750 /[\P{Yi}]/utf
1751 \x{2f000}
1752
1753 /[\P{Yi}]/utf,locale=C
1754 \x{2f000}
1755
1756 /^(?<!(?=􃡜))/B,utf
1757
1758 # Horizontal and vertical space lists ignore caseless
1759
1760 /[\HH]/Bi,utf
1761
1762 /[^\HH]/Bi,utf
1763
1764 //g,utf
1765     \=zero_terminate
1766
1767 /^(?1)\p{Nd}{3}(a)/
1768     a123a
1769
1770 /\p{Nd}{0,3}[\pL](*:abc)(?C1)xxx/callout_info
1771
1772 # ---------------------------------------------------------------------------
1773
1774 # A bunch of tests that hit lines of code that others do not (at least when
1775 # these were created).
1776
1777 /^[^a]{3,}?x/i,utf,no_start_optimize,no_auto_possess
1778 \= Expect no match
1779     bbb
1780     cc
1781
1782 /^[ac]{3,}?x/i,utf,no_start_optimize,no_auto_possess
1783 \= Expect no match
1784     aaa\x{100}
1785
1786 /^X\X/no_start_optimize,no_auto_possess
1787 \= Expect no match
1788     X
1789
1790 /^X\p{L&}+?/no_start_optimize,no_auto_possess
1791 \= Expect no match
1792     X
1793
1794 /^X\p{L}+?/no_start_optimize,no_auto_possess
1795 \= Expect no match
1796     X
1797
1798 /^X\p{Lu}+?/no_start_optimize,no_auto_possess
1799 \= Expect no match
1800     X
1801
1802 /^X\p{Arabic}+?/no_start_optimize,no_auto_possess
1803 \= Expect no match
1804     X
1805
1806 /^X\p{Xan}+?/ucp,no_start_optimize,no_auto_possess
1807 \= Expect no match
1808     X
1809
1810 /^X\s+?/ucp,no_start_optimize,no_auto_possess
1811 \= Expect no match
1812     X
1813     XX
1814
1815 /^X\S+?/ucp,no_start_optimize,no_auto_possess
1816     XX
1817 \= Expect no match
1818     X
1819
1820 /^X\w+?/ucp,no_start_optimize,no_auto_possess
1821 \= Expect no match
1822     X
1823
1824 /^X[^\x{b5}]+?/i,utf,no_start_optimize,no_auto_possess
1825 \= Expect no match
1826     X
1827
1828 /^X[\x{b5}]+?/i,utf,no_start_optimize,no_auto_possess
1829 \= Expect no match
1830     X
1831
1832 /^X\p{Xuc}+?/utf,no_start_optimize,no_auto_possess
1833 \= Expect no match
1834     X
1835
1836 /^X.+?Z/s,utf,no_start_optimize,no_auto_possess
1837 \= Expect no match
1838     X
1839
1840 /^X\R+?/utf,no_start_optimize,no_auto_possess
1841 \= Expect no match
1842     X
1843
1844 /^X\H+?/utf,no_start_optimize,no_auto_possess
1845 \= Expect no match
1846     X
1847
1848 /^X\V+?/utf,no_start_optimize,no_auto_possess
1849 \= Expect no match
1850     X
1851
1852 /^X\s+?/utf,no_start_optimize,no_auto_possess
1853 \= Expect no match
1854     X
1855     XX
1856
1857 /^X\S+?/utf,no_start_optimize,no_auto_possess
1858 \= Expect no match
1859     X
1860
1861 /^X\p{Any}{1,3}?Z/s,no_start_optimize,no_auto_possess
1862     XYYYZ
1863 \= Expect no match
1864     XY
1865     XYY
1866     XYYY
1867     XYYYYZ
1868
1869 /^X\p{L&}{1,3}?Z/s,no_start_optimize,no_auto_possess
1870 \= Expect no match
1871     XY
1872     XY!
1873
1874 /^X\p{L}{1,3}?Z/s,no_start_optimize,no_auto_possess
1875 \= Expect no match
1876     XY
1877     XY!
1878
1879 /^X\p{Lu}{1,3}?Z/s,no_start_optimize,no_auto_possess
1880 \= Expect no match
1881     XY
1882     XY!
1883
1884 /^X\P{Han}{1,3}?Z/s,utf,no_start_optimize,no_auto_possess
1885 \= Expect no match
1886     XY
1887     XY!
1888     XY\x{2f00}!
1889
1890 /^X\p{Xan}{1,3}?Z/s,no_start_optimize,no_auto_possess
1891 \= Expect no match
1892     XY
1893     XY!
1894
1895 /^X\p{Xsp}{1,3}?Z/s,no_start_optimize,no_auto_possess
1896 \= Expect no match
1897     X\n
1898     X\n!
1899     X\n\n! 
1900
1901 /^X\P{Xsp}{1,3}?Z/s,no_start_optimize,no_auto_possess
1902 \= Expect no match
1903     XYY\n
1904
1905 /^X\p{Xwd}{1,3}?Z/s,no_start_optimize,no_auto_possess
1906 \= Expect no match
1907     XY
1908     XY!
1909     XYY! 
1910
1911 /^X\x{b5}+?Z/i,utf,no_start_optimize,no_auto_possess
1912 \= Expect no match
1913     X
1914     X\x{b5} 
1915     X\x{b5}\x{b5}Y 
1916
1917 /^X\p{Xuc}+?Z/utf,no_start_optimize,no_auto_possess
1918 \= Expect no match
1919     X
1920     X$
1921     X@@Y  
1922
1923 /(*CRLF)^X.+?Z/utf,no_start_optimize,no_auto_possess
1924 \= Expect partial match
1925     XYY\r\=ph 
1926 \= Expect no match
1927     X
1928
1929 /^X.+?Z/s,utf,no_start_optimize,no_auto_possess
1930 \= Expect no match
1931     X
1932     XYY 
1933
1934 /^X\R+?Z/utf,no_start_optimize,no_auto_possess
1935 \= Expect no match
1936     X\nX
1937     X\n\rX
1938     X\n\r\nX
1939     X\n\n
1940     X\n\x{0c}    
1941
1942 /(*BSR_ANYCRLF)^X\R+?Z/utf,no_start_optimize,no_auto_possess
1943 \= Expect no match
1944     X\nX
1945     X\n\rX
1946     X\n\r\nX
1947     X\n\n
1948     X\n\x{0c}    
1949
1950 /^X\H+?Z/utf,no_start_optimize,no_auto_possess
1951 \= Expect no match
1952     XY\t
1953     XYY 
1954
1955 /^X\h+?Z/utf,no_start_optimize,no_auto_possess
1956 \= Expect no match
1957     X\t\t
1958     X\tY
1959
1960 /^X\V+?Z/utf,no_start_optimize,no_auto_possess
1961 \= Expect no match
1962     XY\n
1963     XYY 
1964
1965 /^X\v+?Z/utf,no_start_optimize,no_auto_possess
1966 \= Expect no match
1967     X\n\n
1968     X\nY
1969
1970 /^X\D+?Z/utf,no_start_optimize,no_auto_possess
1971 \= Expect no match
1972     XY9
1973     XYY 
1974
1975 /^X\d+?Z/utf,no_start_optimize,no_auto_possess
1976 \= Expect no match
1977     X99
1978     X9Y
1979
1980 /^X\S+?Z/utf,no_start_optimize,no_auto_possess
1981 \= Expect no match
1982     XY\n
1983     XYY 
1984
1985 /^X\s+?Z/utf,no_start_optimize,no_auto_possess
1986 \= Expect no match
1987     X\n\n
1988     X\nY
1989
1990 /^X\W+?Z/utf,no_start_optimize,no_auto_possess
1991 \= Expect no match
1992     X.A
1993     X++ 
1994
1995 /^X\p{L&}{1,3}Z/no_start_optimize,no_auto_possess
1996 \= Expect no match
1997     XY
1998     XY!
1999
2000 /^X\p{L}{1,3}Z/no_start_optimize,no_auto_possess
2001 \= Expect no match
2002     XY
2003
2004 /^X\p{Xan}{1,3}Z/no_start_optimize,no_auto_possess
2005 \= Expect no match
2006     XY
2007
2008 /^X\P{Xsp}{1,3}Z/no_start_optimize,no_auto_possess
2009 \= Expect no match
2010     XYY
2011
2012 /^X\p{Xuc}+Z/utf,no_start_optimize,no_auto_possess
2013 \= Expect no match
2014     X$
2015
2016 # ----------------------------------------------------------------------
2017 # These test the dangerous PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL option.
2018
2019 /\x{d800}/B,utf,bad_escape_is_literal
2020
2021 /\ud800/B,utf,alt_bsux,bad_escape_is_literal
2022
2023 # ----------------------------------------------------------------------
2024
2025 /Aሴ+B/literal,utf,no_utf_check
2026     Aሴ+B
2027     
2028 # These are here because I upgraded to Unicode 10.0.0 before Perl did, so it
2029 # doesn't recognize all these scripts. In time these three tests can be moved
2030 # to test 4.
2031
2032 /^(\p{Adlam}+)(\p{Bhaiksuki}+)(\p{Marchen}+)(\p{Newa}+)(\p{Osage}+)
2033   (\p{Tangut}+)(\p{Masaram_Gondi}+)(\p{Nushu}+)(\p{Soyombo}+)
2034   (\p{Zanabazar_Square}+)/x,utf
2035     \x{1E900}\x{1E924}\x{1E953}\x{11C00}\x{11C2D}\x{11C3E}\x{11C70}\x{11C77}\x{11CAB}\x{11400}\x{1142F}\x{11455}\x{104B0}\x{104D8}\x{104FB}\x{16FE0}\x{18800}\x{18AF2}\x{11D00}\x{11D3A}\x{11D59}\x{16FE1}\x{1B170}\x{1B2FB}\x{11A50}\x{11A58}\x{11AA2}\x{11A00}\x{11A07}\x{11A47} 
2036
2037 /^\x{1E900}\x{104B0}/i,utf
2038     \x{1E900}\x{104B0}
2039     \x{1E922}\x{104D8}
2040
2041 /^(?:(\X)(?C))+$/utf
2042     \x{1E900}\x{1E924}\x{1E953}\x{11C00}\x{11C2D}\x{11C3E}\x{11C70}\x{11C77}\x{11CAB}\x{11400}\x{1142F}\x{11455}\x{104B0}\x{104D8}\x{104FB}\x{16FE0}\x{18800}\x{18AF2}\x{11D00}\x{11D3A}\x{11D59}\x{16FE1}\x{1B170}\x{1B2FB}\x{11A50}\x{11A58}\x{11AA2}\x{11A00}\x{11A07}\x{11A47}\=callout_capture,callout_no_where 
2043
2044 # Similarly for Unicode 11.0.0
2045
2046 /^(\p{Dogra}+)(\p{Gunjala_Gondi}+)(\p{Hanifi_Rohingya}+)(\p{Makasar}+)
2047   (\p{Medefaidrin}+)(\p{Old_Sogdian}+)(\p{Sogdian}+)/x,utf
2048     \x{11800}\x{11da9}\x{10d27}\x{11ee0}\x{16e48}\x{10f27}\x{10f30} 
2049
2050 # These two are here because of differences from Perl.
2051
2052 /^\X/utf
2053     A\x{200d}B                     A ZWJ
2054     \x{261d}\x{261d}B              Extended_Pictographic Extended_Pictographic 
2055     \x{261D}\x{1F3FB}B             Extended_Pictographic Extend
2056     \x{1F1E6}\x{1F1E7}B            RegionalIndicator RegionalIndicator 
2057     \x{261D}\x{1F3FB}\x{261d}B     Extended_Pictographic Extend E-P
2058     \x{261D}\x{1F3FB}\x{200d}\x{261d}B     Extended_Pictographic Extend ZWJ E-P
2059
2060 # Regional indicators
2061
2062 /^(\X)(\X)/utf,aftertext
2063     \x{1F1E6}\x{1F1E7}\x{1F1E7}B
2064     \x{1F1E6}\x{1F1E7}\x{1F1E7}\x{1F1E6}B
2065     
2066 # More differences from Perl
2067
2068 /^[\p{Arabic}]/utf
2069 \= Expect no match
2070     \x{650}
2071     \x{651}  
2072     \x{652}  
2073     \x{653}  
2074     \x{654} 
2075     \x{655} 
2076     
2077 /^\p{Common}/utf
2078     \x{589}
2079     \x{60c}
2080     \x{61f}  
2081     \x{964}
2082     \x{965}  
2083
2084 /^\p{Inherited}/utf
2085     \x{64b}
2086     \x{654}
2087     \x{655}
2088     \x{1D1AA} 
2089
2090 /\N{U+}/
2091
2092 /\N{U+}/utf
2093
2094 /\N{U}/
2095
2096 # This tests the non-UTF Unicode NEL pattern whitespace character, only
2097 # recognized by PCRE2 with /x when there is Unicode support.
2098
2099 /A      
2100 \v\f\r\85B/x
2101     AB 
2102     
2103 # This tests Unicode Pattern White Space characters in verb names when they
2104 # are being processed with PCRE2_EXTENDED. Note: there are UTF-8 characters
2105 # with code points greater than 255 between A, B, and C in the pattern.
2106
2107 /(*: A‎B
C)abc/x,utf,mark,alt_verbnames
2108     abc
2109
2110 # End of testinput5