• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 0: \x{61c}
21
22/^[[:graph:]]+$/utf,ucp
23\= Expect no match
24    \x{61c}
25No match
26    \x{2066}
27No match
28    \x{2067}
29No match
30    \x{2068}
31No match
32    \x{2069}
33No match
34
35/^[[:print:]]+$/utf,ucp
36\= Expect no match
37    \x{61c}
38No match
39    \x{2066}
40No match
41    \x{2067}
42No match
43    \x{2068}
44No match
45    \x{2069}
46No match
47
48/^[[:^graph:]]+$/utf,ucp
49    \x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{61c}\x{1680}
50 0: \x{09}\x{0a}\x{1d} \x{85}\x{a0}\x{61c}\x{1680}
51    \x{2028}\x{2029}\x{202f}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}
52 0: \x{2028}\x{2029}\x{202f}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}
53
54/^[[:^print:]]+$/utf,ucp
55    \x{09}\x{1D}\x{85}\x{61c}\x{2028}\x{2029}\x{2065}\x{2066}\x{2067}
56 0: \x{09}\x{1d}\x{85}\x{61c}\x{2028}\x{2029}\x{2065}\x{2066}\x{2067}
57    \x{2068}\x{2069}
58 0: \x{2068}\x{2069}
59
60# Perl does not consider U+180e to be a space character. It is true that it
61# does not appear in the Unicode PropList.txt file as such, but in many other
62# sources it is listed as a space, and has been treated as such in PCRE for
63# a long time.
64
65/^>[[:blank:]]*/utf,ucp
66    >\x{20}\x{a0}\x{1680}\x{180e}\x{2000}\x{202f}\x{9}\x{b}\x{2028}
67 0: > \x{a0}\x{1680}\x{180e}\x{2000}\x{202f}\x{09}
68
69/^A\s+Z/utf,ucp
70    A\x{85}\x{180e}\x{2005}Z
71 0: A\x{85}\x{180e}\x{2005}Z
72
73/^A[\s]+Z/utf,ucp
74    A\x{2005}Z
75 0: A\x{2005}Z
76    A\x{85}\x{2005}Z
77 0: A\x{85}\x{2005}Z
78
79/^[[:graph:]]+$/utf,ucp
80\= Expect no match
81    \x{180e}
82No match
83
84/^[[:print:]]+$/utf,ucp
85    \x{180e}
86 0: \x{180e}
87
88/^[[:^graph:]]+$/utf,ucp
89    \x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{61c}\x{1680}\x{180e}
90 0: \x{09}\x{0a}\x{1d} \x{85}\x{a0}\x{61c}\x{1680}\x{180e}
91
92/^[[:^print:]]+$/utf,ucp
93\= Expect no match
94    \x{180e}
95No match
96
97# End of U+180E tests.
98
99# ---------------------------------------------------------------------
100
101/\x{110000}/IB,utf
102Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large
103
104/\o{4200000}/IB,utf
105Failed: error 134 at offset 10: character code point value in \x{} or \o{} is too large
106
107/\x{ffffffff}/utf
108Failed: error 134 at offset 11: character code point value in \x{} or \o{} is too large
109
110/\o{37777777777}/utf
111Failed: error 134 at offset 14: character code point value in \x{} or \o{} is too large
112
113/\x{100000000}/utf
114Failed: error 134 at offset 12: character code point value in \x{} or \o{} is too large
115
116/\o{77777777777}/utf
117Failed: error 134 at offset 14: character code point value in \x{} or \o{} is too large
118
119/\x{d800}/utf
120Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
121
122/\o{154000}/utf
123Failed: error 173 at offset 9: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
124
125/\x{dfff}/utf
126Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
127
128/\o{157777}/utf
129Failed: error 173 at offset 9: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
130
131/\x{d7ff}/utf
132
133/\o{153777}/utf
134
135/\x{e000}/utf
136
137/\o{170000}/utf
138
139/^\x{100}a\x{1234}/utf
140    \x{100}a\x{1234}bcd
141 0: \x{100}a\x{1234}
142
143/\x{0041}\x{2262}\x{0391}\x{002e}/IB,utf
144------------------------------------------------------------------
145        Bra
146        A\x{2262}\x{391}.
147        Ket
148        End
149------------------------------------------------------------------
150Capture group count = 0
151Options: utf
152First code unit = 'A'
153Last code unit = '.'
154Subject length lower bound = 4
155    \x{0041}\x{2262}\x{0391}\x{002e}
156 0: A\x{2262}\x{391}.
157
158/.{3,5}X/IB,utf
159------------------------------------------------------------------
160        Bra
161        Any{3}
162        Any{0,2}
163        X
164        Ket
165        End
166------------------------------------------------------------------
167Capture group count = 0
168Options: utf
169Last code unit = 'X'
170Subject length lower bound = 4
171    \x{212ab}\x{212ab}\x{212ab}\x{861}X
172 0: \x{212ab}\x{212ab}\x{212ab}\x{861}X
173
174/.{3,5}?/IB,utf
175------------------------------------------------------------------
176        Bra
177        Any{3}
178        Any{0,2}?
179        Ket
180        End
181------------------------------------------------------------------
182Capture group count = 0
183Options: utf
184Subject length lower bound = 3
185    \x{212ab}\x{212ab}\x{212ab}\x{861}
186 0: \x{212ab}\x{212ab}\x{212ab}
187
188/^[ab]/IB,utf
189------------------------------------------------------------------
190        Bra
191        ^
192        [ab]
193        Ket
194        End
195------------------------------------------------------------------
196Capture group count = 0
197Compile options: utf
198Overall options: anchored utf
199Starting code units: a b
200Subject length lower bound = 1
201    bar
202 0: b
203\= Expect no match
204    c
205No match
206    \x{ff}
207No match
208    \x{100}
209No match
210
211/\x{100}*(\d+|"(?1)")/utf
212    1234
213 0: 1234
214 1: 1234
215    "1234"
216 0: "1234"
217 1: "1234"
218    \x{100}1234
219 0: \x{100}1234
220 1: 1234
221    "\x{100}1234"
222 0: \x{100}1234
223 1: 1234
224    \x{100}\x{100}12ab
225 0: \x{100}\x{100}12
226 1: 12
227    \x{100}\x{100}"12"
228 0: \x{100}\x{100}"12"
229 1: "12"
230\= Expect no match
231    \x{100}\x{100}abcd
232No match
233
234/\x{100}*/IB,utf
235------------------------------------------------------------------
236        Bra
237        \x{100}*+
238        Ket
239        End
240------------------------------------------------------------------
241Capture group count = 0
242May match empty string
243Options: utf
244Subject length lower bound = 0
245
246/a\x{100}*/IB,utf
247------------------------------------------------------------------
248        Bra
249        a
250        \x{100}*+
251        Ket
252        End
253------------------------------------------------------------------
254Capture group count = 0
255Options: utf
256First code unit = 'a'
257Subject length lower bound = 1
258
259/ab\x{100}*/IB,utf
260------------------------------------------------------------------
261        Bra
262        ab
263        \x{100}*+
264        Ket
265        End
266------------------------------------------------------------------
267Capture group count = 0
268Options: utf
269First code unit = 'a'
270Last code unit = 'b'
271Subject length lower bound = 2
272
273/[\x{200}-\x{100}]/utf
274Failed: error 108 at offset 15: range out of order in character class
275
276/[Ā-Ą]/utf
277    \x{100}
278 0: \x{100}
279    \x{104}
280 0: \x{104}
281\= Expect no match
282    \x{105}
283No match
284    \x{ff}
285No match
286
287/[\xFF]/IB
288------------------------------------------------------------------
289        Bra
290        \x{ff}
291        Ket
292        End
293------------------------------------------------------------------
294Capture group count = 0
295First code unit = \xff
296Subject length lower bound = 1
297    >\xff<
298 0: \xff
299
300/[^\xFF]/IB
301------------------------------------------------------------------
302        Bra
303        [^\x{ff}]
304        Ket
305        End
306------------------------------------------------------------------
307Capture group count = 0
308Subject length lower bound = 1
309
310/[Ä-Ü]/utf
311    Ö # Matches without Study
312 0: \x{d6}
313    \x{d6}
314 0: \x{d6}
315
316/[Ä-Ü]/utf
317    Ö <-- Same with Study
318 0: \x{d6}
319    \x{d6}
320 0: \x{d6}
321
322/[\x{c4}-\x{dc}]/utf
323    Ö # Matches without Study
324 0: \x{d6}
325    \x{d6}
326 0: \x{d6}
327
328/[\x{c4}-\x{dc}]/utf
329    Ö <-- Same with Study
330 0: \x{d6}
331    \x{d6}
332 0: \x{d6}
333
334/[^\x{100}]abc(xyz(?1))/IB,utf
335------------------------------------------------------------------
336        Bra
337        [^\x{100}]
338        abc
339        CBra 1
340        xyz
341        Recurse
342        Ket
343        Ket
344        End
345------------------------------------------------------------------
346Capture group count = 1
347Options: utf
348Last code unit = 'z'
349Subject length lower bound = 7
350
351/(\x{100}(b(?2)c))?/IB,utf
352------------------------------------------------------------------
353        Bra
354        Brazero
355        CBra 1
356        \x{100}
357        CBra 2
358        b
359        Recurse
360        c
361        Ket
362        Ket
363        Ket
364        End
365------------------------------------------------------------------
366Capture group count = 2
367May match empty string
368Options: utf
369Subject length lower bound = 0
370
371/(\x{100}(b(?2)c)){0,2}/IB,utf
372------------------------------------------------------------------
373        Bra
374        Brazero
375        Bra
376        CBra 1
377        \x{100}
378        CBra 2
379        b
380        Recurse
381        c
382        Ket
383        Ket
384        Brazero
385        CBra 1
386        \x{100}
387        CBra 2
388        b
389        Recurse
390        c
391        Ket
392        Ket
393        Ket
394        Ket
395        End
396------------------------------------------------------------------
397Capture group count = 2
398May match empty string
399Options: utf
400Subject length lower bound = 0
401
402/(\x{100}(b(?1)c))?/IB,utf
403------------------------------------------------------------------
404        Bra
405        Brazero
406        CBra 1
407        \x{100}
408        CBra 2
409        b
410        Recurse
411        c
412        Ket
413        Ket
414        Ket
415        End
416------------------------------------------------------------------
417Capture group count = 2
418May match empty string
419Options: utf
420Subject length lower bound = 0
421
422/(\x{100}(b(?1)c)){0,2}/IB,utf
423------------------------------------------------------------------
424        Bra
425        Brazero
426        Bra
427        CBra 1
428        \x{100}
429        CBra 2
430        b
431        Recurse
432        c
433        Ket
434        Ket
435        Brazero
436        CBra 1
437        \x{100}
438        CBra 2
439        b
440        Recurse
441        c
442        Ket
443        Ket
444        Ket
445        Ket
446        End
447------------------------------------------------------------------
448Capture group count = 2
449May match empty string
450Options: utf
451Subject length lower bound = 0
452
453/\W/utf
454    A.B
455 0: .
456    A\x{100}B
457 0: \x{100}
458
459/\w/utf
460    \x{100}X
461 0: X
462
463# Use no_start_optimize because the first code unit is different in 8-bit from
464# the wider modes.
465
466/^\ሴ/IB,utf,no_start_optimize
467------------------------------------------------------------------
468        Bra
469        ^
470        \x{1234}
471        Ket
472        End
473------------------------------------------------------------------
474Capture group count = 0
475Compile options: no_start_optimize utf
476Overall options: anchored no_start_optimize utf
477
478/()()()()()()()()()()
479 ()()()()()()()()()()
480 ()()()()()()()()()()
481 ()()()()()()()()()()
482 A (x) (?41) B/x,utf
483    AxxB
484Matched, but too many substrings
485 0: AxxB
486 1:
487 2:
488 3:
489 4:
490 5:
491 6:
492 7:
493 8:
494 9:
49510:
49611:
49712:
49813:
49914:
500
501/^[\x{100}\E-\Q\E\x{150}]/B,utf
502------------------------------------------------------------------
503        Bra
504        ^
505        [\x{100}-\x{150}]
506        Ket
507        End
508------------------------------------------------------------------
509
510/^[\QĀ\E-\QŐ\E]/B,utf
511------------------------------------------------------------------
512        Bra
513        ^
514        [\x{100}-\x{150}]
515        Ket
516        End
517------------------------------------------------------------------
518
519/^abc./gmx,newline=any,utf
520    abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK
521 0: abc1
522 0: abc2
523 0: abc3
524 0: abc4
525 0: abc5
526 0: abc6
527 0: abc7
528 0: abc8
529 0: abc9
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 0: abc1
534 0: abc2
535 0: abc3
536 0: abc4
537 0: abc5
538 0: abc6
539 0: abc7
540 0: abc8
541 0: abc9
542
543/^a\Rb/bsr=unicode,utf
544    a\nb
545 0: a\x{0a}b
546    a\rb
547 0: a\x{0d}b
548    a\r\nb
549 0: a\x{0d}\x{0a}b
550    a\x0bb
551 0: a\x{0b}b
552    a\x0cb
553 0: a\x{0c}b
554    a\x{85}b
555 0: a\x{85}b
556    a\x{2028}b
557 0: a\x{2028}b
558    a\x{2029}b
559 0: a\x{2029}b
560\= Expect no match
561    a\n\rb
562No match
563
564/^a\R*b/bsr=unicode,utf
565    ab
566 0: ab
567    a\nb
568 0: a\x{0a}b
569    a\rb
570 0: a\x{0d}b
571    a\r\nb
572 0: a\x{0d}\x{0a}b
573    a\x0bb
574 0: a\x{0b}b
575    a\x0c\x{2028}\x{2029}b
576 0: a\x{0c}\x{2028}\x{2029}b
577    a\x{85}b
578 0: a\x{85}b
579    a\n\rb
580 0: a\x{0a}\x{0d}b
581    a\n\r\x{85}\x0cb
582 0: a\x{0a}\x{0d}\x{85}\x{0c}b
583
584/^a\R+b/bsr=unicode,utf
585    a\nb
586 0: a\x{0a}b
587    a\rb
588 0: a\x{0d}b
589    a\r\nb
590 0: a\x{0d}\x{0a}b
591    a\x0bb
592 0: a\x{0b}b
593    a\x0c\x{2028}\x{2029}b
594 0: a\x{0c}\x{2028}\x{2029}b
595    a\x{85}b
596 0: a\x{85}b
597    a\n\rb
598 0: a\x{0a}\x{0d}b
599    a\n\r\x{85}\x0cb
600 0: a\x{0a}\x{0d}\x{85}\x{0c}b
601\= Expect no match
602    ab
603No match
604
605/^a\R{1,3}b/bsr=unicode,utf
606    a\nb
607 0: a\x{0a}b
608    a\n\rb
609 0: a\x{0a}\x{0d}b
610    a\n\r\x{85}b
611 0: a\x{0a}\x{0d}\x{85}b
612    a\r\n\r\nb
613 0: a\x{0d}\x{0a}\x{0d}\x{0a}b
614    a\r\n\r\n\r\nb
615 0: a\x{0d}\x{0a}\x{0d}\x{0a}\x{0d}\x{0a}b
616    a\n\r\n\rb
617 0: a\x{0a}\x{0d}\x{0a}\x{0d}b
618    a\n\n\r\nb
619 0: a\x{0a}\x{0a}\x{0d}\x{0a}b
620\= Expect no match
621    a\n\n\n\rb
622No match
623    a\r
624No match
625
626/\H\h\V\v/utf
627    X X\x0a
628 0: X X\x{0a}
629    X\x09X\x0b
630 0: X\x{09}X\x{0b}
631\= Expect no match
632    \x{a0} X\x0a
633No match
634
635/\H*\h+\V?\v{3,4}/utf
636    \x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
637 0: \x{09} \x{a0}X\x{0a}\x{0b}\x{0c}\x{0d}
638    \x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a
639 0: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}\x{0d}
640    \x09\x20\x{a0}\x0a\x0b\x0c
641 0: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}
642\= Expect no match
643    \x09\x20\x{a0}\x0a\x0b
644No match
645
646/\H\h\V\v/utf
647    \x{3001}\x{3000}\x{2030}\x{2028}
648 0: \x{3001}\x{3000}\x{2030}\x{2028}
649    X\x{180e}X\x{85}
650 0: X\x{180e}X\x{85}
651\= Expect no match
652    \x{2009} X\x0a
653No match
654
655/\H*\h+\V?\v{3,4}/utf
656    \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a
657 0: \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x{0c}\x{0d}
658    \x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a
659 0: \x{09}\x{205f}\x{a0}\x{0a}\x{2029}\x{0c}\x{2028}
660    \x09\x20\x{202f}\x0a\x0b\x0c
661 0: \x{09} \x{202f}\x{0a}\x{0b}\x{0c}
662\= Expect no match
663    \x09\x{200a}\x{a0}\x{2028}\x0b
664No match
665
666/[\h]/B,utf
667------------------------------------------------------------------
668        Bra
669        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}]
670        Ket
671        End
672------------------------------------------------------------------
673    >\x{1680}
674 0: \x{1680}
675
676/[\h]{3,}/B,utf
677------------------------------------------------------------------
678        Bra
679        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}]{3,}+
680        Ket
681        End
682------------------------------------------------------------------
683    >\x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}<
684 0: \x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}
685
686/[\v]/B,utf
687------------------------------------------------------------------
688        Bra
689        [\x0a-\x0d\x85\x{2028}-\x{2029}]
690        Ket
691        End
692------------------------------------------------------------------
693
694/[\H]/B,utf
695------------------------------------------------------------------
696        Bra
697        [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff\x{100}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{10ffff}]
698        Ket
699        End
700------------------------------------------------------------------
701
702/[\V]/B,utf
703------------------------------------------------------------------
704        Bra
705        [\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{202a}-\x{10ffff}]
706        Ket
707        End
708------------------------------------------------------------------
709
710/.*$/newline=any,utf
711    \x{1ec5}
712 0: \x{1ec5}
713
714/a\Rb/I,bsr=anycrlf,utf
715Capture group count = 0
716Options: utf
717\R matches CR, LF, or CRLF
718First code unit = 'a'
719Last code unit = 'b'
720Subject length lower bound = 3
721    a\rb
722 0: a\x{0d}b
723    a\nb
724 0: a\x{0a}b
725    a\r\nb
726 0: a\x{0d}\x{0a}b
727\= Expect no match
728    a\x{85}b
729No match
730    a\x0bb
731No match
732
733/a\Rb/I,bsr=unicode,utf
734Capture group count = 0
735Options: utf
736\R matches any Unicode newline
737First code unit = 'a'
738Last code unit = 'b'
739Subject length lower bound = 3
740    a\rb
741 0: a\x{0d}b
742    a\nb
743 0: a\x{0a}b
744    a\r\nb
745 0: a\x{0d}\x{0a}b
746    a\x{85}b
747 0: a\x{85}b
748    a\x0bb
749 0: a\x{0b}b
750
751/a\R?b/I,bsr=anycrlf,utf
752Capture group count = 0
753Options: utf
754\R matches CR, LF, or CRLF
755First code unit = 'a'
756Last code unit = 'b'
757Subject length lower bound = 2
758    a\rb
759 0: a\x{0d}b
760    a\nb
761 0: a\x{0a}b
762    a\r\nb
763 0: a\x{0d}\x{0a}b
764\= Expect no match
765    a\x{85}b
766No match
767    a\x0bb
768No match
769
770/a\R?b/I,bsr=unicode,utf
771Capture group count = 0
772Options: utf
773\R matches any Unicode newline
774First code unit = 'a'
775Last code unit = 'b'
776Subject length lower bound = 2
777    a\rb
778 0: a\x{0d}b
779    a\nb
780 0: a\x{0a}b
781    a\r\nb
782 0: a\x{0d}\x{0a}b
783    a\x{85}b
784 0: a\x{85}b
785    a\x0bb
786 0: a\x{0b}b
787
788/.*a.*=.b.*/utf,newline=any
789    QQQ\x{2029}ABCaXYZ=!bPQR
790 0: ABCaXYZ=!bPQR
791\= Expect no match
792    a\x{2029}b
793No match
794    \x61\xe2\x80\xa9\x62
795No match
796
797/[[:a\x{100}b:]]/utf
798Failed: error 130 at offset 3: unknown POSIX class name
799
800/a[^]b/utf,allow_empty_class,match_unset_backref
801    a\x{1234}b
802 0: a\x{1234}b
803    a\nb
804 0: a\x{0a}b
805\= Expect no match
806    ab
807No match
808
809/a[^]+b/utf,allow_empty_class,match_unset_backref
810    aXb
811 0: aXb
812    a\nX\nX\x{1234}b
813 0: a\x{0a}X\x{0a}X\x{1234}b
814\= Expect no match
815    ab
816No match
817
818/(\x{de})\1/
819    \x{de}\x{de}
820 0: \xde\xde
821 1: \xde
822
823/X/newline=any,utf,firstline
824    A\x{1ec5}ABCXYZ
825 0: X
826
827/Xa{2,4}b/utf
828    X\=ps
829Partial match: X
830    Xa\=ps
831Partial match: Xa
832    Xaa\=ps
833Partial match: Xaa
834    Xaaa\=ps
835Partial match: Xaaa
836    Xaaaa\=ps
837Partial match: Xaaaa
838
839/Xa{2,4}?b/utf
840    X\=ps
841Partial match: X
842    Xa\=ps
843Partial match: Xa
844    Xaa\=ps
845Partial match: Xaa
846    Xaaa\=ps
847Partial match: Xaaa
848    Xaaaa\=ps
849Partial match: Xaaaa
850
851/Xa{2,4}+b/utf
852    X\=ps
853Partial match: X
854    Xa\=ps
855Partial match: Xa
856    Xaa\=ps
857Partial match: Xaa
858    Xaaa\=ps
859Partial match: Xaaa
860    Xaaaa\=ps
861Partial match: Xaaaa
862
863/X\x{123}{2,4}b/utf
864    X\=ps
865Partial match: X
866    X\x{123}\=ps
867Partial match: X\x{123}
868    X\x{123}\x{123}\=ps
869Partial match: X\x{123}\x{123}
870    X\x{123}\x{123}\x{123}\=ps
871Partial match: X\x{123}\x{123}\x{123}
872    X\x{123}\x{123}\x{123}\x{123}\=ps
873Partial match: X\x{123}\x{123}\x{123}\x{123}
874
875/X\x{123}{2,4}?b/utf
876    X\=ps
877Partial match: X
878    X\x{123}\=ps
879Partial match: X\x{123}
880    X\x{123}\x{123}\=ps
881Partial match: X\x{123}\x{123}
882    X\x{123}\x{123}\x{123}\=ps
883Partial match: X\x{123}\x{123}\x{123}
884    X\x{123}\x{123}\x{123}\x{123}\=ps
885Partial match: X\x{123}\x{123}\x{123}\x{123}
886
887/X\x{123}{2,4}+b/utf
888    X\=ps
889Partial match: X
890    X\x{123}\=ps
891Partial match: X\x{123}
892    X\x{123}\x{123}\=ps
893Partial match: X\x{123}\x{123}
894    X\x{123}\x{123}\x{123}\=ps
895Partial match: X\x{123}\x{123}\x{123}
896    X\x{123}\x{123}\x{123}\x{123}\=ps
897Partial match: X\x{123}\x{123}\x{123}\x{123}
898
899/X\x{123}{2,4}b/utf
900\= Expect no match
901    Xx\=ps
902No match
903    X\x{123}x\=ps
904No match
905    X\x{123}\x{123}x\=ps
906No match
907    X\x{123}\x{123}\x{123}x\=ps
908No match
909    X\x{123}\x{123}\x{123}\x{123}x\=ps
910No match
911
912/X\x{123}{2,4}?b/utf
913\= Expect no match
914    Xx\=ps
915No match
916    X\x{123}x\=ps
917No match
918    X\x{123}\x{123}x\=ps
919No match
920    X\x{123}\x{123}\x{123}x\=ps
921No match
922    X\x{123}\x{123}\x{123}\x{123}x\=ps
923No match
924
925/X\x{123}{2,4}+b/utf
926\= Expect no match
927    Xx\=ps
928No match
929    X\x{123}x\=ps
930No match
931    X\x{123}\x{123}x\=ps
932No match
933    X\x{123}\x{123}\x{123}x\=ps
934No match
935    X\x{123}\x{123}\x{123}\x{123}x\=ps
936No match
937
938/X\d{2,4}b/utf
939    X\=ps
940Partial match: X
941    X3\=ps
942Partial match: X3
943    X33\=ps
944Partial match: X33
945    X333\=ps
946Partial match: X333
947    X3333\=ps
948Partial match: X3333
949
950/X\d{2,4}?b/utf
951    X\=ps
952Partial match: X
953    X3\=ps
954Partial match: X3
955    X33\=ps
956Partial match: X33
957    X333\=ps
958Partial match: X333
959    X3333\=ps
960Partial match: X3333
961
962/X\d{2,4}+b/utf
963    X\=ps
964Partial match: X
965    X3\=ps
966Partial match: X3
967    X33\=ps
968Partial match: X33
969    X333\=ps
970Partial match: X333
971    X3333\=ps
972Partial match: X3333
973
974/X\D{2,4}b/utf
975    X\=ps
976Partial match: X
977    Xa\=ps
978Partial match: Xa
979    Xaa\=ps
980Partial match: Xaa
981    Xaaa\=ps
982Partial match: Xaaa
983    Xaaaa\=ps
984Partial match: Xaaaa
985
986/X\D{2,4}?b/utf
987    X\=ps
988Partial match: X
989    Xa\=ps
990Partial match: Xa
991    Xaa\=ps
992Partial match: Xaa
993    Xaaa\=ps
994Partial match: Xaaa
995    Xaaaa\=ps
996Partial match: Xaaaa
997
998/X\D{2,4}+b/utf
999    X\=ps
1000Partial match: X
1001    Xa\=ps
1002Partial match: Xa
1003    Xaa\=ps
1004Partial match: Xaa
1005    Xaaa\=ps
1006Partial match: Xaaa
1007    Xaaaa\=ps
1008Partial match: Xaaaa
1009
1010/X\D{2,4}b/utf
1011    X\=ps
1012Partial match: X
1013    X\x{123}\=ps
1014Partial match: X\x{123}
1015    X\x{123}\x{123}\=ps
1016Partial match: X\x{123}\x{123}
1017    X\x{123}\x{123}\x{123}\=ps
1018Partial match: X\x{123}\x{123}\x{123}
1019    X\x{123}\x{123}\x{123}\x{123}\=ps
1020Partial match: X\x{123}\x{123}\x{123}\x{123}
1021
1022/X\D{2,4}?b/utf
1023    X\=ps
1024Partial match: X
1025    X\x{123}\=ps
1026Partial match: X\x{123}
1027    X\x{123}\x{123}\=ps
1028Partial match: X\x{123}\x{123}
1029    X\x{123}\x{123}\x{123}\=ps
1030Partial match: X\x{123}\x{123}\x{123}
1031    X\x{123}\x{123}\x{123}\x{123}\=ps
1032Partial match: X\x{123}\x{123}\x{123}\x{123}
1033
1034/X\D{2,4}+b/utf
1035    X\=ps
1036Partial match: X
1037    X\x{123}\=ps
1038Partial match: X\x{123}
1039    X\x{123}\x{123}\=ps
1040Partial match: X\x{123}\x{123}
1041    X\x{123}\x{123}\x{123}\=ps
1042Partial match: X\x{123}\x{123}\x{123}
1043    X\x{123}\x{123}\x{123}\x{123}\=ps
1044Partial match: X\x{123}\x{123}\x{123}\x{123}
1045
1046/X[abc]{2,4}b/utf
1047    X\=ps
1048Partial match: X
1049    Xa\=ps
1050Partial match: Xa
1051    Xaa\=ps
1052Partial match: Xaa
1053    Xaaa\=ps
1054Partial match: Xaaa
1055    Xaaaa\=ps
1056Partial match: Xaaaa
1057
1058/X[abc]{2,4}?b/utf
1059    X\=ps
1060Partial match: X
1061    Xa\=ps
1062Partial match: Xa
1063    Xaa\=ps
1064Partial match: Xaa
1065    Xaaa\=ps
1066Partial match: Xaaa
1067    Xaaaa\=ps
1068Partial match: Xaaaa
1069
1070/X[abc]{2,4}+b/utf
1071    X\=ps
1072Partial match: X
1073    Xa\=ps
1074Partial match: Xa
1075    Xaa\=ps
1076Partial match: Xaa
1077    Xaaa\=ps
1078Partial match: Xaaa
1079    Xaaaa\=ps
1080Partial match: Xaaaa
1081
1082/X[abc\x{123}]{2,4}b/utf
1083    X\=ps
1084Partial match: X
1085    X\x{123}\=ps
1086Partial match: X\x{123}
1087    X\x{123}\x{123}\=ps
1088Partial match: X\x{123}\x{123}
1089    X\x{123}\x{123}\x{123}\=ps
1090Partial match: X\x{123}\x{123}\x{123}
1091    X\x{123}\x{123}\x{123}\x{123}\=ps
1092Partial match: X\x{123}\x{123}\x{123}\x{123}
1093
1094/X[abc\x{123}]{2,4}?b/utf
1095    X\=ps
1096Partial match: X
1097    X\x{123}\=ps
1098Partial match: X\x{123}
1099    X\x{123}\x{123}\=ps
1100Partial match: X\x{123}\x{123}
1101    X\x{123}\x{123}\x{123}\=ps
1102Partial match: X\x{123}\x{123}\x{123}
1103    X\x{123}\x{123}\x{123}\x{123}\=ps
1104Partial match: X\x{123}\x{123}\x{123}\x{123}
1105
1106/X[abc\x{123}]{2,4}+b/utf
1107    X\=ps
1108Partial match: X
1109    X\x{123}\=ps
1110Partial match: X\x{123}
1111    X\x{123}\x{123}\=ps
1112Partial match: X\x{123}\x{123}
1113    X\x{123}\x{123}\x{123}\=ps
1114Partial match: X\x{123}\x{123}\x{123}
1115    X\x{123}\x{123}\x{123}\x{123}\=ps
1116Partial match: X\x{123}\x{123}\x{123}\x{123}
1117
1118/X[^a]{2,4}b/utf
1119    X\=ps
1120Partial match: X
1121    Xz\=ps
1122Partial match: Xz
1123    Xzz\=ps
1124Partial match: Xzz
1125    Xzzz\=ps
1126Partial match: Xzzz
1127    Xzzzz\=ps
1128Partial match: Xzzzz
1129
1130/X[^a]{2,4}?b/utf
1131    X\=ps
1132Partial match: X
1133    Xz\=ps
1134Partial match: Xz
1135    Xzz\=ps
1136Partial match: Xzz
1137    Xzzz\=ps
1138Partial match: Xzzz
1139    Xzzzz\=ps
1140Partial match: Xzzzz
1141
1142/X[^a]{2,4}+b/utf
1143    X\=ps
1144Partial match: X
1145    Xz\=ps
1146Partial match: Xz
1147    Xzz\=ps
1148Partial match: Xzz
1149    Xzzz\=ps
1150Partial match: Xzzz
1151    Xzzzz\=ps
1152Partial match: Xzzzz
1153
1154/X[^a]{2,4}b/utf
1155    X\=ps
1156Partial match: X
1157    X\x{123}\=ps
1158Partial match: X\x{123}
1159    X\x{123}\x{123}\=ps
1160Partial match: X\x{123}\x{123}
1161    X\x{123}\x{123}\x{123}\=ps
1162Partial match: X\x{123}\x{123}\x{123}
1163    X\x{123}\x{123}\x{123}\x{123}\=ps
1164Partial match: X\x{123}\x{123}\x{123}\x{123}
1165
1166/X[^a]{2,4}?b/utf
1167    X\=ps
1168Partial match: X
1169    X\x{123}\=ps
1170Partial match: X\x{123}
1171    X\x{123}\x{123}\=ps
1172Partial match: X\x{123}\x{123}
1173    X\x{123}\x{123}\x{123}\=ps
1174Partial match: X\x{123}\x{123}\x{123}
1175    X\x{123}\x{123}\x{123}\x{123}\=ps
1176Partial match: X\x{123}\x{123}\x{123}\x{123}
1177
1178/X[^a]{2,4}+b/utf
1179    X\=ps
1180Partial match: X
1181    X\x{123}\=ps
1182Partial match: X\x{123}
1183    X\x{123}\x{123}\=ps
1184Partial match: X\x{123}\x{123}
1185    X\x{123}\x{123}\x{123}\=ps
1186Partial match: X\x{123}\x{123}\x{123}
1187    X\x{123}\x{123}\x{123}\x{123}\=ps
1188Partial match: X\x{123}\x{123}\x{123}\x{123}
1189
1190/(Y)X\1{2,4}b/utf
1191    YX\=ps
1192Partial match: YX
1193    YXY\=ps
1194Partial match: YXY
1195    YXYY\=ps
1196Partial match: YXYY
1197    YXYYY\=ps
1198Partial match: YXYYY
1199    YXYYYY\=ps
1200Partial match: YXYYYY
1201
1202/(Y)X\1{2,4}?b/utf
1203    YX\=ps
1204Partial match: YX
1205    YXY\=ps
1206Partial match: YXY
1207    YXYY\=ps
1208Partial match: YXYY
1209    YXYYY\=ps
1210Partial match: YXYYY
1211    YXYYYY\=ps
1212Partial match: YXYYYY
1213
1214/(Y)X\1{2,4}+b/utf
1215    YX\=ps
1216Partial match: YX
1217    YXY\=ps
1218Partial match: YXY
1219    YXYY\=ps
1220Partial match: YXYY
1221    YXYYY\=ps
1222Partial match: YXYYY
1223    YXYYYY\=ps
1224Partial match: YXYYYY
1225
1226/(\x{123})X\1{2,4}b/utf
1227    \x{123}X\=ps
1228Partial match: \x{123}X
1229    \x{123}X\x{123}\=ps
1230Partial match: \x{123}X\x{123}
1231    \x{123}X\x{123}\x{123}\=ps
1232Partial match: \x{123}X\x{123}\x{123}
1233    \x{123}X\x{123}\x{123}\x{123}\=ps
1234Partial match: \x{123}X\x{123}\x{123}\x{123}
1235    \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps
1236Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}
1237
1238/(\x{123})X\1{2,4}?b/utf
1239    \x{123}X\=ps
1240Partial match: \x{123}X
1241    \x{123}X\x{123}\=ps
1242Partial match: \x{123}X\x{123}
1243    \x{123}X\x{123}\x{123}\=ps
1244Partial match: \x{123}X\x{123}\x{123}
1245    \x{123}X\x{123}\x{123}\x{123}\=ps
1246Partial match: \x{123}X\x{123}\x{123}\x{123}
1247    \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps
1248Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}
1249
1250/(\x{123})X\1{2,4}+b/utf
1251    \x{123}X\=ps
1252Partial match: \x{123}X
1253    \x{123}X\x{123}\=ps
1254Partial match: \x{123}X\x{123}
1255    \x{123}X\x{123}\x{123}\=ps
1256Partial match: \x{123}X\x{123}\x{123}
1257    \x{123}X\x{123}\x{123}\x{123}\=ps
1258Partial match: \x{123}X\x{123}\x{123}\x{123}
1259    \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps
1260Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}
1261
1262/\bthe cat\b/utf
1263    the cat\=ps
1264 0: the cat
1265    the cat\=ph
1266Partial match: the cat
1267
1268/abcd*/utf
1269    xxxxabcd\=ps
1270 0: abcd
1271    xxxxabcd\=ph
1272Partial match: abcd
1273
1274/abcd*/i,utf
1275    xxxxabcd\=ps
1276 0: abcd
1277    xxxxabcd\=ph
1278Partial match: abcd
1279    XXXXABCD\=ps
1280 0: ABCD
1281    XXXXABCD\=ph
1282Partial match: ABCD
1283
1284/abc\d*/utf
1285    xxxxabc1\=ps
1286 0: abc1
1287    xxxxabc1\=ph
1288Partial match: abc1
1289
1290/(a)bc\1*/utf
1291    xxxxabca\=ps
1292 0: abca
1293 1: a
1294    xxxxabca\=ph
1295Partial match: abca
1296
1297/abc[de]*/utf
1298    xxxxabcde\=ps
1299 0: abcde
1300    xxxxabcde\=ph
1301Partial match: abcde
1302
1303/X\W{3}X/utf
1304    X\=ps
1305Partial match: X
1306
1307/\sxxx\s/utf,tables=2
1308    AB\x{85}xxx\x{a0}XYZ
1309 0: \x{85}xxx\x{a0}
1310    AB\x{a0}xxx\x{85}XYZ
1311 0: \x{a0}xxx\x{85}
1312
1313/\S \S/utf,tables=2
1314    \x{a2} \x{84}
1315 0: \x{a2} \x{84}
1316
1317'A#хц'Bx,newline=any,utf
1318------------------------------------------------------------------
1319        Bra
1320        A
1321        Ket
1322        End
1323------------------------------------------------------------------
1324
1325'A#хц
1326  PQ'Bx,newline=any,utf
1327------------------------------------------------------------------
1328        Bra
1329        APQ
1330        Ket
1331        End
1332------------------------------------------------------------------
1333
1334/a+#хaa
1335  z#XX?/Bx,newline=any,utf
1336------------------------------------------------------------------
1337        Bra
1338        a++
1339        z
1340        Ket
1341        End
1342------------------------------------------------------------------
1343
1344/a+#хaa
1345  z#х?/Bx,newline=any,utf
1346------------------------------------------------------------------
1347        Bra
1348        a++
1349        z
1350        Ket
1351        End
1352------------------------------------------------------------------
1353
1354/\g{A}xxx#bXX(?'A'123)
1355(?'A'456)/Bx,newline=any,utf
1356------------------------------------------------------------------
1357        Bra
1358        \1
1359        xxx
1360        CBra 1
1361        456
1362        Ket
1363        Ket
1364        End
1365------------------------------------------------------------------
1366
1367/\g{A}xxx#bх(?'A'123)
1368(?'A'456)/Bx,newline=any,utf
1369------------------------------------------------------------------
1370        Bra
1371        \1
1372        xxx
1373        CBra 1
1374        456
1375        Ket
1376        Ket
1377        End
1378------------------------------------------------------------------
1379
1380/^\cģ/utf
1381Failed: error 168 at offset 3: \c must be followed by a printable ASCII character
1382
1383/(\R*)(.)/s,utf
1384    \r\n
1385 0: \x{0d}
1386 1:
1387 2: \x{0d}
1388    \r\r\n\n\r
1389 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
1390 1: \x{0d}\x{0d}\x{0a}\x{0a}
1391 2: \x{0d}
1392    \r\r\n\n\r\n
1393 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
1394 1: \x{0d}\x{0d}\x{0a}\x{0a}
1395 2: \x{0d}
1396
1397/(\R)*(.)/s,utf
1398    \r\n
1399 0: \x{0d}
1400 1: <unset>
1401 2: \x{0d}
1402    \r\r\n\n\r
1403 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
1404 1: \x{0a}
1405 2: \x{0d}
1406    \r\r\n\n\r\n
1407 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
1408 1: \x{0a}
1409 2: \x{0d}
1410
1411/[^\x{1234}]+/Ii,utf
1412Capture group count = 0
1413Options: caseless utf
1414Subject length lower bound = 1
1415
1416/[^\x{1234}]+?/Ii,utf
1417Capture group count = 0
1418Options: caseless utf
1419Subject length lower bound = 1
1420
1421/[^\x{1234}]++/Ii,utf
1422Capture group count = 0
1423Options: caseless utf
1424Subject length lower bound = 1
1425
1426/[^\x{1234}]{2}/Ii,utf
1427Capture group count = 0
1428Options: caseless utf
1429Subject length lower bound = 2
1430
1431/f.*/
1432    for\=ph
1433Partial match: for
1434
1435/f.*/s
1436    for\=ph
1437Partial match: for
1438
1439/f.*/utf
1440    for\=ph
1441Partial match: for
1442
1443/f.*/s,utf
1444    for\=ph
1445Partial match: for
1446
1447/\x{d7ff}\x{e000}/utf
1448
1449/\x{d800}/utf
1450Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
1451
1452/\x{dfff}/utf
1453Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
1454
1455/\h+/utf
1456    \x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
1457 0: \x{1680}\x{2000}\x{202f}\x{3000}
1458    \x{3001}\x{2fff}\x{200a}\x{a0}\x{2000}
1459 0: \x{200a}\x{a0}\x{2000}
1460
1461/[\h\x{e000}]+/B,utf
1462------------------------------------------------------------------
1463        Bra
1464        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}\x{e000}]++
1465        Ket
1466        End
1467------------------------------------------------------------------
1468    \x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
1469 0: \x{1680}\x{2000}\x{202f}\x{3000}
1470    \x{3001}\x{2fff}\x{200a}\x{a0}\x{2000}
1471 0: \x{200a}\x{a0}\x{2000}
1472
1473/\H+/utf
1474    \x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
1475 0: \x{167f}\x{1681}\x{180d}\x{180f}
1476    \x{2000}\x{200a}\x{1fff}\x{200b}
1477 0: \x{1fff}\x{200b}
1478    \x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
1479 0: \x{202e}\x{2030}\x{205e}\x{2060}
1480    \x{a0}\x{3000}\x{9f}\x{a1}\x{2fff}\x{3001}
1481 0: \x{9f}\x{a1}\x{2fff}\x{3001}
1482
1483/[\H\x{d7ff}]+/B,utf
1484------------------------------------------------------------------
1485        Bra
1486        [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff\x{100}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{10ffff}\x{d7ff}]++
1487        Ket
1488        End
1489------------------------------------------------------------------
1490    \x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
1491 0: \x{167f}\x{1681}\x{180d}\x{180f}
1492    \x{2000}\x{200a}\x{1fff}\x{200b}
1493 0: \x{1fff}\x{200b}
1494    \x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
1495 0: \x{202e}\x{2030}\x{205e}\x{2060}
1496    \x{a0}\x{3000}\x{9f}\x{a1}\x{2fff}\x{3001}
1497 0: \x{9f}\x{a1}\x{2fff}\x{3001}
1498
1499/\v+/utf
1500    \x{2027}\x{2030}\x{2028}\x{2029}
1501 0: \x{2028}\x{2029}
1502    \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
1503 0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}
1504
1505/[\v\x{e000}]+/B,utf
1506------------------------------------------------------------------
1507        Bra
1508        [\x0a-\x0d\x85\x{2028}-\x{2029}\x{e000}]++
1509        Ket
1510        End
1511------------------------------------------------------------------
1512    \x{2027}\x{2030}\x{2028}\x{2029}
1513 0: \x{2028}\x{2029}
1514    \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
1515 0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}
1516
1517/\V+/utf
1518    \x{2028}\x{2029}\x{2027}\x{2030}
1519 0: \x{2027}\x{2030}
1520    \x{85}\x0a\x0b\x0c\x0d\x09\x0e\x{84}\x{86}
1521 0: \x{09}\x{0e}\x{84}\x{86}
1522
1523/[\V\x{d7ff}]+/B,utf
1524------------------------------------------------------------------
1525        Bra
1526        [\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{202a}-\x{10ffff}\x{d7ff}]++
1527        Ket
1528        End
1529------------------------------------------------------------------
1530    \x{2028}\x{2029}\x{2027}\x{2030}
1531 0: \x{2027}\x{2030}
1532    \x{85}\x0a\x0b\x0c\x0d\x09\x0e\x{84}\x{86}
1533 0: \x{09}\x{0e}\x{84}\x{86}
1534
1535/\R+/bsr=unicode,utf
1536    \x{2027}\x{2030}\x{2028}\x{2029}
1537 0: \x{2028}\x{2029}
1538    \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
1539 0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}
1540
1541/(..)\1/utf
1542    ab\=ps
1543Partial match: ab
1544    aba\=ps
1545Partial match: aba
1546    abab\=ps
1547 0: abab
1548 1: ab
1549
1550/(..)\1/i,utf
1551    ab\=ps
1552Partial match: ab
1553    abA\=ps
1554Partial match: abA
1555    aBAb\=ps
1556 0: aBAb
1557 1: aB
1558
1559/(..)\1{2,}/utf
1560    ab\=ps
1561Partial match: ab
1562    aba\=ps
1563Partial match: aba
1564    abab\=ps
1565Partial match: abab
1566    ababa\=ps
1567Partial match: ababa
1568    ababab\=ps
1569 0: ababab
1570 1: ab
1571    ababab\=ph
1572Partial match: ababab
1573    abababa\=ps
1574 0: ababab
1575 1: ab
1576    abababa\=ph
1577Partial match: abababa
1578
1579/(..)\1{2,}/i,utf
1580    ab\=ps
1581Partial match: ab
1582    aBa\=ps
1583Partial match: aBa
1584    aBAb\=ps
1585Partial match: aBAb
1586    AbaBA\=ps
1587Partial match: AbaBA
1588    abABAb\=ps
1589 0: abABAb
1590 1: ab
1591    aBAbaB\=ph
1592Partial match: aBAbaB
1593    abABabA\=ps
1594 0: abABab
1595 1: ab
1596    abaBABa\=ph
1597Partial match: abaBABa
1598
1599/(..)\1{2,}?x/i,utf
1600    ab\=ps
1601Partial match: ab
1602    abA\=ps
1603Partial match: abA
1604    aBAb\=ps
1605Partial match: aBAb
1606    abaBA\=ps
1607Partial match: abaBA
1608    abAbaB\=ps
1609Partial match: abAbaB
1610    abaBabA\=ps
1611Partial match: abaBabA
1612    abAbABaBx\=ps
1613 0: abAbABaBx
1614 1: ab
1615
1616/./utf,newline=crlf
1617    \r\=ps
1618 0: \x{0d}
1619    \r\=ph
1620Partial match: \x{0d}
1621
1622/.{2,3}/utf,newline=crlf
1623    \r\=ps
1624Partial match: \x{0d}
1625    \r\=ph
1626Partial match: \x{0d}
1627    \r\r\=ps
1628 0: \x{0d}\x{0d}
1629    \r\r\=ph
1630Partial match: \x{0d}\x{0d}
1631    \r\r\r\=ps
1632 0: \x{0d}\x{0d}\x{0d}
1633    \r\r\r\=ph
1634Partial match: \x{0d}\x{0d}\x{0d}
1635
1636/.{2,3}?/utf,newline=crlf
1637    \r\=ps
1638Partial match: \x{0d}
1639    \r\=ph
1640Partial match: \x{0d}
1641    \r\r\=ps
1642 0: \x{0d}\x{0d}
1643    \r\r\=ph
1644Partial match: \x{0d}\x{0d}
1645    \r\r\r\=ps
1646 0: \x{0d}\x{0d}
1647    \r\r\r\=ph
1648 0: \x{0d}\x{0d}
1649
1650/[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/B,utf
1651------------------------------------------------------------------
1652        Bra
1653        [^\x{100}]
1654        [^\x{1234}]
1655        [^\x{ffff}]
1656        [^\x{10000}]
1657        [^\x{10ffff}]
1658        Ket
1659        End
1660------------------------------------------------------------------
1661
1662/[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/Bi,utf
1663------------------------------------------------------------------
1664        Bra
1665     /i [^\x{100}]
1666     /i [^\x{1234}]
1667     /i [^\x{ffff}]
1668     /i [^\x{10000}]
1669     /i [^\x{10ffff}]
1670        Ket
1671        End
1672------------------------------------------------------------------
1673
1674/[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/B,utf
1675------------------------------------------------------------------
1676        Bra
1677        [^\x{100}]*
1678        [^\x{10000}]+
1679        [^\x{10ffff}]??
1680        [^\x{8000}]{4}
1681        [^\x{8000}]*
1682        [^\x{7fff}]{2}
1683        [^\x{7fff}]{0,7}?
1684        [^\x{fffff}]{5}
1685        [^\x{fffff}]?+
1686        Ket
1687        End
1688------------------------------------------------------------------
1689
1690/[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/Bi,utf
1691------------------------------------------------------------------
1692        Bra
1693     /i [^\x{100}]*
1694     /i [^\x{10000}]+
1695     /i [^\x{10ffff}]??
1696     /i [^\x{8000}]{4}
1697     /i [^\x{8000}]*
1698     /i [^\x{7fff}]{2}
1699     /i [^\x{7fff}]{0,7}?
1700     /i [^\x{fffff}]{5}
1701     /i [^\x{fffff}]?+
1702        Ket
1703        End
1704------------------------------------------------------------------
1705
1706/(?<=\x{1234}\x{1234})\bxy/I,utf
1707Capture group count = 0
1708Max lookbehind = 2
1709Options: utf
1710First code unit = 'x'
1711Last code unit = 'y'
1712Subject length lower bound = 2
1713
1714/(?<!^)ETA/utf
1715\= Expect no match
1716    ETA
1717No match
1718
1719/\u0100/B,utf,alt_bsux,allow_empty_class,match_unset_backref
1720------------------------------------------------------------------
1721        Bra
1722        \x{100}
1723        Ket
1724        End
1725------------------------------------------------------------------
1726
1727/[\u0100-\u0200]/B,utf,alt_bsux,allow_empty_class,match_unset_backref
1728------------------------------------------------------------------
1729        Bra
1730        [\x{100}-\x{200}]
1731        Ket
1732        End
1733------------------------------------------------------------------
1734
1735/\ud800/utf,alt_bsux,allow_empty_class,match_unset_backref
1736Failed: error 173 at offset 6: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
1737
1738/^\u{0000000000010ffff}/utf,extra_alt_bsux
1739    \x{10ffff}
1740 0: \x{10ffff}
1741
1742/\u/utf,alt_bsux
1743    \\u
1744 0: u
1745
1746/^a+[a\x{200}]/B,utf
1747------------------------------------------------------------------
1748        Bra
1749        ^
1750        a+
1751        [a\x{200}]
1752        Ket
1753        End
1754------------------------------------------------------------------
1755    aa
1756 0: aa
1757
1758/[b-d\x{200}-\x{250}]*[ae-h]?#[\x{200}-\x{250}]{0,8}[\x00-\xff]*#[\x{200}-\x{250}]+[a-z]/B,utf
1759------------------------------------------------------------------
1760        Bra
1761        [b-d\x{200}-\x{250}]*+
1762        [ae-h]?+
1763        #
1764        [\x{200}-\x{250}]{0,8}+
1765        [\x00-\xff]*
1766        #
1767        [\x{200}-\x{250}]++
1768        [a-z]
1769        Ket
1770        End
1771------------------------------------------------------------------
1772
1773/[\p{L}]/IB
1774------------------------------------------------------------------
1775        Bra
1776        [\p{L}]
1777        Ket
1778        End
1779------------------------------------------------------------------
1780Capture group count = 0
1781Subject length lower bound = 1
1782
1783/[\p{^L}]/IB
1784------------------------------------------------------------------
1785        Bra
1786        [\P{L}]
1787        Ket
1788        End
1789------------------------------------------------------------------
1790Capture group count = 0
1791Subject length lower bound = 1
1792
1793/[\P{L}]/IB
1794------------------------------------------------------------------
1795        Bra
1796        [\P{L}]
1797        Ket
1798        End
1799------------------------------------------------------------------
1800Capture group count = 0
1801Subject length lower bound = 1
1802
1803/[\P{^L}]/IB
1804------------------------------------------------------------------
1805        Bra
1806        [\p{L}]
1807        Ket
1808        End
1809------------------------------------------------------------------
1810Capture group count = 0
1811Subject length lower bound = 1
1812
1813/[abc\p{L}\x{0660}]/IB,utf
1814------------------------------------------------------------------
1815        Bra
1816        [a-c\p{L}\x{660}]
1817        Ket
1818        End
1819------------------------------------------------------------------
1820Capture group count = 0
1821Options: utf
1822Subject length lower bound = 1
1823
1824/[\p{Nd}]/IB,utf
1825------------------------------------------------------------------
1826        Bra
1827        [\p{Nd}]
1828        Ket
1829        End
1830------------------------------------------------------------------
1831Capture group count = 0
1832Options: utf
1833Subject length lower bound = 1
1834    1234
1835 0: 1
1836
1837/[\p{Nd}+-]+/IB,utf
1838------------------------------------------------------------------
1839        Bra
1840        [+\-\p{Nd}]++
1841        Ket
1842        End
1843------------------------------------------------------------------
1844Capture group count = 0
1845Options: utf
1846Subject length lower bound = 1
1847    1234
1848 0: 1234
1849    12-34
1850 0: 12-34
1851    12+\x{661}-34
1852 0: 12+\x{661}-34
1853\= Expect no match
1854    abcd
1855No match
1856
1857/(?:[\PPa*]*){8,}/
1858
1859/[\P{Any}]/B
1860------------------------------------------------------------------
1861        Bra
1862        [\P{Any}]
1863        Ket
1864        End
1865------------------------------------------------------------------
1866
1867/[\P{Any}\E]/B
1868------------------------------------------------------------------
1869        Bra
1870        [\P{Any}]
1871        Ket
1872        End
1873------------------------------------------------------------------
1874
1875/(\P{Yi}+\277)/
1876
1877/(\P{Yi}+\277)?/
1878
1879/(?<=\P{Yi}{3}A)X/
1880
1881/\p{Yi}+(\P{Yi}+)(?1)/
1882
1883/(\P{Yi}{2}\277)?/
1884
1885/[\P{Yi}A]/
1886
1887/[\P{Yi}\P{Yi}\P{Yi}A]/
1888
1889/[^\P{Yi}A]/
1890
1891/[^\P{Yi}\P{Yi}\P{Yi}A]/
1892
1893/(\P{Yi}*\277)*/
1894
1895/(\P{Yi}*?\277)*/
1896
1897/(\p{Yi}*+\277)*/
1898
1899/(\P{Yi}?\277)*/
1900
1901/(\P{Yi}??\277)*/
1902
1903/(\p{Yi}?+\277)*/
1904
1905/(\P{Yi}{0,3}\277)*/
1906
1907/(\P{Yi}{0,3}?\277)*/
1908
1909/(\p{Yi}{0,3}+\277)*/
1910
1911/\p{Zl}{2,3}+/B,utf
1912------------------------------------------------------------------
1913        Bra
1914        prop Zl {2}
1915        prop Zl ?+
1916        Ket
1917        End
1918------------------------------------------------------------------
1919    


1920 0: \x{2028}\x{2028}
1921    \x{2028}\x{2028}\x{2028}
1922 0: \x{2028}\x{2028}\x{2028}
1923
1924/\p{Zl}/B,utf
1925------------------------------------------------------------------
1926        Bra
1927        prop Zl
1928        Ket
1929        End
1930------------------------------------------------------------------
1931
1932/\p{Lu}{3}+/B,utf
1933------------------------------------------------------------------
1934        Bra
1935        prop Lu {3}
1936        Ket
1937        End
1938------------------------------------------------------------------
1939
1940/\pL{2}+/B,utf
1941------------------------------------------------------------------
1942        Bra
1943        prop L {2}
1944        Ket
1945        End
1946------------------------------------------------------------------
1947
1948/\p{Cc}{2}+/B,utf
1949------------------------------------------------------------------
1950        Bra
1951        prop Cc {2}
1952        Ket
1953        End
1954------------------------------------------------------------------
1955
1956/^\p{Cf}/utf
1957    \x{180e}
1958 0: \x{180e}
1959    \x{061c}
1960 0: \x{61c}
1961    \x{2066}
1962 0: \x{2066}
1963    \x{2067}
1964 0: \x{2067}
1965    \x{2068}
1966 0: \x{2068}
1967    \x{2069}
1968 0: \x{2069}
1969
1970/^\p{Cs}/utf
1971    \x{dfff}\=no_utf_check
1972 0: \x{dfff}
1973\= Expect no match
1974    \x{09f}
1975No match
1976
1977/^\p{Mn}/utf
1978    \x{1a1b}
1979 0: \x{1a1b}
1980
1981/^\p{Pe}/utf
1982    \x{2309}
1983 0: \x{2309}
1984    \x{230b}
1985 0: \x{230b}
1986
1987/^\p{Ps}/utf
1988    \x{2308}
1989 0: \x{2308}
1990    \x{230a}
1991 0: \x{230a}
1992
1993/^\p{Sc}+/utf
1994    $\x{a2}\x{a3}\x{a4}\x{a5}\x{a6}
1995 0: $\x{a2}\x{a3}\x{a4}\x{a5}
1996    \x{9f2}
1997 0: \x{9f2}
1998\= Expect no match
1999    X
2000No match
2001    \x{2c2}
2002No match
2003
2004/^\p{Zs}/utf
2005    \ \
2006 0:
2007    \x{a0}
2008 0: \x{a0}
2009    \x{1680}
2010 0: \x{1680}
2011    \x{2000}
2012 0: \x{2000}
2013    \x{2001}
2014 0: \x{2001}
2015\= Expect no match
2016    \x{2028}
2017No match
2018    \x{200d}
2019No match
2020
2021# These are here because Perl has problems with the negative versions of the
2022# properties and has changed how it behaves for caseless matching.
2023
2024/\p{^Lu}/i,utf
2025    1234
2026 0: 1
2027\= Expect no match
2028    ABC
2029No match
2030
2031/\P{Lu}/i,utf
2032    1234
2033 0: 1
2034\= Expect no match
2035    ABC
2036No match
2037
2038/\p{Ll}/i,utf
2039    a
2040 0: a
2041    Az
2042 0: z
2043\= Expect no match
2044    ABC
2045No match
2046
2047/\p{Lu}/i,utf
2048    A
2049 0: A
2050    a\x{10a0}B
2051 0: \x{10a0}
2052\= Expect no match
2053    a
2054No match
2055    \x{1d00}
2056No match
2057
2058/\p{Lu}/i,utf
2059    A
2060 0: A
2061    aZ
2062 0: Z
2063\= Expect no match
2064    abc
2065No match
2066
2067/[\x{c0}\x{391}]/i,utf
2068    \x{c0}
2069 0: \x{c0}
2070    \x{e0}
2071 0: \x{e0}
2072
2073# The next two are special cases where the lengths of the different cases of
2074# the same character differ. The first went wrong with heap frame storage; the
2075# second was broken in all cases.
2076
2077/^\x{023a}+?(\x{0130}+)/i,utf
2078  \x{023a}\x{2c65}\x{0130}
2079 0: \x{23a}\x{2c65}\x{130}
2080 1: \x{130}
2081
2082/^\x{023a}+([^X])/i,utf
2083  \x{023a}\x{2c65}X
2084 0: \x{23a}\x{2c65}
2085 1: \x{2c65}
2086
2087/\x{c0}+\x{116}+/i,utf
2088    \x{c0}\x{e0}\x{116}\x{117}
2089 0: \x{c0}\x{e0}\x{116}\x{117}
2090
2091/[\x{c0}\x{116}]+/i,utf
2092    \x{c0}\x{e0}\x{116}\x{117}
2093 0: \x{c0}\x{e0}\x{116}\x{117}
2094
2095/(\x{de})\1/i,utf
2096    \x{de}\x{de}
2097 0: \x{de}\x{de}
2098 1: \x{de}
2099    \x{de}\x{fe}
2100 0: \x{de}\x{fe}
2101 1: \x{de}
2102    \x{fe}\x{fe}
2103 0: \x{fe}\x{fe}
2104 1: \x{fe}
2105    \x{fe}\x{de}
2106 0: \x{fe}\x{de}
2107 1: \x{fe}
2108
2109/^\x{c0}$/i,utf
2110    \x{c0}
2111 0: \x{c0}
2112    \x{e0}
2113 0: \x{e0}
2114
2115/^\x{e0}$/i,utf
2116    \x{c0}
2117 0: \x{c0}
2118    \x{e0}
2119 0: \x{e0}
2120
2121# The next two should be Perl-compatible, but it fails to match \x{e0}. PCRE
2122# will match it only with UCP support, because without that it has no notion
2123# of case for anything other than the ASCII letters.
2124
2125/((?i)[\x{c0}])/utf
2126    \x{c0}
2127 0: \x{c0}
2128 1: \x{c0}
2129    \x{e0}
2130 0: \x{e0}
2131 1: \x{e0}
2132
2133/(?i:[\x{c0}])/utf
2134    \x{c0}
2135 0: \x{c0}
2136    \x{e0}
2137 0: \x{e0}
2138
2139# These are PCRE's extra properties to help with Unicodizing \d etc.
2140
2141/^\p{Xan}/utf
2142    ABCD
2143 0: A
2144    1234
2145 0: 1
2146    \x{6ca}
2147 0: \x{6ca}
2148    \x{a6c}
2149 0: \x{a6c}
2150    \x{10a7}
2151 0: \x{10a7}
2152\= Expect no match
2153    _ABC
2154No match
2155
2156/^\p{Xan}+/utf
2157    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
2158 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
2159\= Expect no match
2160    _ABC
2161No match
2162
2163/^\p{Xan}+?/utf
2164    \x{6ca}\x{a6c}\x{10a7}_
2165 0: \x{6ca}
2166
2167/^\p{Xan}*/utf
2168    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
2169 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
2170
2171/^\p{Xan}{2,9}/utf
2172    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
2173 0: ABCD1234\x{6ca}
2174
2175/^\p{Xan}{2,9}?/utf
2176    \x{6ca}\x{a6c}\x{10a7}_
2177 0: \x{6ca}\x{a6c}
2178
2179/^[\p{Xan}]/utf
2180    ABCD1234_
2181 0: A
2182    1234abcd_
2183 0: 1
2184    \x{6ca}
2185 0: \x{6ca}
2186    \x{a6c}
2187 0: \x{a6c}
2188    \x{10a7}
2189 0: \x{10a7}
2190\= Expect no match
2191    _ABC
2192No match
2193
2194/^[\p{Xan}]+/utf
2195    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
2196 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
2197\= Expect no match
2198    _ABC
2199No match
2200
2201/^>\p{Xsp}/utf
2202    >\x{1680}\x{2028}\x{0b}
2203 0: >\x{1680}
2204    >\x{a0}
2205 0: >\x{a0}
2206\= Expect no match
2207    \x{0b}
2208No match
2209
2210/^>\p{Xsp}+/utf
2211    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2212 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2213
2214/^>\p{Xsp}+?/utf
2215    >\x{1680}\x{2028}\x{0b}
2216 0: >\x{1680}
2217
2218/^>\p{Xsp}*/utf
2219    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2220 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2221
2222/^>\p{Xsp}{2,9}/utf
2223    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2224 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2225
2226/^>\p{Xsp}{2,9}?/utf
2227    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2228 0: > \x{09}
2229
2230/^>[\p{Xsp}]/utf
2231    >\x{2028}\x{0b}
2232 0: >\x{2028}
2233
2234/^>[\p{Xsp}]+/utf
2235    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2236 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2237
2238/^>\p{Xps}/utf
2239    >\x{1680}\x{2028}\x{0b}
2240 0: >\x{1680}
2241    >\x{a0}
2242 0: >\x{a0}
2243\= Expect no match
2244    \x{0b}
2245No match
2246
2247/^>\p{Xps}+/utf
2248    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2249 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2250
2251/^>\p{Xps}+?/utf
2252    >\x{1680}\x{2028}\x{0b}
2253 0: >\x{1680}
2254
2255/^>\p{Xps}*/utf
2256    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2257 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2258
2259/^>\p{Xps}{2,9}/utf
2260    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2261 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2262
2263/^>\p{Xps}{2,9}?/utf
2264    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2265 0: > \x{09}
2266
2267/^>[\p{Xps}]/utf
2268    >\x{2028}\x{0b}
2269 0: >\x{2028}
2270
2271/^>[\p{Xps}]+/utf
2272    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2273 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
2274
2275/^\p{Xwd}/utf
2276    ABCD
2277 0: A
2278    1234
2279 0: 1
2280    \x{6ca}
2281 0: \x{6ca}
2282    \x{a6c}
2283 0: \x{a6c}
2284    \x{10a7}
2285 0: \x{10a7}
2286    _ABC
2287 0: _
2288\= Expect no match
2289    []
2290No match
2291
2292/^\p{Xwd}+/utf
2293    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
2294 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
2295
2296/^\p{Xwd}+?/utf
2297    \x{6ca}\x{a6c}\x{10a7}_
2298 0: \x{6ca}
2299
2300/^\p{Xwd}*/utf
2301    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
2302 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
2303
2304/^\p{Xwd}{2,9}/utf
2305    A_B12\x{6ca}\x{a6c}\x{10a7}
2306 0: A_B12\x{6ca}\x{a6c}\x{10a7}
2307
2308/^\p{Xwd}{2,9}?/utf
2309    \x{6ca}\x{a6c}\x{10a7}_
2310 0: \x{6ca}\x{a6c}
2311
2312/^[\p{Xwd}]/utf
2313    ABCD1234_
2314 0: A
2315    1234abcd_
2316 0: 1
2317    \x{6ca}
2318 0: \x{6ca}
2319    \x{a6c}
2320 0: \x{a6c}
2321    \x{10a7}
2322 0: \x{10a7}
2323    _ABC
2324 0: _
2325\= Expect no match
2326    []
2327No match
2328
2329/^[\p{Xwd}]+/utf
2330    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
2331 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
2332
2333# A check not in UTF-8 mode
2334
2335/^[\p{Xwd}]+/
2336    ABCD1234_
2337 0: ABCD1234_
2338
2339# Some negative checks
2340
2341/^[\P{Xwd}]+/utf
2342    !.+\x{019}\x{35a}AB
2343 0: !.+\x{19}\x{35a}
2344
2345/^[\p{^Xwd}]+/utf
2346    !.+\x{019}\x{35a}AB
2347 0: !.+\x{19}\x{35a}
2348
2349/[\D]/B,utf,ucp
2350------------------------------------------------------------------
2351        Bra
2352        [\P{Nd}]
2353        Ket
2354        End
2355------------------------------------------------------------------
2356    1\x{3c8}2
2357 0: \x{3c8}
2358
2359/[\d]/B,utf,ucp
2360------------------------------------------------------------------
2361        Bra
2362        [\p{Nd}]
2363        Ket
2364        End
2365------------------------------------------------------------------
2366    >\x{6f4}<
2367 0: \x{6f4}
2368
2369/[\S]/B,utf,ucp
2370------------------------------------------------------------------
2371        Bra
2372        [\P{Xsp}]
2373        Ket
2374        End
2375------------------------------------------------------------------
2376    \x{1680}\x{6f4}\x{1680}
2377 0: \x{6f4}
2378
2379/[\s]/B,utf,ucp
2380------------------------------------------------------------------
2381        Bra
2382        [\p{Xsp}]
2383        Ket
2384        End
2385------------------------------------------------------------------
2386    >\x{1680}<
2387 0: \x{1680}
2388
2389/[\W]/B,utf,ucp
2390------------------------------------------------------------------
2391        Bra
2392        [\P{Xwd}]
2393        Ket
2394        End
2395------------------------------------------------------------------
2396    A\x{1712}B
2397 0: \x{1712}
2398
2399/[\w]/B,utf,ucp
2400------------------------------------------------------------------
2401        Bra
2402        [\p{Xwd}]
2403        Ket
2404        End
2405------------------------------------------------------------------
2406    >\x{1723}<
2407 0: \x{1723}
2408
2409/\D/B,utf,ucp
2410------------------------------------------------------------------
2411        Bra
2412        notprop Nd
2413        Ket
2414        End
2415------------------------------------------------------------------
2416    1\x{3c8}2
2417 0: \x{3c8}
2418
2419/\d/B,utf,ucp
2420------------------------------------------------------------------
2421        Bra
2422        prop Nd
2423        Ket
2424        End
2425------------------------------------------------------------------
2426    >\x{6f4}<
2427 0: \x{6f4}
2428
2429/\S/B,utf,ucp
2430------------------------------------------------------------------
2431        Bra
2432        notprop Xsp
2433        Ket
2434        End
2435------------------------------------------------------------------
2436    \x{1680}\x{6f4}\x{1680}
2437 0: \x{6f4}
2438
2439/\s/B,utf,ucp
2440------------------------------------------------------------------
2441        Bra
2442        prop Xsp
2443        Ket
2444        End
2445------------------------------------------------------------------
2446    >\x{1680}>
2447 0: \x{1680}
2448
2449/\W/B,utf,ucp
2450------------------------------------------------------------------
2451        Bra
2452        notprop Xwd
2453        Ket
2454        End
2455------------------------------------------------------------------
2456    A\x{1712}B
2457 0: \x{1712}
2458
2459/\w/B,utf,ucp
2460------------------------------------------------------------------
2461        Bra
2462        prop Xwd
2463        Ket
2464        End
2465------------------------------------------------------------------
2466    >\x{1723}<
2467 0: \x{1723}
2468
2469/[[:alpha:]]/B,ucp
2470------------------------------------------------------------------
2471        Bra
2472        [\p{L}]
2473        Ket
2474        End
2475------------------------------------------------------------------
2476
2477/[[:lower:]]/B,ucp
2478------------------------------------------------------------------
2479        Bra
2480        [\p{Ll}]
2481        Ket
2482        End
2483------------------------------------------------------------------
2484
2485/[[:upper:]]/B,ucp
2486------------------------------------------------------------------
2487        Bra
2488        [\p{Lu}]
2489        Ket
2490        End
2491------------------------------------------------------------------
2492
2493/[[:alnum:]]/B,ucp
2494------------------------------------------------------------------
2495        Bra
2496        [\p{Xan}]
2497        Ket
2498        End
2499------------------------------------------------------------------
2500
2501/[[:ascii:]]/B,ucp
2502------------------------------------------------------------------
2503        Bra
2504        [\x00-\x7f]
2505        Ket
2506        End
2507------------------------------------------------------------------
2508
2509/[[:cntrl:]]/B,ucp
2510------------------------------------------------------------------
2511        Bra
2512        [\p{Cc}]
2513        Ket
2514        End
2515------------------------------------------------------------------
2516
2517/[[:digit:]]/B,ucp
2518------------------------------------------------------------------
2519        Bra
2520        [\p{Nd}]
2521        Ket
2522        End
2523------------------------------------------------------------------
2524
2525/[[:graph:]]/B,ucp
2526------------------------------------------------------------------
2527        Bra
2528        [[:graph:]]
2529        Ket
2530        End
2531------------------------------------------------------------------
2532
2533/[[:print:]]/B,ucp
2534------------------------------------------------------------------
2535        Bra
2536        [[:print:]]
2537        Ket
2538        End
2539------------------------------------------------------------------
2540
2541/[[:punct:]]/B,ucp
2542------------------------------------------------------------------
2543        Bra
2544        [[:punct:]]
2545        Ket
2546        End
2547------------------------------------------------------------------
2548
2549/[[:space:]]/B,ucp
2550------------------------------------------------------------------
2551        Bra
2552        [\p{Xps}]
2553        Ket
2554        End
2555------------------------------------------------------------------
2556
2557/[[:word:]]/B,ucp
2558------------------------------------------------------------------
2559        Bra
2560        [\p{Xwd}]
2561        Ket
2562        End
2563------------------------------------------------------------------
2564
2565/[[:xdigit:]]/B,ucp
2566------------------------------------------------------------------
2567        Bra
2568        [0-9A-Fa-f]
2569        Ket
2570        End
2571------------------------------------------------------------------
2572
2573# Unicode properties for \b abd \B
2574
2575/\b...\B/utf,ucp
2576    abc_
2577 0: abc
2578    \x{37e}abc\x{376}
2579 0: abc
2580    \x{37e}\x{376}\x{371}\x{393}\x{394}
2581 0: \x{376}\x{371}\x{393}
2582    !\x{c0}++\x{c1}\x{c2}
2583 0: ++\x{c1}
2584    !\x{c0}+++++
2585 0: \x{c0}++
2586
2587# Without PCRE_UCP, non-ASCII always fail, even if < 256
2588
2589/\b...\B/utf
2590    abc_
2591 0: abc
2592\= Expect no match
2593    \x{37e}abc\x{376}
2594No match
2595    \x{37e}\x{376}\x{371}\x{393}\x{394}
2596No match
2597    !\x{c0}++\x{c1}\x{c2}
2598No match
2599    !\x{c0}+++++
2600No match
2601
2602# With PCRE_UCP, non-UTF8 chars that are < 256 still check properties
2603
2604/\b...\B/ucp
2605    abc_
2606 0: abc
2607    !\x{c0}++\x{c1}\x{c2}
2608 0: ++\xc1
2609    !\x{c0}+++++
2610 0: \xc0++
2611
2612# Some of these are silly, but they check various combinations
2613
2614/[[:^alpha:][:^cntrl:]]+/B,utf,ucp
2615------------------------------------------------------------------
2616        Bra
2617        [\P{L}\P{Cc}]++
2618        Ket
2619        End
2620------------------------------------------------------------------
2621    123
2622 0: 123
2623    abc
2624 0: abc
2625
2626/[[:^cntrl:][:^alpha:]]+/B,utf,ucp
2627------------------------------------------------------------------
2628        Bra
2629        [\P{Cc}\P{L}]++
2630        Ket
2631        End
2632------------------------------------------------------------------
2633    123
2634 0: 123
2635    abc
2636 0: abc
2637
2638/[[:alpha:]]+/B,utf,ucp
2639------------------------------------------------------------------
2640        Bra
2641        [\p{L}]++
2642        Ket
2643        End
2644------------------------------------------------------------------
2645    abc
2646 0: abc
2647
2648/[[:^alpha:]\S]+/B,utf,ucp
2649------------------------------------------------------------------
2650        Bra
2651        [\P{L}\P{Xsp}]++
2652        Ket
2653        End
2654------------------------------------------------------------------
2655    123
2656 0: 123
2657    abc
2658 0: abc
2659
2660/[^\d]+/B,utf,ucp
2661------------------------------------------------------------------
2662        Bra
2663        [^\p{Nd}]++
2664        Ket
2665        End
2666------------------------------------------------------------------
2667    abc123
2668 0: abc
2669    abc\x{123}
2670 0: abc\x{123}
2671    \x{660}abc
2672 0: abc
2673
2674/\p{Lu}+9\p{Lu}+B\p{Lu}+b/B
2675------------------------------------------------------------------
2676        Bra
2677        prop Lu ++
2678        9
2679        prop Lu +
2680        B
2681        prop Lu ++
2682        b
2683        Ket
2684        End
2685------------------------------------------------------------------
2686
2687/\p{^Lu}+9\p{^Lu}+B\p{^Lu}+b/B
2688------------------------------------------------------------------
2689        Bra
2690        notprop Lu +
2691        9
2692        notprop Lu ++
2693        B
2694        notprop Lu +
2695        b
2696        Ket
2697        End
2698------------------------------------------------------------------
2699
2700/\P{Lu}+9\P{Lu}+B\P{Lu}+b/B
2701------------------------------------------------------------------
2702        Bra
2703        notprop Lu +
2704        9
2705        notprop Lu ++
2706        B
2707        notprop Lu +
2708        b
2709        Ket
2710        End
2711------------------------------------------------------------------
2712
2713/\p{Han}+X\p{Greek}+\x{370}/B,utf
2714------------------------------------------------------------------
2715        Bra
2716        prop Han ++
2717        X
2718        prop Greek +
2719        \x{370}
2720        Ket
2721        End
2722------------------------------------------------------------------
2723
2724/\p{Xan}+!\p{Xan}+A/B
2725------------------------------------------------------------------
2726        Bra
2727        prop Xan ++
2728        !
2729        prop Xan +
2730        A
2731        Ket
2732        End
2733------------------------------------------------------------------
2734
2735/\p{Xsp}+!\p{Xsp}\t/B
2736------------------------------------------------------------------
2737        Bra
2738        prop Xsp ++
2739        !
2740        prop Xsp
2741        \x09
2742        Ket
2743        End
2744------------------------------------------------------------------
2745
2746/\p{Xps}+!\p{Xps}\t/B
2747------------------------------------------------------------------
2748        Bra
2749        prop Xps ++
2750        !
2751        prop Xps
2752        \x09
2753        Ket
2754        End
2755------------------------------------------------------------------
2756
2757/\p{Xwd}+!\p{Xwd}_/B
2758------------------------------------------------------------------
2759        Bra
2760        prop Xwd ++
2761        !
2762        prop Xwd
2763        _
2764        Ket
2765        End
2766------------------------------------------------------------------
2767
2768/A+\p{N}A+\dB+\p{N}*B+\d*/B,ucp
2769------------------------------------------------------------------
2770        Bra
2771        A++
2772        prop N
2773        A++
2774        prop Nd
2775        B+
2776        prop N *+
2777        B++
2778        prop Nd *+
2779        Ket
2780        End
2781------------------------------------------------------------------
2782
2783# These behaved oddly in Perl, so they are kept in this test
2784
2785/(\x{23a}\x{23a}\x{23a})?\1/i,utf
2786\= Expect no match
2787    \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
2788No match
2789
2790/(ȺȺȺ)?\1/i,utf
2791\= Expect no match
2792    ȺȺȺⱥⱥ
2793No match
2794
2795/(\x{23a}\x{23a}\x{23a})?\1/i,utf
2796    \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
2797 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
2798 1: \x{23a}\x{23a}\x{23a}
2799
2800/(ȺȺȺ)?\1/i,utf
2801    ȺȺȺⱥⱥⱥ
2802 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
2803 1: \x{23a}\x{23a}\x{23a}
2804
2805/(\x{23a}\x{23a}\x{23a})\1/i,utf
2806\= Expect no match
2807    \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
2808No match
2809
2810/(ȺȺȺ)\1/i,utf
2811\= Expect no match
2812    ȺȺȺⱥⱥ
2813No match
2814
2815/(\x{23a}\x{23a}\x{23a})\1/i,utf
2816    \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
2817 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
2818 1: \x{23a}\x{23a}\x{23a}
2819
2820/(ȺȺȺ)\1/i,utf
2821    ȺȺȺⱥⱥⱥ
2822 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
2823 1: \x{23a}\x{23a}\x{23a}
2824
2825/(\x{2c65}\x{2c65})\1/i,utf
2826    \x{2c65}\x{2c65}\x{23a}\x{23a}
2827 0: \x{2c65}\x{2c65}\x{23a}\x{23a}
2828 1: \x{2c65}\x{2c65}
2829
2830/(ⱥⱥ)\1/i,utf
2831    ⱥⱥȺȺ
2832 0: \x{2c65}\x{2c65}\x{23a}\x{23a}
2833 1: \x{2c65}\x{2c65}
2834
2835/(\x{23a}\x{23a}\x{23a})\1Y/i,utf
2836    X\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}YZ
2837 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}Y
2838 1: \x{23a}\x{23a}\x{23a}
2839
2840/(\x{2c65}\x{2c65})\1Y/i,utf
2841    X\x{2c65}\x{2c65}\x{23a}\x{23a}YZ
2842 0: \x{2c65}\x{2c65}\x{23a}\x{23a}Y
2843 1: \x{2c65}\x{2c65}
2844
2845# These scripts weren't yet in Perl when I added Unicode 6.0.0 to PCRE
2846
2847/^[\p{Batak}]/utf
2848    \x{1bc0}
2849 0: \x{1bc0}
2850    \x{1bff}
2851 0: \x{1bff}
2852\= Expect no match
2853    \x{1bf4}
2854No match
2855
2856/^[\p{Brahmi}]/utf
2857    \x{11000}
2858 0: \x{11000}
2859    \x{1106f}
2860 0: \x{1106f}
2861\= Expect no match
2862    \x{1104e}
2863No match
2864
2865/^[\p{Mandaic}]/utf
2866    \x{840}
2867 0: \x{840}
2868    \x{85e}
2869 0: \x{85e}
2870\= Expect no match
2871    \x{85c}
2872No match
2873    \x{85d}
2874No match
2875
2876/(\X*)(.)/s,utf
2877    A\x{300}
2878 0: A
2879 1:
2880 2: A
2881
2882/^S(\X*)e(\X*)$/utf
2883    Stéréo
2884 0: Ste\x{301}re\x{301}o
2885 1: te\x{301}r
2886 2: \x{301}o
2887
2888/^\X/utf
2889    ́réo
2890 0: \x{301}
2891
2892/^a\X41z/alt_bsux,allow_empty_class,match_unset_backref,dupnames
2893    aX41z
2894 0: aX41z
2895\= Expect no match
2896    aAz
2897No match
2898
2899/\X/
2900    a\=ps
2901 0: a
2902    a\=ph
2903Partial match: a
2904
2905/\Xa/
2906    aa\=ps
2907 0: aa
2908    aa\=ph
2909 0: aa
2910
2911/\X{2}/
2912    aa\=ps
2913 0: aa
2914    aa\=ph
2915Partial match: aa
2916
2917/\X+a/
2918    a\=ps
2919Partial match: a
2920    aa\=ps
2921 0: aa
2922    aa\=ph
2923Partial match: aa
2924
2925/\X+?a/
2926    a\=ps
2927Partial match: a
2928    ab\=ps
2929Partial match: ab
2930    aa\=ps
2931 0: aa
2932    aa\=ph
2933 0: aa
2934    aba\=ps
2935 0: aba
2936
2937# These Unicode 6.1.0 scripts are not known to Perl.
2938
2939/\p{Chakma}\d/utf,ucp
2940    \x{11100}\x{1113c}
2941 0: \x{11100}\x{1113c}
2942
2943/\p{Takri}\d/utf,ucp
2944    \x{11680}\x{116c0}
2945 0: \x{11680}\x{116c0}
2946
2947/^\X/utf
2948    A\=ps
2949 0: A
2950    A\=ph
2951Partial match: A
2952    A\x{300}\x{301}\=ps
2953 0: A\x{300}\x{301}
2954    A\x{300}\x{301}\=ph
2955Partial match: A\x{300}\x{301}
2956    A\x{301}\=ps
2957 0: A\x{301}
2958    A\x{301}\=ph
2959Partial match: A\x{301}
2960
2961/^\X{2,3}/utf
2962    A\=ps
2963Partial match: A
2964    A\=ph
2965Partial match: A
2966    AA\=ps
2967 0: AA
2968    AA\=ph
2969Partial match: AA
2970    A\x{300}\x{301}\=ps
2971Partial match: A\x{300}\x{301}
2972    A\x{300}\x{301}\=ph
2973Partial match: A\x{300}\x{301}
2974    A\x{300}\x{301}A\x{300}\x{301}\=ps
2975 0: A\x{300}\x{301}A\x{300}\x{301}
2976    A\x{300}\x{301}A\x{300}\x{301}\=ph
2977Partial match: A\x{300}\x{301}A\x{300}\x{301}
2978
2979/^\X{2}/utf
2980    AA\=ps
2981 0: AA
2982    AA\=ph
2983Partial match: AA
2984    A\x{300}\x{301}A\x{300}\x{301}\=ps
2985 0: A\x{300}\x{301}A\x{300}\x{301}
2986    A\x{300}\x{301}A\x{300}\x{301}\=ph
2987Partial match: A\x{300}\x{301}A\x{300}\x{301}
2988
2989/^\X+/utf
2990    AA\=ps
2991 0: AA
2992    AA\=ph
2993Partial match: AA
2994
2995/^\X+?Z/utf
2996    AA\=ps
2997Partial match: AA
2998    AA\=ph
2999Partial match: AA
3000
3001/A\x{3a3}B/IBi,utf
3002------------------------------------------------------------------
3003        Bra
3004     /i A
3005        clist 03a3 03c2 03c3
3006     /i B
3007        Ket
3008        End
3009------------------------------------------------------------------
3010Capture group count = 0
3011Options: caseless utf
3012First code unit = 'A' (caseless)
3013Last code unit = 'B' (caseless)
3014Subject length lower bound = 3
3015
3016/[\x{3a3}]/Bi,utf
3017------------------------------------------------------------------
3018        Bra
3019        clist 03a3 03c2 03c3
3020        Ket
3021        End
3022------------------------------------------------------------------
3023
3024/[^\x{3a3}]/Bi,utf
3025------------------------------------------------------------------
3026        Bra
3027        not clist 03a3 03c2 03c3
3028        Ket
3029        End
3030------------------------------------------------------------------
3031
3032/[\x{3a3}]+/Bi,utf
3033------------------------------------------------------------------
3034        Bra
3035        clist 03a3 03c2 03c3 ++
3036        Ket
3037        End
3038------------------------------------------------------------------
3039
3040/[^\x{3a3}]+/Bi,utf
3041------------------------------------------------------------------
3042        Bra
3043        not clist 03a3 03c2 03c3 ++
3044        Ket
3045        End
3046------------------------------------------------------------------
3047
3048/a*\x{3a3}/Bi,utf
3049------------------------------------------------------------------
3050        Bra
3051     /i a*+
3052        clist 03a3 03c2 03c3
3053        Ket
3054        End
3055------------------------------------------------------------------
3056
3057/\x{3a3}+a/Bi,utf
3058------------------------------------------------------------------
3059        Bra
3060        clist 03a3 03c2 03c3 ++
3061     /i a
3062        Ket
3063        End
3064------------------------------------------------------------------
3065
3066/\x{3a3}*\x{3c2}/Bi,utf
3067------------------------------------------------------------------
3068        Bra
3069        clist 03a3 03c2 03c3 *
3070        clist 03a3 03c2 03c3
3071        Ket
3072        End
3073------------------------------------------------------------------
3074
3075/\x{3a3}{3}/i,utf,aftertext
3076    \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
3077 0: \x{3a3}\x{3c3}\x{3c2}
3078 0+ \x{3a3}\x{3c3}\x{3c2}
3079
3080/\x{3a3}{2,4}/i,utf,aftertext
3081    \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
3082 0: \x{3a3}\x{3c3}\x{3c2}\x{3a3}
3083 0+ \x{3c3}\x{3c2}
3084
3085/\x{3a3}{2,4}?/i,utf,aftertext
3086    \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
3087 0: \x{3a3}\x{3c3}
3088 0+ \x{3c2}\x{3a3}\x{3c3}\x{3c2}
3089
3090/\x{3a3}+./i,utf,aftertext
3091    \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
3092 0: \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
3093 0+
3094
3095/\x{3a3}++./i,utf,aftertext
3096\= Expect no match
3097    \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
3098No match
3099
3100/\x{3a3}*\x{3c2}/Bi,utf
3101------------------------------------------------------------------
3102        Bra
3103        clist 03a3 03c2 03c3 *
3104        clist 03a3 03c2 03c3
3105        Ket
3106        End
3107------------------------------------------------------------------
3108
3109/[^\x{3a3}]*\x{3c2}/Bi,utf
3110------------------------------------------------------------------
3111        Bra
3112        not clist 03a3 03c2 03c3 *+
3113        clist 03a3 03c2 03c3
3114        Ket
3115        End
3116------------------------------------------------------------------
3117
3118/[^a]*\x{3c2}/Bi,utf
3119------------------------------------------------------------------
3120        Bra
3121     /i [^a]*
3122        clist 03a3 03c2 03c3
3123        Ket
3124        End
3125------------------------------------------------------------------
3126
3127/ist/Bi,utf
3128------------------------------------------------------------------
3129        Bra
3130     /i i
3131        clist 0053 0073 017f
3132     /i t
3133        Ket
3134        End
3135------------------------------------------------------------------
3136\= Expect no match
3137    ikt
3138No match
3139
3140/is+t/i,utf
3141    iSs\x{17f}t
3142 0: iSs\x{17f}t
3143\= Expect no match
3144    ikt
3145No match
3146
3147/is+?t/i,utf
3148\= Expect no match
3149    ikt
3150No match
3151
3152/is?t/i,utf
3153\= Expect no match
3154    ikt
3155No match
3156
3157/is{2}t/i,utf
3158\= Expect no match
3159    iskt
3160No match
3161
3162# This property is a PCRE special
3163
3164/^\p{Xuc}/utf
3165    $abc
3166 0: $
3167    @abc
3168 0: @
3169    `abc
3170 0: `
3171    \x{1234}abc
3172 0: \x{1234}
3173\= Expect no match
3174    abc
3175No match
3176
3177/^\p{Xuc}+/utf
3178    $@`\x{a0}\x{1234}\x{e000}**
3179 0: $@`\x{a0}\x{1234}\x{e000}
3180\= Expect no match
3181    \x{9f}
3182No match
3183
3184/^\p{Xuc}+?/utf
3185    $@`\x{a0}\x{1234}\x{e000}**
3186 0: $
3187\= Expect no match
3188    \x{9f}
3189No match
3190
3191/^\p{Xuc}+?\*/utf
3192    $@`\x{a0}\x{1234}\x{e000}**
3193 0: $@`\x{a0}\x{1234}\x{e000}*
3194\= Expect no match
3195    \x{9f}
3196No match
3197
3198/^\p{Xuc}++/utf
3199    $@`\x{a0}\x{1234}\x{e000}**
3200 0: $@`\x{a0}\x{1234}\x{e000}
3201\= Expect no match
3202    \x{9f}
3203No match
3204
3205/^\p{Xuc}{3,5}/utf
3206    $@`\x{a0}\x{1234}\x{e000}**
3207 0: $@`\x{a0}\x{1234}
3208\= Expect no match
3209    \x{9f}
3210No match
3211
3212/^\p{Xuc}{3,5}?/utf
3213    $@`\x{a0}\x{1234}\x{e000}**
3214 0: $@`
3215\= Expect no match
3216    \x{9f}
3217No match
3218
3219/^[\p{Xuc}]/utf
3220    $@`\x{a0}\x{1234}\x{e000}**
3221 0: $
3222\= Expect no match
3223    \x{9f}
3224No match
3225
3226/^[\p{Xuc}]+/utf
3227    $@`\x{a0}\x{1234}\x{e000}**
3228 0: $@`\x{a0}\x{1234}\x{e000}
3229\= Expect no match
3230    \x{9f}
3231No match
3232
3233/^\P{Xuc}/utf
3234    abc
3235 0: a
3236\= Expect no match
3237    $abc
3238No match
3239    @abc
3240No match
3241    `abc
3242No match
3243    \x{1234}abc
3244No match
3245
3246/^[\P{Xuc}]/utf
3247    abc
3248 0: a
3249\= Expect no match
3250    $abc
3251No match
3252    @abc
3253No match
3254    `abc
3255No match
3256    \x{1234}abc
3257No match
3258
3259# Some auto-possessification tests
3260
3261/\pN+\z/B
3262------------------------------------------------------------------
3263        Bra
3264        prop N ++
3265        \z
3266        Ket
3267        End
3268------------------------------------------------------------------
3269
3270/\PN+\z/B
3271------------------------------------------------------------------
3272        Bra
3273        notprop N ++
3274        \z
3275        Ket
3276        End
3277------------------------------------------------------------------
3278
3279/\pN+/B
3280------------------------------------------------------------------
3281        Bra
3282        prop N ++
3283        Ket
3284        End
3285------------------------------------------------------------------
3286
3287/\PN+/B
3288------------------------------------------------------------------
3289        Bra
3290        notprop N ++
3291        Ket
3292        End
3293------------------------------------------------------------------
3294
3295/\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
3296------------------------------------------------------------------
3297        Bra
3298        AllAny+
3299        AllAny
3300        AllAny+
3301        notprop Any
3302        AllAny+
3303        prop L&
3304        AllAny+
3305        prop L
3306        AllAny+
3307        prop Lu
3308        AllAny+
3309        prop Han
3310        AllAny+
3311        prop Xan
3312        AllAny+
3313        prop Xsp
3314        AllAny+
3315        prop Xps
3316        prop Xwd +
3317        AllAny
3318        AllAny+
3319        prop Xuc
3320        Ket
3321        End
3322------------------------------------------------------------------
3323
3324/\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
3325------------------------------------------------------------------
3326        Bra
3327        prop L& +
3328        AllAny
3329        prop L& +
3330        prop L&
3331        notprop L& ++
3332        prop L&
3333        prop L& +
3334        prop L
3335        prop L& +
3336        prop Lu
3337        prop L& +
3338        prop Han
3339        prop L& +
3340        prop Xan
3341        prop L& ++
3342        notprop Xan
3343        prop L& ++
3344        prop Xsp
3345        prop L& ++
3346        prop Xps
3347        prop Xwd +
3348        prop L&
3349        prop L& +
3350        prop Xuc
3351        Ket
3352        End
3353------------------------------------------------------------------
3354
3355/\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
3356------------------------------------------------------------------
3357        Bra
3358        prop N +
3359        AllAny
3360        prop N +
3361        prop L&
3362        prop N ++
3363        prop L
3364        prop N +
3365        notprop L
3366        prop N ++
3367        notprop N
3368        prop N ++
3369        prop Lu
3370        prop N +
3371        prop Han
3372        prop N +
3373        prop Xan
3374        prop N ++
3375        prop Xsp
3376        prop N ++
3377        prop Xps
3378        prop Xwd +
3379        prop N
3380        prop N +
3381        prop Xuc
3382        Ket
3383        End
3384------------------------------------------------------------------
3385
3386/\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
3387------------------------------------------------------------------
3388        Bra
3389        prop Lu +
3390        AllAny
3391        prop Lu +
3392        prop L&
3393        prop Lu +
3394        prop L
3395        prop Lu +
3396        prop Lu
3397        notprop Lu ++
3398        prop Lu
3399        prop Lu ++
3400        prop Nd
3401        prop Lu +
3402        notprop Nd
3403        prop Lu +
3404        prop Han
3405        prop Lu +
3406        prop Xan
3407        prop Lu ++
3408        prop Xsp
3409        prop Lu ++
3410        prop Xps
3411        prop Xwd +
3412        prop Lu
3413        prop Lu +
3414        prop Xuc
3415        Ket
3416        End
3417------------------------------------------------------------------
3418
3419/\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
3420------------------------------------------------------------------
3421        Bra
3422        prop Han +
3423        prop Lu
3424        prop Han +
3425        prop L&
3426        prop Han +
3427        prop L
3428        prop Han +
3429        prop Lu
3430        prop Han ++
3431        prop Arabic
3432        prop Arabic +
3433        prop Arabic
3434        prop Han +
3435        prop Xan
3436        prop Han +
3437        prop Xsp
3438        prop Han +
3439        prop Xps
3440        prop Xwd +
3441        prop Han
3442        prop Han +
3443        prop Xuc
3444        Ket
3445        End
3446------------------------------------------------------------------
3447
3448/\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
3449------------------------------------------------------------------
3450        Bra
3451        prop Xan +
3452        AllAny
3453        prop Xan +
3454        prop L&
3455        notprop Xan ++
3456        prop L&
3457        prop Xan +
3458        prop L
3459        prop Xan +
3460        prop Lu
3461        prop Xan +
3462        prop Han
3463        prop Xan +
3464        prop Xan
3465        prop Xan ++
3466        notprop Xan
3467        prop Xan ++
3468        prop Xsp
3469        prop Xan ++
3470        prop Xps
3471        prop Xwd +
3472        prop Xan
3473        prop Xan +
3474        prop Xuc
3475        Ket
3476        End
3477------------------------------------------------------------------
3478
3479/\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
3480------------------------------------------------------------------
3481        Bra
3482        prop Xsp +
3483        AllAny
3484        prop Xsp ++
3485        prop L&
3486        prop Xsp ++
3487        prop L
3488        prop Xsp ++
3489        prop Lu
3490        prop Xsp +
3491        prop Han
3492        prop Xsp ++
3493        prop Xan
3494        prop Xsp +
3495        prop Xsp
3496        notprop Xsp ++
3497        prop Xsp
3498        prop Xsp +
3499        prop Xps
3500        prop Xwd ++
3501        prop Xsp
3502        prop Xsp +
3503        prop Xuc
3504        Ket
3505        End
3506------------------------------------------------------------------
3507
3508/\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
3509------------------------------------------------------------------
3510        Bra
3511        prop Xwd +
3512        AllAny
3513        prop Xwd +
3514        prop L&
3515        prop Xwd +
3516        prop L
3517        prop Xwd +
3518        prop Lu
3519        prop Xwd +
3520        prop Han
3521        prop Xwd +
3522        prop Xan
3523        prop Xwd ++
3524        prop Xsp
3525        prop Xwd ++
3526        prop Xps
3527        prop Xwd +
3528        prop Xwd
3529        prop Xwd ++
3530        notprop Xwd
3531        prop Xwd +
3532        prop Xuc
3533        Ket
3534        End
3535------------------------------------------------------------------
3536
3537/\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
3538------------------------------------------------------------------
3539        Bra
3540        prop Xuc +
3541        AllAny
3542        prop Xuc +
3543        prop L&
3544        prop Xuc +
3545        prop L
3546        prop Xuc +
3547        prop Lu
3548        prop Xuc +
3549        prop Han
3550        prop Xuc +
3551        prop Xan
3552        prop Xuc +
3553        prop Xsp
3554        prop Xuc +
3555        prop Xps
3556        prop Xwd +
3557        prop Xuc
3558        prop Xuc +
3559        prop Xuc
3560        prop Xuc ++
3561        notprop Xuc
3562        Ket
3563        End
3564------------------------------------------------------------------
3565
3566/\p{N}+\p{Ll} \p{N}+\p{Nd} \p{N}+\P{Nd}/Bx,ucp
3567------------------------------------------------------------------
3568        Bra
3569        prop N ++
3570        prop Ll
3571        prop N +
3572        prop Nd
3573        prop N +
3574        notprop Nd
3575        Ket
3576        End
3577------------------------------------------------------------------
3578
3579/\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
3580------------------------------------------------------------------
3581        Bra
3582        prop Xan +
3583        prop L
3584        prop Xan +
3585        prop N
3586        prop Xan ++
3587        prop C
3588        prop Xan +
3589        notprop L
3590        notprop Xan ++
3591        prop N
3592        prop Xan +
3593        notprop C
3594        Ket
3595        End
3596------------------------------------------------------------------
3597
3598/\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
3599------------------------------------------------------------------
3600        Bra
3601        prop L +
3602        prop Xan
3603        prop N +
3604        prop Xan
3605        prop C ++
3606        prop Xan
3607        notprop L +
3608        prop Xan
3609        prop N +
3610        prop Xan
3611        notprop C +
3612        prop Xan
3613        prop L ++
3614        notprop Xan
3615        Ket
3616        End
3617------------------------------------------------------------------
3618
3619/\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
3620------------------------------------------------------------------
3621        Bra
3622        prop Xan +
3623        prop Lu
3624        prop Xan +
3625        prop Nd
3626        prop Xan ++
3627        prop Cc
3628        prop Xan +
3629        notprop Ll
3630        notprop Xan ++
3631        prop No
3632        prop Xan +
3633        notprop Cf
3634        Ket
3635        End
3636------------------------------------------------------------------
3637
3638/\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
3639------------------------------------------------------------------
3640        Bra
3641        prop Lu +
3642        prop Xan
3643        prop Nd +
3644        prop Xan
3645        prop Cs ++
3646        prop Xan
3647        notprop Lt +
3648        prop Xan
3649        prop Nl +
3650        prop Xan
3651        notprop Cc +
3652        prop Xan
3653        prop Lt ++
3654        notprop Xan
3655        Ket
3656        End
3657------------------------------------------------------------------
3658
3659/\w+\p{P} \w+\p{Po} \w+\s \p{Xan}+\s \s+\p{Xan} \s+\w/Bx,ucp
3660------------------------------------------------------------------
3661        Bra
3662        prop Xwd +
3663        prop P
3664        prop Xwd +
3665        prop Po
3666        prop Xwd ++
3667        prop Xsp
3668        prop Xan ++
3669        prop Xsp
3670        prop Xsp ++
3671        prop Xan
3672        prop Xsp ++
3673        prop Xwd
3674        Ket
3675        End
3676------------------------------------------------------------------
3677
3678/\w+\P{P} \W+\p{Po} \w+\S \P{Xan}+\s \s+\P{Xan} \s+\W/Bx,ucp
3679------------------------------------------------------------------
3680        Bra
3681        prop Xwd +
3682        notprop P
3683        notprop Xwd +
3684        prop Po
3685        prop Xwd +
3686        notprop Xsp
3687        notprop Xan +
3688        prop Xsp
3689        prop Xsp +
3690        notprop Xan
3691        prop Xsp +
3692        notprop Xwd
3693        Ket
3694        End
3695------------------------------------------------------------------
3696
3697/\w+\p{Po} \w+\p{Pc} \W+\p{Po} \W+\p{Pc} \w+\P{Po} \w+\P{Pc}/Bx,ucp
3698------------------------------------------------------------------
3699        Bra
3700        prop Xwd +
3701        prop Po
3702        prop Xwd ++
3703        prop Pc
3704        notprop Xwd +
3705        prop Po
3706        notprop Xwd +
3707        prop Pc
3708        prop Xwd +
3709        notprop Po
3710        prop Xwd +
3711        notprop Pc
3712        Ket
3713        End
3714------------------------------------------------------------------
3715
3716/\p{Nl}+\p{Xan} \P{Nl}+\p{Xan} \p{Nl}+\P{Xan} \P{Nl}+\P{Xan}/Bx,ucp
3717------------------------------------------------------------------
3718        Bra
3719        prop Nl +
3720        prop Xan
3721        notprop Nl +
3722        prop Xan
3723        prop Nl ++
3724        notprop Xan
3725        notprop Nl +
3726        notprop Xan
3727        Ket
3728        End
3729------------------------------------------------------------------
3730
3731/\p{Xan}+\p{Nl} \P{Xan}+\p{Nl} \p{Xan}+\P{Nl} \P{Xan}+\P{Nl}/Bx,ucp
3732------------------------------------------------------------------
3733        Bra
3734        prop Xan +
3735        prop Nl
3736        notprop Xan ++
3737        prop Nl
3738        prop Xan +
3739        notprop Nl
3740        notprop Xan +
3741        notprop Nl
3742        Ket
3743        End
3744------------------------------------------------------------------
3745
3746/\p{Xan}+\p{Nd} \P{Xan}+\p{Nd} \p{Xan}+\P{Nd} \P{Xan}+\P{Nd}/Bx,ucp
3747------------------------------------------------------------------
3748        Bra
3749        prop Xan +
3750        prop Nd
3751        notprop Xan ++
3752        prop Nd
3753        prop Xan +
3754        notprop Nd
3755        notprop Xan +
3756        notprop Nd
3757        Ket
3758        End
3759------------------------------------------------------------------
3760
3761# End auto-possessification tests
3762
3763/\w+/B,utf,ucp,auto_callout
3764------------------------------------------------------------------
3765        Bra
3766        Callout 255 0 3
3767        prop Xwd ++
3768        Callout 255 3 0
3769        Ket
3770        End
3771------------------------------------------------------------------
3772    abcd
3773--->abcd
3774 +0 ^        \w+
3775 +3 ^   ^    End of pattern
3776 0: abcd
3777
3778/[\p{N}]?+/B,no_auto_possess
3779------------------------------------------------------------------
3780        Bra
3781        [\p{N}]?+
3782        Ket
3783        End
3784------------------------------------------------------------------
3785
3786/[\p{L}ab]{2,3}+/B,no_auto_possess
3787------------------------------------------------------------------
3788        Bra
3789        [ab\p{L}]{2,3}+
3790        Ket
3791        End
3792------------------------------------------------------------------
3793
3794/\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
3795------------------------------------------------------------------
3796        Bra
3797        \D+
3798        extuni
3799        \d+
3800        extuni
3801        \S+
3802        extuni
3803        \s+
3804        extuni
3805        \W+
3806        extuni
3807        \w+
3808        extuni
3809        \R+
3810        extuni
3811        \H+
3812        extuni
3813        \h+
3814        extuni
3815        \V+
3816        extuni
3817        \v+
3818        extuni
3819        a+
3820        extuni
3821        \x0a+
3822        extuni
3823        Any+
3824        extuni
3825        Ket
3826        End
3827------------------------------------------------------------------
3828
3829/.+\X/Bsx
3830------------------------------------------------------------------
3831        Bra
3832        AllAny+
3833        extuni
3834        Ket
3835        End
3836------------------------------------------------------------------
3837
3838/\X+$/Bmx
3839------------------------------------------------------------------
3840        Bra
3841        extuni+
3842     /m $
3843        Ket
3844        End
3845------------------------------------------------------------------
3846
3847/\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
3848------------------------------------------------------------------
3849        Bra
3850        extuni+
3851        \D
3852        extuni+
3853        \d
3854        extuni+
3855        \S
3856        extuni+
3857        \s
3858        extuni+
3859        \W
3860        extuni+
3861        \w
3862        extuni+
3863        Any
3864        extuni+
3865        \R
3866        extuni+
3867        \H
3868        extuni+
3869        \h
3870        extuni+
3871        \V
3872        extuni+
3873        \v
3874        extuni+
3875        extuni
3876        extuni+
3877        \Z
3878        extuni++
3879        \z
3880        extuni+
3881        $
3882        Ket
3883        End
3884------------------------------------------------------------------
3885
3886/\d+\s{0,5}=\s*\S?=\w{0,4}\W*/B,utf,ucp
3887------------------------------------------------------------------
3888        Bra
3889        prop Nd ++
3890        prop Xsp {0,5}+
3891        =
3892        prop Xsp *+
3893        notprop Xsp ?
3894        =
3895        prop Xwd {0,4}+
3896        notprop Xwd *+
3897        Ket
3898        End
3899------------------------------------------------------------------
3900
3901/[RST]+/Bi,utf,ucp
3902------------------------------------------------------------------
3903        Bra
3904        [R-Tr-t\x{17f}]++
3905        Ket
3906        End
3907------------------------------------------------------------------
3908
3909/[R-T]+/Bi,utf,ucp
3910------------------------------------------------------------------
3911        Bra
3912        [R-Tr-t\x{17f}]++
3913        Ket
3914        End
3915------------------------------------------------------------------
3916
3917/[Q-U]+/Bi,utf,ucp
3918------------------------------------------------------------------
3919        Bra
3920        [Q-Uq-u\x{17f}]++
3921        Ket
3922        End
3923------------------------------------------------------------------
3924
3925/^s?c/Iim,utf
3926Capture group count = 0
3927Options: caseless multiline utf
3928First code unit at start or follows newline
3929Last code unit = 'c' (caseless)
3930Subject length lower bound = 1
3931    scat
3932 0: sc
3933
3934/\X?abc/utf,no_start_optimize
3935    \xff\x7f\x00\x00\x03\x00\x41\xcc\x80\x41\x{300}\x61\x62\x63\x00\=no_utf_check,offset=06
3936 0: A\x{300}abc
3937
3938/\x{100}\x{200}\K\x{300}/utf,startchar
3939    \x{100}\x{200}\x{300}
3940 0: \x{100}\x{200}\x{300}
3941    ^^^^^^^^^^^^^^
3942
3943# Test UTF characters in a substitution
3944
3945bc/utf,replace=XሴZ
3946    123ábc123
3947 1: 123X\x{1234}Z123
3948
3949/(?<=abc)(|def)/g,utf,replace=<$0>
3950    123abcáyzabcdef789abcሴqr
3951 4: 123abc<>\x{e1}yzabc<><def>789abc<>\x{1234}qr
3952
3953/[A-`]/iB,utf
3954------------------------------------------------------------------
3955        Bra
3956        [A-z\x{212a}\x{17f}]
3957        Ket
3958        End
3959------------------------------------------------------------------
3960    abcdefghijklmno
3961 0: a
3962
3963/(?<=\K\x{17f})/g,utf,aftertext
3964    \x{17f}\x{17f}\x{17f}\x{17f}\x{17f}
3965 0: \x{17f}
3966 0+ \x{17f}\x{17f}\x{17f}\x{17f}
3967 0: \x{17f}
3968 0+ \x{17f}\x{17f}\x{17f}
3969 0: \x{17f}
3970 0+ \x{17f}\x{17f}
3971 0: \x{17f}
3972 0+ \x{17f}
3973 0: \x{17f}
3974 0+
3975
3976/(?<=\K\x{17f})/altglobal,utf,aftertext
3977    \x{17f}\x{17f}\x{17f}\x{17f}\x{17f}
3978 0: \x{17f}
3979 0+ \x{17f}\x{17f}\x{17f}\x{17f}
3980 0: \x{17f}
3981 0+ \x{17f}\x{17f}\x{17f}
3982 0: \x{17f}
3983 0+ \x{17f}\x{17f}
3984 0: \x{17f}
3985 0+ \x{17f}
3986 0: \x{17f}
3987 0+
3988
3989"\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"
3990Failed: error 122 at offset 1227: unmatched closing parenthesis
3991
3992/$(&.+[\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'})*?/
3993
3994"(*UTF)(*UCP)(.UTF).+X(\V+;\^(\D|)!999}(?(?C{7(?C')\H*\S*/^\x5\xa\\xd3\x85n?(;\D*(?m).[^mH+((*UCP)(*U:F)})(?!^)(?'"
3995Failed: error 162 at offset 113: subpattern name expected
3996
3997/[\pS#moq]/
3998    =
3999 0: =
4000
4001/(*:a\x{12345}b\t(d\)c)xxx/utf,alt_verbnames,mark
4002    cxxxz
4003 0: xxx
4004MK: a\x{12345}b\x{09}(d)c
4005
4006/abcd/utf,replace=x\x{824}y\o{3333}z(\Q12\$34$$\x34\E5$$),substitute_extended
4007    abcd
4008 1: x\x{824}y\x{6db}z(12\$34$$\x345$)
4009
4010/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
4011    a\x{e0}\x{101}\x{c0}\x{102}
4012 1: a\x{c0}\x{101}\x{c0}\x{100}\x{e0}\x{101}\x{e0}\x{102}\x{e0}\x{103}ab\x{c0}\x{100}\x{f0}\x{161}Done
4013
4014/((?<digit>\d)|(?<letter>\p{L}))/g,substitute_extended,replace=<${digit:+digit; :not digit; }${letter:+letter:not a letter}>
4015    ab12cde
4016 7: <not digit; letter><not digit; letter><digit; not a letter><digit; not a letter><not digit; letter><not digit; letter><not digit; letter>
4017
4018/(*UCP)(*UTF)[[:>:]]X/B
4019------------------------------------------------------------------
4020        Bra
4021        \b
4022        Assert back
4023        Reverse
4024        prop Xwd
4025        Ket
4026        X
4027        Ket
4028        End
4029------------------------------------------------------------------
4030
4031/abc/utf,replace=xyz
4032    abc\=zero_terminate
4033 1: xyz
4034
4035/a[[:punct:]b]/ucp,bincode
4036------------------------------------------------------------------
4037        Bra
4038        a
4039        [b[:punct:]]
4040        Ket
4041        End
4042------------------------------------------------------------------
4043
4044/a[[:punct:]b]/utf,ucp,bincode
4045------------------------------------------------------------------
4046        Bra
4047        a
4048        [b[:punct:]]
4049        Ket
4050        End
4051------------------------------------------------------------------
4052
4053/a[b[:punct:]]/utf,ucp,bincode
4054------------------------------------------------------------------
4055        Bra
4056        a
4057        [b[:punct:]]
4058        Ket
4059        End
4060------------------------------------------------------------------
4061
4062/[[:^ascii:]]/utf,ucp,bincode
4063------------------------------------------------------------------
4064        Bra
4065        [\x80-\xff] (neg)
4066        Ket
4067        End
4068------------------------------------------------------------------
4069
4070/[[:^ascii:]\w]/utf,ucp,bincode
4071------------------------------------------------------------------
4072        Bra
4073        [\x80-\xff\p{Xwd}\x{100}-\x{10ffff}]
4074        Ket
4075        End
4076------------------------------------------------------------------
4077
4078/[\w[:^ascii:]]/utf,ucp,bincode
4079------------------------------------------------------------------
4080        Bra
4081        [\x80-\xff\p{Xwd}\x{100}-\x{10ffff}]
4082        Ket
4083        End
4084------------------------------------------------------------------
4085
4086/[^[:ascii:]\W]/utf,ucp,bincode
4087------------------------------------------------------------------
4088        Bra
4089        [^\x00-\x7f\P{Xwd}]
4090        Ket
4091        End
4092------------------------------------------------------------------
4093    \x{de}
4094 0: \x{de}
4095    \x{200}
4096 0: \x{200}
4097\= Expect no match
4098    \x{300}
4099No match
4100    \x{37e}
4101No match
4102
4103/[[:^ascii:]a]/utf,ucp,bincode
4104------------------------------------------------------------------
4105        Bra
4106        [a\x80-\xff] (neg)
4107        Ket
4108        End
4109------------------------------------------------------------------
4110
4111/L(?#(|++<!(2)?/B,utf,no_auto_possess,auto_callout
4112------------------------------------------------------------------
4113        Bra
4114        Callout 255 0 14
4115        L?
4116        Callout 255 14 0
4117        Ket
4118        End
4119------------------------------------------------------------------
4120
4121/L(?#(|++<!(2)?/B,utf,ucp,auto_callout
4122------------------------------------------------------------------
4123        Bra
4124        Callout 255 0 14
4125        L?+
4126        Callout 255 14 0
4127        Ket
4128        End
4129------------------------------------------------------------------
4130
4131/(*UTF)C\x09((?<!'(?x)!*H? #\xcc\x9a[^$]/
4132Failed: error 114 at offset 39: missing closing parenthesis
4133
4134/[\D]/utf
4135    \x{1d7cf}
4136 0: \x{1d7cf}
4137
4138/[\D\P{Nd}]/utf
4139    \x{1d7cf}
4140 0: \x{1d7cf}
4141
4142/[^\D]/utf
4143    a9b
4144 0: 9
4145\= Expect no match
4146    \x{1d7cf}
4147No match
4148
4149/[^\D\P{Nd}]/utf
4150    a9b
4151 0: 9
4152    \x{1d7cf}
4153 0: \x{1d7cf}
4154\= Expect no match
4155    \x{10000}
4156No match
4157
4158# Hex uses pattern length, not zero-terminated. This tests for overrunning
4159# the given length of a pattern.
4160
4161/'(*UTF)'/hex
4162
4163/'#('/hex,extended,utf
4164
4165/a(?<=A\XB)/utf
4166Failed: error 125 at offset 1: lookbehind assertion is not fixed length
4167
4168/ab(?<=A\RB)/utf
4169Failed: error 125 at offset 2: lookbehind assertion is not fixed length
4170
4171/../utf,auto_callout
4172    \n\x{123}\x{123}\x{123}\x{123}
4173--->\x{0a}\x{123}\x{123}\x{123}\x{123}
4174 +0 ^                                      .
4175 +0       ^                                .
4176 +1       ^      ^                         .
4177 +2       ^             ^                  End of pattern
4178 0: \x{123}\x{123}
4179
4180# This tests processing wide characters in extended mode.
4181
4182/XȀ/x,utf
4183
4184# These three test a bug fix that was not clearing up after a locale setting
4185# when the test or a subsequent one matched a wide character.
4186
4187//locale=C
4188
4189/[\P{Yi}]/utf
4190\x{2f000}
4191 0: \x{2f000}
4192
4193/[\P{Yi}]/utf,locale=C
4194\x{2f000}
4195 0: \x{2f000}
4196
4197/^(?<!(?=��))/B,utf
4198------------------------------------------------------------------
4199        Bra
4200        ^
4201        Assert back not
4202        Assert
4203        \x{10385c}
4204        Ket
4205        Ket
4206        Ket
4207        End
4208------------------------------------------------------------------
4209
4210# Horizontal and vertical space lists ignore caseless
4211
4212/[\HH]/Bi,utf
4213------------------------------------------------------------------
4214        Bra
4215        [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff\x{100}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{10ffff}]
4216        Ket
4217        End
4218------------------------------------------------------------------
4219
4220/[^\HH]/Bi,utf
4221------------------------------------------------------------------
4222        Bra
4223        [^\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff\x{100}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{10ffff}]
4224        Ket
4225        End
4226------------------------------------------------------------------
4227
4228//g,utf
4229    \=zero_terminate
4230 0:
4231
4232/^(?1)\p{Nd}{3}(a)/
4233    a123a
4234 0: a123a
4235 1: a
4236
4237/\p{Nd}{0,3}[\pL](*:abc)(?C1)xxx/callout_info
4238Callout 1  x
4239
4240# ---------------------------------------------------------------------------
4241
4242# A bunch of tests that hit lines of code that others do not (at least when
4243# these were created).
4244
4245/^[^a]{3,}?x/i,utf,no_start_optimize,no_auto_possess
4246\= Expect no match
4247    bbb
4248No match
4249    cc
4250No match
4251
4252/^[ac]{3,}?x/i,utf,no_start_optimize,no_auto_possess
4253\= Expect no match
4254    aaa\x{100}
4255No match
4256
4257/^X\X/no_start_optimize,no_auto_possess
4258\= Expect no match
4259    X
4260No match
4261
4262/^X\p{L&}+?/no_start_optimize,no_auto_possess
4263\= Expect no match
4264    X
4265No match
4266
4267/^X\p{L}+?/no_start_optimize,no_auto_possess
4268\= Expect no match
4269    X
4270No match
4271
4272/^X\p{Lu}+?/no_start_optimize,no_auto_possess
4273\= Expect no match
4274    X
4275No match
4276
4277/^X\p{Arabic}+?/no_start_optimize,no_auto_possess
4278\= Expect no match
4279    X
4280No match
4281
4282/^X\p{Xan}+?/ucp,no_start_optimize,no_auto_possess
4283\= Expect no match
4284    X
4285No match
4286
4287/^X\s+?/ucp,no_start_optimize,no_auto_possess
4288\= Expect no match
4289    X
4290No match
4291    XX
4292No match
4293
4294/^X\S+?/ucp,no_start_optimize,no_auto_possess
4295    XX
4296 0: XX
4297\= Expect no match
4298    X
4299No match
4300
4301/^X\w+?/ucp,no_start_optimize,no_auto_possess
4302\= Expect no match
4303    X
4304No match
4305
4306/^X[^\x{b5}]+?/i,utf,no_start_optimize,no_auto_possess
4307\= Expect no match
4308    X
4309No match
4310
4311/^X[\x{b5}]+?/i,utf,no_start_optimize,no_auto_possess
4312\= Expect no match
4313    X
4314No match
4315
4316/^X\p{Xuc}+?/utf,no_start_optimize,no_auto_possess
4317\= Expect no match
4318    X
4319No match
4320
4321/^X.+?Z/s,utf,no_start_optimize,no_auto_possess
4322\= Expect no match
4323    X
4324No match
4325
4326/^X\R+?/utf,no_start_optimize,no_auto_possess
4327\= Expect no match
4328    X
4329No match
4330
4331/^X\H+?/utf,no_start_optimize,no_auto_possess
4332\= Expect no match
4333    X
4334No match
4335
4336/^X\V+?/utf,no_start_optimize,no_auto_possess
4337\= Expect no match
4338    X
4339No match
4340
4341/^X\s+?/utf,no_start_optimize,no_auto_possess
4342\= Expect no match
4343    X
4344No match
4345    XX
4346No match
4347
4348/^X\S+?/utf,no_start_optimize,no_auto_possess
4349\= Expect no match
4350    X
4351No match
4352
4353/^X\p{Any}{1,3}?Z/s,no_start_optimize,no_auto_possess
4354    XYYYZ
4355 0: XYYYZ
4356\= Expect no match
4357    XY
4358No match
4359    XYY
4360No match
4361    XYYY
4362No match
4363    XYYYYZ
4364No match
4365
4366/^X\p{L&}{1,3}?Z/s,no_start_optimize,no_auto_possess
4367\= Expect no match
4368    XY
4369No match
4370    XY!
4371No match
4372
4373/^X\p{L}{1,3}?Z/s,no_start_optimize,no_auto_possess
4374\= Expect no match
4375    XY
4376No match
4377    XY!
4378No match
4379
4380/^X\p{Lu}{1,3}?Z/s,no_start_optimize,no_auto_possess
4381\= Expect no match
4382    XY
4383No match
4384    XY!
4385No match
4386
4387/^X\P{Han}{1,3}?Z/s,utf,no_start_optimize,no_auto_possess
4388\= Expect no match
4389    XY
4390No match
4391    XY!
4392No match
4393    XY\x{2f00}!
4394No match
4395
4396/^X\p{Xan}{1,3}?Z/s,no_start_optimize,no_auto_possess
4397\= Expect no match
4398    XY
4399No match
4400    XY!
4401No match
4402
4403/^X\p{Xsp}{1,3}?Z/s,no_start_optimize,no_auto_possess
4404\= Expect no match
4405    X\n
4406No match
4407    X\n!
4408No match
4409    X\n\n!
4410No match
4411
4412/^X\P{Xsp}{1,3}?Z/s,no_start_optimize,no_auto_possess
4413\= Expect no match
4414    XYY\n
4415No match
4416
4417/^X\p{Xwd}{1,3}?Z/s,no_start_optimize,no_auto_possess
4418\= Expect no match
4419    XY
4420No match
4421    XY!
4422No match
4423    XYY!
4424No match
4425
4426/^X\x{b5}+?Z/i,utf,no_start_optimize,no_auto_possess
4427\= Expect no match
4428    X
4429No match
4430    X\x{b5}
4431No match
4432    X\x{b5}\x{b5}Y
4433No match
4434
4435/^X\p{Xuc}+?Z/utf,no_start_optimize,no_auto_possess
4436\= Expect no match
4437    X
4438No match
4439    X$
4440No match
4441    X@@Y
4442No match
4443
4444/(*CRLF)^X.+?Z/utf,no_start_optimize,no_auto_possess
4445\= Expect partial match
4446    XYY\r\=ph
4447Partial match: XYY\x{0d}
4448\= Expect no match
4449    X
4450No match
4451
4452/^X.+?Z/s,utf,no_start_optimize,no_auto_possess
4453\= Expect no match
4454    X
4455No match
4456    XYY
4457No match
4458
4459/^X\R+?Z/utf,no_start_optimize,no_auto_possess
4460\= Expect no match
4461    X\nX
4462No match
4463    X\n\rX
4464No match
4465    X\n\r\nX
4466No match
4467    X\n\n
4468No match
4469    X\n\x{0c}
4470No match
4471
4472/(*BSR_ANYCRLF)^X\R+?Z/utf,no_start_optimize,no_auto_possess
4473\= Expect no match
4474    X\nX
4475No match
4476    X\n\rX
4477No match
4478    X\n\r\nX
4479No match
4480    X\n\n
4481No match
4482    X\n\x{0c}
4483No match
4484
4485/^X\H+?Z/utf,no_start_optimize,no_auto_possess
4486\= Expect no match
4487    XY\t
4488No match
4489    XYY
4490No match
4491
4492/^X\h+?Z/utf,no_start_optimize,no_auto_possess
4493\= Expect no match
4494    X\t\t
4495No match
4496    X\tY
4497No match
4498
4499/^X\V+?Z/utf,no_start_optimize,no_auto_possess
4500\= Expect no match
4501    XY\n
4502No match
4503    XYY
4504No match
4505
4506/^X\v+?Z/utf,no_start_optimize,no_auto_possess
4507\= Expect no match
4508    X\n\n
4509No match
4510    X\nY
4511No match
4512
4513/^X\D+?Z/utf,no_start_optimize,no_auto_possess
4514\= Expect no match
4515    XY9
4516No match
4517    XYY
4518No match
4519
4520/^X\d+?Z/utf,no_start_optimize,no_auto_possess
4521\= Expect no match
4522    X99
4523No match
4524    X9Y
4525No match
4526
4527/^X\S+?Z/utf,no_start_optimize,no_auto_possess
4528\= Expect no match
4529    XY\n
4530No match
4531    XYY
4532No match
4533
4534/^X\s+?Z/utf,no_start_optimize,no_auto_possess
4535\= Expect no match
4536    X\n\n
4537No match
4538    X\nY
4539No match
4540
4541/^X\W+?Z/utf,no_start_optimize,no_auto_possess
4542\= Expect no match
4543    X.A
4544No match
4545    X++
4546No match
4547
4548/^X\p{L&}{1,3}Z/no_start_optimize,no_auto_possess
4549\= Expect no match
4550    XY
4551No match
4552    XY!
4553No match
4554
4555/^X\p{L}{1,3}Z/no_start_optimize,no_auto_possess
4556\= Expect no match
4557    XY
4558No match
4559
4560/^X\p{Xan}{1,3}Z/no_start_optimize,no_auto_possess
4561\= Expect no match
4562    XY
4563No match
4564
4565/^X\P{Xsp}{1,3}Z/no_start_optimize,no_auto_possess
4566\= Expect no match
4567    XYY
4568No match
4569
4570/^X\p{Xuc}+Z/utf,no_start_optimize,no_auto_possess
4571\= Expect no match
4572    X$
4573No match
4574
4575# ----------------------------------------------------------------------
4576# These test the dangerous PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL option.
4577
4578/\x{d800}/B,utf,bad_escape_is_literal
4579------------------------------------------------------------------
4580        Bra
4581        x{d800}
4582        Ket
4583        End
4584------------------------------------------------------------------
4585
4586/\ud800/B,utf,alt_bsux,bad_escape_is_literal
4587------------------------------------------------------------------
4588        Bra
4589        ud800
4590        Ket
4591        End
4592------------------------------------------------------------------
4593
4594# ----------------------------------------------------------------------
4595
4596/Aሴ+B/literal,utf,no_utf_check
4597    Aሴ+B
4598 0: A\x{1234}+B
4599
4600# These are here because I upgraded to Unicode 10.0.0 before Perl did, so it
4601# doesn't recognize all these scripts. In time these three tests can be moved
4602# to test 4.
4603
4604/^(\p{Adlam}+)(\p{Bhaiksuki}+)(\p{Marchen}+)(\p{Newa}+)(\p{Osage}+)
4605  (\p{Tangut}+)(\p{Masaram_Gondi}+)(\p{Nushu}+)(\p{Soyombo}+)
4606  (\p{Zanabazar_Square}+)/x,utf
4607    \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}
4608 0: \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}
4609 1: \x{1e900}\x{1e924}\x{1e953}
4610 2: \x{11c00}\x{11c2d}\x{11c3e}
4611 3: \x{11c70}\x{11c77}\x{11cab}
4612 4: \x{11400}\x{1142f}\x{11455}
4613 5: \x{104b0}\x{104d8}\x{104fb}
4614 6: \x{16fe0}\x{18800}\x{18af2}
4615 7: \x{11d00}\x{11d3a}\x{11d59}
4616 8: \x{16fe1}\x{1b170}\x{1b2fb}
4617 9: \x{11a50}\x{11a58}\x{11aa2}
461810: \x{11a00}\x{11a07}\x{11a47}
4619
4620/^\x{1E900}\x{104B0}/i,utf
4621    \x{1E900}\x{104B0}
4622 0: \x{1e900}\x{104b0}
4623    \x{1E922}\x{104D8}
4624 0: \x{1e922}\x{104d8}
4625
4626/^(?:(\X)(?C))+$/utf
4627    \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
4628Callout 0: last capture = 1
4629 1: \x{1e900}
4630Callout 0: last capture = 1
4631 1: \x{1e924}
4632Callout 0: last capture = 1
4633 1: \x{1e953}
4634Callout 0: last capture = 1
4635 1: \x{11c00}
4636Callout 0: last capture = 1
4637 1: \x{11c2d}\x{11c3e}
4638Callout 0: last capture = 1
4639 1: \x{11c70}
4640Callout 0: last capture = 1
4641 1: \x{11c77}\x{11cab}
4642Callout 0: last capture = 1
4643 1: \x{11400}
4644Callout 0: last capture = 1
4645 1: \x{1142f}
4646Callout 0: last capture = 1
4647 1: \x{11455}
4648Callout 0: last capture = 1
4649 1: \x{104b0}
4650Callout 0: last capture = 1
4651 1: \x{104d8}
4652Callout 0: last capture = 1
4653 1: \x{104fb}
4654Callout 0: last capture = 1
4655 1: \x{16fe0}
4656Callout 0: last capture = 1
4657 1: \x{18800}
4658Callout 0: last capture = 1
4659 1: \x{18af2}
4660Callout 0: last capture = 1
4661 1: \x{11d00}\x{11d3a}
4662Callout 0: last capture = 1
4663 1: \x{11d59}
4664Callout 0: last capture = 1
4665 1: \x{16fe1}
4666Callout 0: last capture = 1
4667 1: \x{1b170}
4668Callout 0: last capture = 1
4669 1: \x{1b2fb}
4670Callout 0: last capture = 1
4671 1: \x{11a50}\x{11a58}
4672Callout 0: last capture = 1
4673 1: \x{11aa2}
4674Callout 0: last capture = 1
4675 1: \x{11a00}\x{11a07}\x{11a47}
4676 0: \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}
4677 1: \x{11a00}\x{11a07}\x{11a47}
4678
4679# Similarly for Unicode 11.0.0
4680
4681/^(\p{Dogra}+)(\p{Gunjala_Gondi}+)(\p{Hanifi_Rohingya}+)(\p{Makasar}+)
4682  (\p{Medefaidrin}+)(\p{Old_Sogdian}+)(\p{Sogdian}+)/x,utf
4683    \x{11800}\x{11da9}\x{10d27}\x{11ee0}\x{16e48}\x{10f27}\x{10f30}
4684 0: \x{11800}\x{11da9}\x{10d27}\x{11ee0}\x{16e48}\x{10f27}\x{10f30}
4685 1: \x{11800}
4686 2: \x{11da9}
4687 3: \x{10d27}
4688 4: \x{11ee0}
4689 5: \x{16e48}
4690 6: \x{10f27}
4691 7: \x{10f30}
4692
4693# These two are here because of differences from Perl.
4694
4695/^\X/utf
4696    A\x{200d}B                     A ZWJ
4697 0: A\x{200d}
4698    \x{261d}\x{261d}B              Extended_Pictographic Extended_Pictographic
4699 0: \x{261d}\x{261d}
4700    \x{261D}\x{1F3FB}B             Extended_Pictographic Extend
4701 0: \x{261d}\x{1f3fb}
4702    \x{1F1E6}\x{1F1E7}B            RegionalIndicator RegionalIndicator
4703 0: \x{1f1e6}\x{1f1e7}
4704    \x{261D}\x{1F3FB}\x{261d}B     Extended_Pictographic Extend E-P
4705 0: \x{261d}\x{1f3fb}\x{261d}
4706    \x{261D}\x{1F3FB}\x{200d}\x{261d}B     Extended_Pictographic Extend ZWJ E-P
4707 0: \x{261d}\x{1f3fb}\x{200d}\x{261d}
4708
4709# Regional indicators
4710
4711/^(\X)(\X)/utf,aftertext
4712    \x{1F1E6}\x{1F1E7}\x{1F1E7}B
4713 0: \x{1f1e6}\x{1f1e7}\x{1f1e7}
4714 0+ B
4715 1: \x{1f1e6}\x{1f1e7}
4716 2: \x{1f1e7}
4717    \x{1F1E6}\x{1F1E7}\x{1F1E7}\x{1F1E6}B
4718 0: \x{1f1e6}\x{1f1e7}\x{1f1e7}\x{1f1e6}
4719 0+ B
4720 1: \x{1f1e6}\x{1f1e7}
4721 2: \x{1f1e7}\x{1f1e6}
4722
4723# More differences from Perl
4724
4725/^[\p{Arabic}]/utf
4726\= Expect no match
4727    \x{650}
4728No match
4729    \x{651}
4730No match
4731    \x{652}
4732No match
4733    \x{653}
4734No match
4735    \x{654}
4736No match
4737    \x{655}
4738No match
4739
4740/^\p{Common}/utf
4741    \x{60c}
4742 0: \x{60c}
4743    \x{61f}
4744 0: \x{61f}
4745    \x{964}
4746 0: \x{964}
4747    \x{965}
4748 0: \x{965}
4749
4750/^\p{Inherited}/utf
4751    \x{64b}
4752 0: \x{64b}
4753    \x{654}
4754 0: \x{654}
4755    \x{655}
4756 0: \x{655}
4757    \x{1D1AA}
4758 0: \x{1d1aa}
4759
4760/\N{U+}/
4761Failed: error 193 at offset 2: \N{U+dddd} is supported only in Unicode (UTF) mode
4762
4763/\N{U+}/utf
4764Failed: error 178 at offset 5: digits missing in \x{} or \o{} or \N{U+}
4765
4766/\N{U}/
4767Failed: error 137 at offset 2: PCRE2 does not support \F, \L, \l, \N{name}, \U, or \u
4768
4769# This tests the non-UTF Unicode NEL pattern whitespace character, only
4770# recognized by PCRE2 with /x when there is Unicode support.
4771
4772/A
4773
4774�B/x
4775    AB
4776 0: AB
4777
4778# This tests Unicode Pattern White Space characters in verb names when they
4779# are being processed with PCRE2_EXTENDED. Note: there are UTF-8 characters
4780# with code points greater than 255 between A, B, and C in the pattern.
4781
4782/(*: A‎B
C)abc/x,utf,mark,alt_verbnames
4783    abc
4784 0: abc
4785MK: ABC
4786
4787# Script run tests: auto-possessification
4788
4789/^(*sr:.*)/B,utf
4790------------------------------------------------------------------
4791        Bra
4792        ^
4793        Script run
4794        Any*
4795        Ket
4796        Ket
4797        End
4798------------------------------------------------------------------
4799    paypаl.com   A classic example of why script run checks are a good thing
4800 0: payp
4801
4802/^(*sr:.*(*ACCEPT))/utf
4803    paypаl.com   But *ACCEPT breaks things
4804 0: payp\x{430}l.com   But *ACCEPT breaks things
4805
4806/^(*sr:\x{2e80}*)/B,utf
4807------------------------------------------------------------------
4808        Bra
4809        ^
4810        Script run
4811        \x{2e80}*+
4812        Ket
4813        Ket
4814        End
4815------------------------------------------------------------------
4816
4817/^(*sr:\x{2e80}*)\x{2e80}/B,utf
4818------------------------------------------------------------------
4819        Bra
4820        ^
4821        Script run
4822        \x{2e80}*
4823        Ket
4824        \x{2e80}
4825        Ket
4826        End
4827------------------------------------------------------------------
4828
4829/(?<!)(*sr:)/B
4830------------------------------------------------------------------
4831        Bra
4832        Assert back not
4833        Ket
4834        Script run
4835        Ket
4836        Ket
4837        End
4838------------------------------------------------------------------
4839
4840/(?<=abc(?=X(*sr:BXY)CCC)XBXYCCC)./B
4841------------------------------------------------------------------
4842        Bra
4843        Assert back
4844        Reverse
4845        abc
4846        Assert
4847        X
4848        Script run
4849        BXY
4850        Ket
4851        CCC
4852        Ket
4853        XBXYCCC
4854        Ket
4855        Any
4856        Ket
4857        End
4858------------------------------------------------------------------
4859   abcXBXYCCC!
4860 0: !
4861
4862# Some script run patterns are broken in Perl 5.28.0. These can be moved into
4863# test 4 when a mended version of Perl is released.
4864
4865/^(*sr:.{4})/utf
4866    \x{0980}12\x{0993}     Bengali Common-digits Bengali
4867 0: \x{980}12\x{993}
4868    \x{0780}12\x{07b1}     Thaana Common-digits Thaana
4869 0: \x{780}12\x{7b1}
4870    \x{0e01}12\x{0e5b}     Thai Common-digits Thai
4871 0: \x{e01}12\x{e5b}
4872    \x{1780}12\x{19ff}     Khmer Common-digits Khmer
4873 0: \x{1780}12\x{19ff}
4874    \x{0904}12\x{0939}     Devanagari Common-digits Devanagari
4875 0: \x{904}12\x{939}
4876    A\x{ff10}\x{ff19}B     Latin Common-notascii-digits Latin
4877 0: A\x{ff10}\x{ff19}B
4878    A\x{1d7ce}\x{1d7cf}B   Latin fancy-common-digits Latin
4879 0: A\x{1d7ce}\x{1d7cf}B
4880
4881# These ones involve non-ASCII but nevertheless Common digits. As of October
4882# 2018 even blead Perl wasn't handling all of these - but is going to.
4883
4884/^(*sr:.{4})/utf
4885    A\x{ff10}\x{ff19}B     Latin Common-notascii-digits Latin
4886 0: A\x{ff10}\x{ff19}B
4887    \x{ff10}\x{ff19}..     Common-notascii-digits Common Common
4888 0: \x{ff10}\x{ff19}..
4889    A\x{ff10}BC            Latin Common-notascii-digit Latin Latin
4890 0: A\x{ff10}BC
4891    A\x{1d7ce}\x{1d7cf}B   Latin fancy-common-digits Latin
4892 0: A\x{1d7ce}\x{1d7cf}B
4893    \x{1d7ce}\x{1d7cf},,   fancy-common-digits Common Common
4894 0: \x{1d7ce}\x{1d7cf},,
4895    A\x{1d7ce}BC           Latin fancy-common-digit Latin Latin
4896 0: A\x{1d7ce}BC
4897
4898# Some Unicode 12.1.0 new script characters
4899
4900/\p{Elymaic}\p{Nandinagari}\p{Nyiakeng_Puachue_Hmong}\p{Wancho}/utf
4901    \x{10fe5}\x{119AC}\x{1E10E}\x{1E2D1}
4902 0: \x{10fe5}\x{119ac}\x{1e10e}\x{1e2d1}
4903
4904# Some Unicode 13.0.0 new script characters
4905
4906/\p{Chorasmian}\p{Dives_Akuru}\p{Khitan_Small_Script}\p{Yezidi}/utf
4907    \x{10FB0}\x{11900}\x{18B00}\x{10E80}
4908 0: \x{10fb0}\x{11900}\x{18b00}\x{10e80}
4909
4910# -------
4911
4912# Test reference and errors in non-ASCII characters in group names
4913
4914/(?'��ABC'...)/I,utf
4915Capture group count = 1
4916Named capture groups:
4917  ��ABC   1
4918Options: utf
4919Subject length lower bound = 3
4920   abcde\=copy=��ABC
4921 0: abc
4922 1: abc
4923  C abc (3) ��ABC (group 1)
4924
4925# Bad ones
4926
4927/(?'AB၌C'...)\g{AB၌C}/utf
4928Failed: error 142 at offset 5: syntax error in subpattern name (missing terminator?)
4929
4930/(?'٠ABC'...)/utf
4931Failed: error 144 at offset 3: subpattern name must start with a non-digit
4932
4933/(?'²ABC'...)/utf
4934Failed: error 162 at offset 3: subpattern name expected
4935
4936/(?'X²ABC'...)/utf
4937Failed: error 142 at offset 4: syntax error in subpattern name (missing terminator?)
4938
4939# -------
4940
4941/\p{Any}*xyz/I
4942Capture group count = 0
4943Compile options: <none>
4944Overall options: anchored
4945Last code unit = 'z'
4946Subject length lower bound = 3
4947
4948/(|�)7/caseless,ucp
4949
4950/(\xc1)\1/i,ucp
4951    \xc1\xe1\=no_jit
4952 0: \xc1\xe1
4953 1: \xc1
4954
4955# End of testinput5
4956