# This set of tests checks the API, internals, and non-Perl stuff for UTF
# support, including Unicode properties. However, tests that give different
# results in 8-bit, 16-bit, and 32-bit modes are excluded (see tests 10 and
# 12).

#newline_default lf any anycrlf

# PCRE2 and Perl disagree about the characteristics of certain Unicode
# characters. For example, 061C was considered by Perl to be Arabic, though
# it was not listed as such in the Unicode Scripts.txt file for Unicode 8.
# However, it *is* in that file for Unicode 10, but when I came to re-check,
# Perl had changed in the meantime, with 5.026 not recognizing it as Arabic.

# 2066-2069 are graphic and printable according to Perl, though they are
# actually "isolate" control characters. That is why the following tests are
# here rather than in test 4.

/^[\p{Arabic}]/utf
    \x{061c}
 0: \x{61c}

/^[[:graph:]]+$/utf,ucp
\= Expect no match
    \x{61c}
No match
    \x{2066}
No match
    \x{2067}
No match
    \x{2068}
No match
    \x{2069}
No match

/^[[:print:]]+$/utf,ucp
\= Expect no match
    \x{61c}
No match
    \x{2066}
No match
    \x{2067}
No match
    \x{2068}
No match
    \x{2069}
No match

/^[[:^graph:]]+$/utf,ucp
    \x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{61c}\x{1680}
 0: \x{09}\x{0a}\x{1d} \x{85}\x{a0}\x{61c}\x{1680}
    \x{2028}\x{2029}\x{202f}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}
 0: \x{2028}\x{2029}\x{202f}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}

/^[[:^print:]]+$/utf,ucp
    \x{09}\x{1D}\x{85}\x{61c}\x{2028}\x{2029}\x{2065}\x{2066}\x{2067}
 0: \x{09}\x{1d}\x{85}\x{61c}\x{2028}\x{2029}\x{2065}\x{2066}\x{2067}
    \x{2068}\x{2069}
 0: \x{2068}\x{2069}

# Perl does not consider U+180e to be a space character. It is true that it
# does not appear in the Unicode PropList.txt file as such, but in many other
# sources it is listed as a space, and has been treated as such in PCRE for
# a long time.

/^>[[:blank:]]*/utf,ucp
    >\x{20}\x{a0}\x{1680}\x{180e}\x{2000}\x{202f}\x{9}\x{b}\x{2028}
 0: > \x{a0}\x{1680}\x{180e}\x{2000}\x{202f}\x{09}

/^A\s+Z/utf,ucp
    A\x{85}\x{180e}\x{2005}Z
 0: A\x{85}\x{180e}\x{2005}Z

/^A[\s]+Z/utf,ucp
    A\x{2005}Z
 0: A\x{2005}Z
    A\x{85}\x{2005}Z
 0: A\x{85}\x{2005}Z

/^[[:graph:]]+$/utf,ucp
\= Expect no match
    \x{180e}
No match

/^[[:print:]]+$/utf,ucp
    \x{180e}
 0: \x{180e}

/^[[:^graph:]]+$/utf,ucp
    \x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{61c}\x{1680}\x{180e}
 0: \x{09}\x{0a}\x{1d} \x{85}\x{a0}\x{61c}\x{1680}\x{180e}

/^[[:^print:]]+$/utf,ucp
\= Expect no match
    \x{180e}
No match

# End of U+180E tests.

# ---------------------------------------------------------------------

# Use no_start_optimize because the first code unit is different in 8-bit from
# the wider modes.
/\65535/IB,utf,no_start_optimize
------------------------------------------------------------------
        Bra
        \x{1ad}35
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Options: no_start_optimize utf
Optimizations: auto_possess,dotstar_anchor

/\65536/IB,utf,no_start_optimize
------------------------------------------------------------------
        Bra
        \x{1ad}36
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Options: no_start_optimize utf
Optimizations: auto_possess,dotstar_anchor

/\x{110000}/IB,utf
Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large

/\o{4200000}/IB,utf
Failed: error 134 at offset 10: character code point value in \x{} or \o{} is too large

/\x{ffffffff}/utf
Failed: error 134 at offset 11: character code point value in \x{} or \o{} is too large

/\o{37777777777}/utf
Failed: error 134 at offset 14: character code point value in \x{} or \o{} is too large

/\x{100000000}/utf
Failed: error 134 at offset 12: character code point value in \x{} or \o{} is too large

/\o{77777777777}/utf
Failed: error 134 at offset 14: character code point value in \x{} or \o{} is too large

/\x{d800}/utf
Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)

/\o{154000}/utf
Failed: error 173 at offset 9: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)

/\x{dfff}/utf
Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)

/\o{157777}/utf
Failed: error 173 at offset 9: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)

/\x{d7ff}/utf

/\o{153777}/utf

/\x{e000}/utf

/\o{170000}/utf

/^\x{100}a\x{1234}/utf
    \x{100}a\x{1234}bcd
 0: \x{100}a\x{1234}

/\x{0041}\x{2262}\x{0391}\x{002e}/IB,utf
------------------------------------------------------------------
        Bra
        A\x{2262}\x{391}.
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Options: utf
First code unit = 'A'
Last code unit = '.'
Subject length lower bound = 4
    \x{0041}\x{2262}\x{0391}\x{002e}
 0: A\x{2262}\x{391}.

/.{3,5}X/IB,utf
------------------------------------------------------------------
        Bra
        Any{3}
        Any{0,2}
        X
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Options: utf
Last code unit = 'X'
Subject length lower bound = 4
    \x{212ab}\x{212ab}\x{212ab}\x{861}X
 0: \x{212ab}\x{212ab}\x{212ab}\x{861}X

/.{3,5}?/IB,utf
------------------------------------------------------------------
        Bra
        Any{3}
        Any{0,2}?
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Options: utf
Subject length lower bound = 3
    \x{212ab}\x{212ab}\x{212ab}\x{861}
 0: \x{212ab}\x{212ab}\x{212ab}

/^[ab]/IB,utf
------------------------------------------------------------------
        Bra
        ^
        [ab]
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Compile options: utf
Overall options: anchored utf
Starting code units: a b
Subject length lower bound = 1
    bar
 0: b
\= Expect no match
    c
No match
    \x{ff}
No match
    \x{100}
No match

/\x{100}*(\d+|"(?1)")/utf
    1234
 0: 1234
 1: 1234
    "1234"
 0: "1234"
 1: "1234"
    \x{100}1234
 0: \x{100}1234
 1: 1234
    "\x{100}1234"
 0: \x{100}1234
 1: 1234
    \x{100}\x{100}12ab
 0: \x{100}\x{100}12
 1: 12
    \x{100}\x{100}"12"
 0: \x{100}\x{100}"12"
 1: "12"
\= Expect no match
    \x{100}\x{100}abcd
No match

/\x{100}*/IB,utf
------------------------------------------------------------------
        Bra
        \x{100}*+
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
May match empty string
Options: utf
Subject length lower bound = 0

/a\x{100}*/IB,utf
------------------------------------------------------------------
        Bra
        a
        \x{100}*+
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Options: utf
First code unit = 'a'
Subject length lower bound = 1

/ab\x{100}*/IB,utf
------------------------------------------------------------------
        Bra
        ab
        \x{100}*+
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Options: utf
First code unit = 'a'
Last code unit = 'b'
Subject length lower bound = 2

/[\x{200}-\x{100}]/utf
Failed: error 108 at offset 15: range out of order in character class

/[Ā-Ą]/utf
    \x{100}
 0: \x{100}
    \x{104}
 0: \x{104}
\= Expect no match
    \x{105}
No match
    \x{ff}
No match

/[\xFF]/IB
------------------------------------------------------------------
        Bra
        \x{ff}
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
First code unit = \xff
Subject length lower bound = 1
    >\xff<
 0: \xff

/[^\xFF]/IB
------------------------------------------------------------------
        Bra
        [^\x{ff}] (not)
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Subject length lower bound = 1

/[Ä-Ü]/utf
    Ö # Matches without Study
 0: \x{d6}
    \x{d6}
 0: \x{d6}

/[Ä-Ü]/utf
    Ö <-- Same with Study
 0: \x{d6}
    \x{d6}
 0: \x{d6}

/[\x{c4}-\x{dc}]/utf
    Ö # Matches without Study
 0: \x{d6}
    \x{d6}
 0: \x{d6}

/[\x{c4}-\x{dc}]/utf
    Ö <-- Same with Study
 0: \x{d6}
    \x{d6}
 0: \x{d6}

/[^\x{100}]abc(xyz(?1))/IB,utf
------------------------------------------------------------------
        Bra
        [^\x{100}] (not)
        abc
        CBra 1
        xyz
        Recurse
        Ket
        Ket
        End
------------------------------------------------------------------
Capture group count = 1
Options: utf
Last code unit = 'z'
Subject length lower bound = 7

/(\x{100}(b(?2)c))?/IB,utf
------------------------------------------------------------------
        Bra
        Brazero
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Ket
        End
------------------------------------------------------------------
Capture group count = 2
May match empty string
Options: utf
Subject length lower bound = 0

/(\x{100}(b(?2)c)){0,2}/IB,utf
------------------------------------------------------------------
        Bra
        Brazero
        Bra
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Brazero
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Ket
        Ket
        End
------------------------------------------------------------------
Capture group count = 2
May match empty string
Options: utf
Subject length lower bound = 0

/(\x{100}(b(?1)c))?/IB,utf
------------------------------------------------------------------
        Bra
        Brazero
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Ket
        End
------------------------------------------------------------------
Capture group count = 2
May match empty string
Options: utf
Subject length lower bound = 0

/(\x{100}(b(?1)c)){0,2}/IB,utf
------------------------------------------------------------------
        Bra
        Brazero
        Bra
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Brazero
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Ket
        Ket
        End
------------------------------------------------------------------
Capture group count = 2
May match empty string
Options: utf
Subject length lower bound = 0

/\W/utf
    A.B
 0: .
    A\x{100}B
 0: \x{100}

/\w/utf
    \x{100}X
 0: X

# Use no_start_optimize because the first code unit is different in 8-bit from
# the wider modes.

/^\ሴ/IB,utf,no_start_optimize
------------------------------------------------------------------
        Bra
        ^
        \x{1234}
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Compile options: no_start_optimize utf
Overall options: anchored no_start_optimize utf
Optimizations: auto_possess,dotstar_anchor

/()()()()()()()()()()
 ()()()()()()()()()()
 ()()()()()()()()()()
 ()()()()()()()()()()
 A (x) (?41) B/x,utf
    AxxB
Matched, but too many substrings
 0: AxxB
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 

/^[\x{100}\E-\Q\E\x{150}]/B,utf
------------------------------------------------------------------
        Bra
        ^
        [\x{100}-\x{150}]
        Ket
        End
------------------------------------------------------------------

/^[\QĀ\E-\QŐ\E]/B,utf
------------------------------------------------------------------
        Bra
        ^
        [\x{100}-\x{150}]
        Ket
        End
------------------------------------------------------------------

/^abc./gmx,newline=any,utf
    abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK
 0: abc1
 0: abc2
 0: abc3
 0: abc4
 0: abc5
 0: abc6
 0: abc7
 0: abc8
 0: abc9

/abc.$/gmx,newline=any,utf
    abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x{0085} abc7\x{2028} abc8\x{2029} abc9
 0: abc1
 0: abc2
 0: abc3
 0: abc4
 0: abc5
 0: abc6
 0: abc7
 0: abc8
 0: abc9

/^a\Rb/bsr=unicode,utf
    a\nb
 0: a\x{0a}b
    a\rb
 0: a\x{0d}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x0bb
 0: a\x{0b}b
    a\x0cb
 0: a\x{0c}b
    a\x{85}b
 0: a\x{85}b
    a\x{2028}b
 0: a\x{2028}b
    a\x{2029}b
 0: a\x{2029}b
\= Expect no match
    a\n\rb
No match

/^a\R*b/bsr=unicode,utf
    ab
 0: ab
    a\nb
 0: a\x{0a}b
    a\rb
 0: a\x{0d}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x0bb
 0: a\x{0b}b
    a\x0c\x{2028}\x{2029}b
 0: a\x{0c}\x{2028}\x{2029}b
    a\x{85}b
 0: a\x{85}b
    a\n\rb
 0: a\x{0a}\x{0d}b
    a\n\r\x{85}\x0cb
 0: a\x{0a}\x{0d}\x{85}\x{0c}b

/^a\R+b/bsr=unicode,utf
    a\nb
 0: a\x{0a}b
    a\rb
 0: a\x{0d}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x0bb
 0: a\x{0b}b
    a\x0c\x{2028}\x{2029}b
 0: a\x{0c}\x{2028}\x{2029}b
    a\x{85}b
 0: a\x{85}b
    a\n\rb
 0: a\x{0a}\x{0d}b
    a\n\r\x{85}\x0cb
 0: a\x{0a}\x{0d}\x{85}\x{0c}b
\= Expect no match
    ab
No match

/^a\R{1,3}b/bsr=unicode,utf
    a\nb
 0: a\x{0a}b
    a\n\rb
 0: a\x{0a}\x{0d}b
    a\n\r\x{85}b
 0: a\x{0a}\x{0d}\x{85}b
    a\r\n\r\nb
 0: a\x{0d}\x{0a}\x{0d}\x{0a}b
    a\r\n\r\n\r\nb
 0: a\x{0d}\x{0a}\x{0d}\x{0a}\x{0d}\x{0a}b
    a\n\r\n\rb
 0: a\x{0a}\x{0d}\x{0a}\x{0d}b
    a\n\n\r\nb
 0: a\x{0a}\x{0a}\x{0d}\x{0a}b
\= Expect no match
    a\n\n\n\rb
No match
    a\r
No match

/\H\h\V\v/utf
    X X\x0a
 0: X X\x{0a}
    X\x09X\x0b
 0: X\x{09}X\x{0b}
\= Expect no match
    \x{a0} X\x0a
No match

/\H*\h+\V?\v{3,4}/utf
    \x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
 0: \x{09} \x{a0}X\x{0a}\x{0b}\x{0c}\x{0d}
    \x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a
 0: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}\x{0d}
    \x09\x20\x{a0}\x0a\x0b\x0c
 0: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}
\= Expect no match
    \x09\x20\x{a0}\x0a\x0b
No match

/\H\h\V\v/utf
    \x{3001}\x{3000}\x{2030}\x{2028}
 0: \x{3001}\x{3000}\x{2030}\x{2028}
    X\x{180e}X\x{85}
 0: X\x{180e}X\x{85}
\= Expect no match
    \x{2009} X\x0a
No match

/\H*\h+\V?\v{3,4}/utf
    \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a
 0: \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x{0c}\x{0d}
    \x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a
 0: \x{09}\x{205f}\x{a0}\x{0a}\x{2029}\x{0c}\x{2028}
    \x09\x20\x{202f}\x0a\x0b\x0c
 0: \x{09} \x{202f}\x{0a}\x{0b}\x{0c}
\= Expect no match
    \x09\x{200a}\x{a0}\x{2028}\x0b
No match

/[\h]/B,utf
------------------------------------------------------------------
        Bra
        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}]
        Ket
        End
------------------------------------------------------------------
    >\x{1680}
 0: \x{1680}

/[\h]{3,}/B,utf
------------------------------------------------------------------
        Bra
        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}]{3,}+
        Ket
        End
------------------------------------------------------------------
    >\x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}<
 0: \x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}

/[\v]/B,utf
------------------------------------------------------------------
        Bra
        [\x0a-\x0d\x85\x{2028}-\x{2029}]
        Ket
        End
------------------------------------------------------------------

/[\H]/B,utf
------------------------------------------------------------------
        Bra
        [\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}]
        Ket
        End
------------------------------------------------------------------

/[\V]/B,utf
------------------------------------------------------------------
        Bra
        [\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{202a}-\x{10ffff}]
        Ket
        End
------------------------------------------------------------------

/.*$/newline=any,utf
    \x{1ec5}
 0: \x{1ec5}

/a\Rb/I,bsr=anycrlf,utf
Capture group count = 0
Options: utf
\R matches CR, LF, or CRLF
First code unit = 'a'
Last code unit = 'b'
Subject length lower bound = 3
    a\rb
 0: a\x{0d}b
    a\nb
 0: a\x{0a}b
    a\r\nb
 0: a\x{0d}\x{0a}b
\= Expect no match
    a\x{85}b
No match
    a\x0bb
No match

/a\Rb/I,bsr=unicode,utf
Capture group count = 0
Options: utf
\R matches any Unicode newline
First code unit = 'a'
Last code unit = 'b'
Subject length lower bound = 3
    a\rb
 0: a\x{0d}b
    a\nb
 0: a\x{0a}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x{85}b
 0: a\x{85}b
    a\x0bb
 0: a\x{0b}b

/a\R?b/I,bsr=anycrlf,utf
Capture group count = 0
Options: utf
\R matches CR, LF, or CRLF
First code unit = 'a'
Last code unit = 'b'
Subject length lower bound = 2
    a\rb
 0: a\x{0d}b
    a\nb
 0: a\x{0a}b
    a\r\nb
 0: a\x{0d}\x{0a}b
\= Expect no match
    a\x{85}b
No match
    a\x0bb
No match

/a\R?b/I,bsr=unicode,utf
Capture group count = 0
Options: utf
\R matches any Unicode newline
First code unit = 'a'
Last code unit = 'b'
Subject length lower bound = 2
    a\rb
 0: a\x{0d}b
    a\nb
 0: a\x{0a}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x{85}b
 0: a\x{85}b
    a\x0bb
 0: a\x{0b}b

/.*a.*=.b.*/utf,newline=any
    QQQ\x{2029}ABCaXYZ=!bPQR
 0: ABCaXYZ=!bPQR
\= Expect no match
    a\x{2029}b
No match
    \x61\xe2\x80\xa9\x62
No match

/[[:a\x{100}b:]]/utf
Failed: error 130 at offset 14: unknown POSIX class name

/[\p{InvalidOrBadProperty}]/
Failed: error 147 at offset 25: unknown property after \P or \p

/a[^]b/utf,allow_empty_class,match_unset_backref
    a\x{1234}b
 0: a\x{1234}b
    a\nb
 0: a\x{0a}b
\= Expect no match
    ab
No match

/a[^]+b/utf,allow_empty_class,match_unset_backref
    aXb
 0: aXb
    a\nX\nX\x{1234}b
 0: a\x{0a}X\x{0a}X\x{1234}b
\= Expect no match
    ab
No match

/(\x{de})\1/
    \x{de}\x{de}
 0: \xde\xde
 1: \xde

/X/newline=any,utf,firstline
    A\x{1ec5}ABCXYZ
 0: X

/Xa{2,4}b/utf
    X\=ps
Partial match: X
    Xa\=ps
Partial match: Xa
    Xaa\=ps
Partial match: Xaa
    Xaaa\=ps
Partial match: Xaaa
    Xaaaa\=ps
Partial match: Xaaaa

/Xa{2,4}?b/utf
    X\=ps
Partial match: X
    Xa\=ps
Partial match: Xa
    Xaa\=ps
Partial match: Xaa
    Xaaa\=ps
Partial match: Xaaa
    Xaaaa\=ps
Partial match: Xaaaa

/Xa{2,4}+b/utf
    X\=ps
Partial match: X
    Xa\=ps
Partial match: Xa
    Xaa\=ps
Partial match: Xaa
    Xaaa\=ps
Partial match: Xaaa
    Xaaaa\=ps
Partial match: Xaaaa

/X\x{123}{2,4}b/utf
    X\=ps
Partial match: X
    X\x{123}\=ps
Partial match: X\x{123}
    X\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X\x{123}{2,4}?b/utf
    X\=ps
Partial match: X
    X\x{123}\=ps
Partial match: X\x{123}
    X\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X\x{123}{2,4}+b/utf
    X\=ps
Partial match: X
    X\x{123}\=ps
Partial match: X\x{123}
    X\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X\x{123}{2,4}b/utf
\= Expect no match
    Xx\=ps
No match
    X\x{123}x\=ps
No match
    X\x{123}\x{123}x\=ps
No match
    X\x{123}\x{123}\x{123}x\=ps
No match
    X\x{123}\x{123}\x{123}\x{123}x\=ps
No match

/X\x{123}{2,4}?b/utf
\= Expect no match
    Xx\=ps
No match
    X\x{123}x\=ps
No match
    X\x{123}\x{123}x\=ps
No match
    X\x{123}\x{123}\x{123}x\=ps
No match
    X\x{123}\x{123}\x{123}\x{123}x\=ps
No match

/X\x{123}{2,4}+b/utf
\= Expect no match
    Xx\=ps
No match
    X\x{123}x\=ps
No match
    X\x{123}\x{123}x\=ps
No match
    X\x{123}\x{123}\x{123}x\=ps
No match
    X\x{123}\x{123}\x{123}\x{123}x\=ps
No match

/X\d{2,4}b/utf
    X\=ps
Partial match: X
    X3\=ps
Partial match: X3
    X33\=ps
Partial match: X33
    X333\=ps
Partial match: X333
    X3333\=ps
Partial match: X3333

/X\d{2,4}?b/utf
    X\=ps
Partial match: X
    X3\=ps
Partial match: X3
    X33\=ps
Partial match: X33
    X333\=ps
Partial match: X333
    X3333\=ps
Partial match: X3333

/X\d{2,4}+b/utf
    X\=ps
Partial match: X
    X3\=ps
Partial match: X3
    X33\=ps
Partial match: X33
    X333\=ps
Partial match: X333
    X3333\=ps
Partial match: X3333

/X\D{2,4}b/utf
    X\=ps
Partial match: X
    Xa\=ps
Partial match: Xa
    Xaa\=ps
Partial match: Xaa
    Xaaa\=ps
Partial match: Xaaa
    Xaaaa\=ps
Partial match: Xaaaa

/X\D{2,4}?b/utf
    X\=ps
Partial match: X
    Xa\=ps
Partial match: Xa
    Xaa\=ps
Partial match: Xaa
    Xaaa\=ps
Partial match: Xaaa
    Xaaaa\=ps
Partial match: Xaaaa

/X\D{2,4}+b/utf
    X\=ps
Partial match: X
    Xa\=ps
Partial match: Xa
    Xaa\=ps
Partial match: Xaa
    Xaaa\=ps
Partial match: Xaaa
    Xaaaa\=ps
Partial match: Xaaaa

/X\D{2,4}b/utf
    X\=ps
Partial match: X
    X\x{123}\=ps
Partial match: X\x{123}
    X\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X\D{2,4}?b/utf
    X\=ps
Partial match: X
    X\x{123}\=ps
Partial match: X\x{123}
    X\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X\D{2,4}+b/utf
    X\=ps
Partial match: X
    X\x{123}\=ps
Partial match: X\x{123}
    X\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X[abc]{2,4}b/utf
    X\=ps
Partial match: X
    Xa\=ps
Partial match: Xa
    Xaa\=ps
Partial match: Xaa
    Xaaa\=ps
Partial match: Xaaa
    Xaaaa\=ps
Partial match: Xaaaa

/X[abc]{2,4}?b/utf
    X\=ps
Partial match: X
    Xa\=ps
Partial match: Xa
    Xaa\=ps
Partial match: Xaa
    Xaaa\=ps
Partial match: Xaaa
    Xaaaa\=ps
Partial match: Xaaaa

/X[abc]{2,4}+b/utf
    X\=ps
Partial match: X
    Xa\=ps
Partial match: Xa
    Xaa\=ps
Partial match: Xaa
    Xaaa\=ps
Partial match: Xaaa
    Xaaaa\=ps
Partial match: Xaaaa

/X[abc\x{123}]{2,4}b/utf
    X\=ps
Partial match: X
    X\x{123}\=ps
Partial match: X\x{123}
    X\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X[abc\x{123}]{2,4}?b/utf
    X\=ps
Partial match: X
    X\x{123}\=ps
Partial match: X\x{123}
    X\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X[abc\x{123}]{2,4}+b/utf
    X\=ps
Partial match: X
    X\x{123}\=ps
Partial match: X\x{123}
    X\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X[^a]{2,4}b/utf
    X\=ps
Partial match: X
    Xz\=ps
Partial match: Xz
    Xzz\=ps
Partial match: Xzz
    Xzzz\=ps
Partial match: Xzzz
    Xzzzz\=ps
Partial match: Xzzzz

/X[^a]{2,4}?b/utf
    X\=ps
Partial match: X
    Xz\=ps
Partial match: Xz
    Xzz\=ps
Partial match: Xzz
    Xzzz\=ps
Partial match: Xzzz
    Xzzzz\=ps
Partial match: Xzzzz

/X[^a]{2,4}+b/utf
    X\=ps
Partial match: X
    Xz\=ps
Partial match: Xz
    Xzz\=ps
Partial match: Xzz
    Xzzz\=ps
Partial match: Xzzz
    Xzzzz\=ps
Partial match: Xzzzz

/X[^a]{2,4}b/utf
    X\=ps
Partial match: X
    X\x{123}\=ps
Partial match: X\x{123}
    X\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X[^a]{2,4}?b/utf
    X\=ps
Partial match: X
    X\x{123}\=ps
Partial match: X\x{123}
    X\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X[^a]{2,4}+b/utf
    X\=ps
Partial match: X
    X\x{123}\=ps
Partial match: X\x{123}
    X\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: X\x{123}\x{123}\x{123}\x{123}

/(Y)X\1{2,4}b/utf
    YX\=ps
Partial match: YX
    YXY\=ps
Partial match: YXY
    YXYY\=ps
Partial match: YXYY
    YXYYY\=ps
Partial match: YXYYY
    YXYYYY\=ps
Partial match: YXYYYY

/(Y)X\1{2,4}?b/utf
    YX\=ps
Partial match: YX
    YXY\=ps
Partial match: YXY
    YXYY\=ps
Partial match: YXYY
    YXYYY\=ps
Partial match: YXYYY
    YXYYYY\=ps
Partial match: YXYYYY

/(Y)X\1{2,4}+b/utf
    YX\=ps
Partial match: YX
    YXY\=ps
Partial match: YXY
    YXYY\=ps
Partial match: YXYY
    YXYYY\=ps
Partial match: YXYYY
    YXYYYY\=ps
Partial match: YXYYYY

/(\x{123})X\1{2,4}b/utf
    \x{123}X\=ps
Partial match: \x{123}X
    \x{123}X\x{123}\=ps
Partial match: \x{123}X\x{123}
    \x{123}X\x{123}\x{123}\=ps
Partial match: \x{123}X\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\=ps
Partial match: \x{123}X\x{123}\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}

/(\x{123})X\1{2,4}?b/utf
    \x{123}X\=ps
Partial match: \x{123}X
    \x{123}X\x{123}\=ps
Partial match: \x{123}X\x{123}
    \x{123}X\x{123}\x{123}\=ps
Partial match: \x{123}X\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\=ps
Partial match: \x{123}X\x{123}\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}

/(\x{123})X\1{2,4}+b/utf
    \x{123}X\=ps
Partial match: \x{123}X
    \x{123}X\x{123}\=ps
Partial match: \x{123}X\x{123}
    \x{123}X\x{123}\x{123}\=ps
Partial match: \x{123}X\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\=ps
Partial match: \x{123}X\x{123}\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps
Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}

/\bthe cat\b/utf
    the cat\=ps
 0: the cat
    the cat\=ph
Partial match: the cat

/abcd*/utf
    xxxxabcd\=ps
 0: abcd
    xxxxabcd\=ph
Partial match: abcd

/abcd*/i,utf
    xxxxabcd\=ps
 0: abcd
    xxxxabcd\=ph
Partial match: abcd
    XXXXABCD\=ps
 0: ABCD
    XXXXABCD\=ph
Partial match: ABCD

/abc\d*/utf
    xxxxabc1\=ps
 0: abc1
    xxxxabc1\=ph
Partial match: abc1

/(a)bc\1*/utf
    xxxxabca\=ps
 0: abca
 1: a
    xxxxabca\=ph
Partial match: abca

/abc[de]*/utf
    xxxxabcde\=ps
 0: abcde
    xxxxabcde\=ph
Partial match: abcde

/X\W{3}X/utf
    X\=ps
Partial match: X

/\sxxx\s/utf,tables=2
    AB\x{85}xxx\x{a0}XYZ
 0: \x{85}xxx\x{a0}
    AB\x{a0}xxx\x{85}XYZ
 0: \x{a0}xxx\x{85}

/\S \S/utf,tables=2
    \x{a2} \x{84}
 0: \x{a2} \x{84}

'A#хц'Bx,newline=any,utf
------------------------------------------------------------------
        Bra
        A
        Ket
        End
------------------------------------------------------------------

'A#хц
  PQ'Bx,newline=any,utf
------------------------------------------------------------------
        Bra
        APQ
        Ket
        End
------------------------------------------------------------------

/a+#хaa
  z#XX?/Bx,newline=any,utf
------------------------------------------------------------------
        Bra
        a++
        z
        Ket
        End
------------------------------------------------------------------

/a+#хaa
  z#х?/Bx,newline=any,utf
------------------------------------------------------------------
        Bra
        a++
        z
        Ket
        End
------------------------------------------------------------------

/\g{A}xxx#bXX(?'A'123)
(?'A'456)/Bx,newline=any,utf
------------------------------------------------------------------
        Bra
        \1
        xxx
        CBra 1
        456
        Ket
        Ket
        End
------------------------------------------------------------------

/\g{A}xxx#bх(?'A'123)
(?'A'456)/Bx,newline=any,utf
------------------------------------------------------------------
        Bra
        \1
        xxx
        CBra 1
        456
        Ket
        Ket
        End
------------------------------------------------------------------

/^\cģ/utf
Failed: error 168 at offset 3: \c must be followed by a printable ASCII character

/(\R*)(.)/s,utf
    \r\n
 0: \x{0d}
 1: 
 2: \x{0d}
    \r\r\n\n\r
 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
 1: \x{0d}\x{0d}\x{0a}\x{0a}
 2: \x{0d}
    \r\r\n\n\r\n
 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
 1: \x{0d}\x{0d}\x{0a}\x{0a}
 2: \x{0d}

/(\R)*(.)/s,utf
    \r\n
 0: \x{0d}
 1: <unset>
 2: \x{0d}
    \r\r\n\n\r
 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
 1: \x{0a}
 2: \x{0d}
    \r\r\n\n\r\n
 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
 1: \x{0a}
 2: \x{0d}

/[^\x{1234}]+/Ii,utf
Capture group count = 0
Options: caseless utf
Subject length lower bound = 1

/[^\x{1234}]+?/Ii,utf
Capture group count = 0
Options: caseless utf
Subject length lower bound = 1

/[^\x{1234}]++/Ii,utf
Capture group count = 0
Options: caseless utf
Subject length lower bound = 1

/[^\x{1234}]{2}/Ii,utf
Capture group count = 0
Options: caseless utf
Subject length lower bound = 2

/f.*/
    for\=ph
Partial match: for

/f.*/s
    for\=ph
Partial match: for

/f.*/utf
    for\=ph
Partial match: for

/f.*/s,utf
    for\=ph
Partial match: for

/\x{d7ff}\x{e000}/utf

/\x{d800}/utf
Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)

/\x{dfff}/utf
Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)

/\h+/utf
    \x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
 0: \x{1680}\x{2000}\x{202f}\x{3000}
    \x{3001}\x{2fff}\x{200a}\x{a0}\x{2000}
 0: \x{200a}\x{a0}\x{2000}

/[\h\x{e000}]+/B,utf
------------------------------------------------------------------
        Bra
        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}\x{e000}]++
        Ket
        End
------------------------------------------------------------------
    \x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
 0: \x{1680}\x{2000}\x{202f}\x{3000}
    \x{3001}\x{2fff}\x{200a}\x{a0}\x{2000}
 0: \x{200a}\x{a0}\x{2000}

/\H+/utf
    \x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
 0: \x{167f}\x{1681}\x{180d}\x{180f}
    \x{2000}\x{200a}\x{1fff}\x{200b}
 0: \x{1fff}\x{200b}
    \x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
 0: \x{202e}\x{2030}\x{205e}\x{2060}
    \x{a0}\x{3000}\x{9f}\x{a1}\x{2fff}\x{3001}
 0: \x{9f}\x{a1}\x{2fff}\x{3001}

/[\H\x{d7ff}]+/B,utf
------------------------------------------------------------------
        Bra
        [\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}]++
        Ket
        End
------------------------------------------------------------------
    \x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
 0: \x{167f}\x{1681}\x{180d}\x{180f}
    \x{2000}\x{200a}\x{1fff}\x{200b}
 0: \x{1fff}\x{200b}
    \x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
 0: \x{202e}\x{2030}\x{205e}\x{2060}
    \x{a0}\x{3000}\x{9f}\x{a1}\x{2fff}\x{3001}
 0: \x{9f}\x{a1}\x{2fff}\x{3001}

/\v+/utf
    \x{2027}\x{2030}\x{2028}\x{2029}
 0: \x{2028}\x{2029}
    \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
 0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}

/[\v\x{e000}]+/B,utf
------------------------------------------------------------------
        Bra
        [\x0a-\x0d\x85\x{2028}-\x{2029}\x{e000}]++
        Ket
        End
------------------------------------------------------------------
    \x{2027}\x{2030}\x{2028}\x{2029}
 0: \x{2028}\x{2029}
    \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
 0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}

/\V+/utf
    \x{2028}\x{2029}\x{2027}\x{2030}
 0: \x{2027}\x{2030}
    \x{85}\x0a\x0b\x0c\x0d\x09\x0e\x{84}\x{86}
 0: \x{09}\x{0e}\x{84}\x{86}

/[\V\x{d7ff}]+/B,utf
------------------------------------------------------------------
        Bra
        [\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{202a}-\x{10ffff}]++
        Ket
        End
------------------------------------------------------------------
    \x{2028}\x{2029}\x{2027}\x{2030}
 0: \x{2027}\x{2030}
    \x{85}\x0a\x0b\x0c\x0d\x09\x0e\x{84}\x{86}
 0: \x{09}\x{0e}\x{84}\x{86}

/\R+/bsr=unicode,utf
    \x{2027}\x{2030}\x{2028}\x{2029}
 0: \x{2028}\x{2029}
    \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
 0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}

/(..)\1/utf
    ab\=ps
Partial match: ab
    aba\=ps
Partial match: aba
    abab\=ps
 0: abab
 1: ab

/(..)\1/i,utf
    ab\=ps
Partial match: ab
    abA\=ps
Partial match: abA
    aBAb\=ps
 0: aBAb
 1: aB

/(..)\1{2,}/utf
    ab\=ps
Partial match: ab
    aba\=ps
Partial match: aba
    abab\=ps
Partial match: abab
    ababa\=ps
Partial match: ababa
    ababab\=ps
 0: ababab
 1: ab
    ababab\=ph
Partial match: ababab
    abababa\=ps
 0: ababab
 1: ab
    abababa\=ph
Partial match: abababa

/(..)\1{2,}/i,utf
    ab\=ps
Partial match: ab
    aBa\=ps
Partial match: aBa
    aBAb\=ps
Partial match: aBAb
    AbaBA\=ps
Partial match: AbaBA
    abABAb\=ps
 0: abABAb
 1: ab
    aBAbaB\=ph
Partial match: aBAbaB
    abABabA\=ps
 0: abABab
 1: ab
    abaBABa\=ph
Partial match: abaBABa

/(..)\1{2,}?x/i,utf
    ab\=ps
Partial match: ab
    abA\=ps
Partial match: abA
    aBAb\=ps
Partial match: aBAb
    abaBA\=ps
Partial match: abaBA
    abAbaB\=ps
Partial match: abAbaB
    abaBabA\=ps
Partial match: abaBabA
    abAbABaBx\=ps
 0: abAbABaBx
 1: ab

/./utf,newline=crlf
    \r\=ps
 0: \x{0d}
    \r\=ph
Partial match: \x{0d}

/.{2,3}/utf,newline=crlf
    \r\=ps
Partial match: \x{0d}
    \r\=ph
Partial match: \x{0d}
    \r\r\=ps
 0: \x{0d}\x{0d}
    \r\r\=ph
Partial match: \x{0d}\x{0d}
    \r\r\r\=ps
 0: \x{0d}\x{0d}\x{0d}
    \r\r\r\=ph
Partial match: \x{0d}\x{0d}\x{0d}

/.{2,3}?/utf,newline=crlf
    \r\=ps
Partial match: \x{0d}
    \r\=ph
Partial match: \x{0d}
    \r\r\=ps
 0: \x{0d}\x{0d}
    \r\r\=ph
Partial match: \x{0d}\x{0d}
    \r\r\r\=ps
 0: \x{0d}\x{0d}
    \r\r\r\=ph
 0: \x{0d}\x{0d}

/[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/B,utf
------------------------------------------------------------------
        Bra
        [^\x{100}] (not)
        [^\x{1234}] (not)
        [^\x{ffff}] (not)
        [^\x{10000}] (not)
        [^\x{10ffff}] (not)
        Ket
        End
------------------------------------------------------------------

/[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/Bi,utf
------------------------------------------------------------------
        Bra
     /i [^\x{100}] (not)
     /i [^\x{1234}] (not)
     /i [^\x{ffff}] (not)
     /i [^\x{10000}] (not)
     /i [^\x{10ffff}] (not)
        Ket
        End
------------------------------------------------------------------

/[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/B,utf
------------------------------------------------------------------
        Bra
        [^\x{100}]* (not)
        [^\x{10000}]+ (not)
        [^\x{10ffff}]?? (not)
        [^\x{8000}]{4} (not)
        [^\x{8000}]* (not)
        [^\x{7fff}]{2} (not)
        [^\x{7fff}]{0,7}? (not)
        [^\x{fffff}]{5} (not)
        [^\x{fffff}]?+ (not)
        Ket
        End
------------------------------------------------------------------

/[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/Bi,utf
------------------------------------------------------------------
        Bra
     /i [^\x{100}]* (not)
     /i [^\x{10000}]+ (not)
     /i [^\x{10ffff}]?? (not)
     /i [^\x{8000}]{4} (not)
     /i [^\x{8000}]* (not)
     /i [^\x{7fff}]{2} (not)
     /i [^\x{7fff}]{0,7}? (not)
     /i [^\x{fffff}]{5} (not)
     /i [^\x{fffff}]?+ (not)
        Ket
        End
------------------------------------------------------------------

/(?<=\x{1234}\x{1234})\bxy/I,utf
Capture group count = 0
Max lookbehind = 2
Options: utf
First code unit = 'x'
Last code unit = 'y'
Subject length lower bound = 2

/(?<!^)ETA/utf
\= Expect no match
    ETA
No match

/\u0100/B,utf,alt_bsux,allow_empty_class,match_unset_backref
------------------------------------------------------------------
        Bra
        \x{100}
        Ket
        End
------------------------------------------------------------------

/[\u0100-\u0200]/B,utf,alt_bsux,allow_empty_class,match_unset_backref
------------------------------------------------------------------
        Bra
        [\x{100}-\x{200}]
        Ket
        End
------------------------------------------------------------------

/\ud800/utf,alt_bsux,allow_empty_class,match_unset_backref
Failed: error 173 at offset 6: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)

/^\u{0000000000010ffff}/utf,extra_alt_bsux
    \x{10ffff}
 0: \x{10ffff}

/\u{ 1bb1}/utf,extra_alt_bsux
    u{ 1bb1}
 0: u{ 1bb1}
\= Expect no match
    \x{1bb1}
No match

/\u/utf,alt_bsux
    \\u
 0: u

/^a+[a\x{200}]/B,utf
------------------------------------------------------------------
        Bra
        ^
        a+
        [a\x{200}]
        Ket
        End
------------------------------------------------------------------
    aa
 0: aa

/[b-d\x{200}-\x{250}]*[ae-h]?#[\x{200}-\x{250}]{0,8}[\x00-\xff]*#[\x{200}-\x{250}]+[a-z]/B,utf
------------------------------------------------------------------
        Bra
        [b-d\x{200}-\x{250}]*+
        [ae-h]?+
        #
        [\x{200}-\x{250}]{0,8}+
        [\x00-\xff]*
        #
        [\x{200}-\x{250}]++
        [a-z]
        Ket
        End
------------------------------------------------------------------

/[\p{L}]/IB
------------------------------------------------------------------
        Bra
        [\p{L}]
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Subject length lower bound = 1

/[\p{^L}]/IB
------------------------------------------------------------------
        Bra
        [\P{L}]
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Subject length lower bound = 1

/[\P{L}]/IB
------------------------------------------------------------------
        Bra
        [\P{L}]
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Subject length lower bound = 1

/[\P{^L}]/IB
------------------------------------------------------------------
        Bra
        [\p{L}]
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Subject length lower bound = 1

/[abc\p{L}\x{0660}]/IB,utf
------------------------------------------------------------------
        Bra
        [A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff\p{L}\x{660}]
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Options: utf
Subject length lower bound = 1

/[\p{Nd}]/IB,utf
------------------------------------------------------------------
        Bra
        [\p{Nd}]
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Options: utf
Subject length lower bound = 1
    1234
 0: 1

/[\p{Nd}+-]+/IB,utf
------------------------------------------------------------------
        Bra
        [+\-0-9\p{Nd}]++
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Options: utf
Subject length lower bound = 1
    1234
 0: 1234
    12-34
 0: 12-34
    12+\x{661}-34
 0: 12+\x{661}-34
\= Expect no match
    abcd
No match

/(?:[\PPa*]*){8,}/

/[\P{Any}]/B
------------------------------------------------------------------
        Bra
        []
        Ket
        End
------------------------------------------------------------------

/[^\P{Any}\P{Any}]/B
------------------------------------------------------------------
        Bra
        AllAny
        Ket
        End
------------------------------------------------------------------

/[\P{Any}\E]/B
------------------------------------------------------------------
        Bra
        []
        Ket
        End
------------------------------------------------------------------

/\p{Any}#\P{Any}![\p{Any}]:[\P{Any}]@[\p{Any}a-z]%[\P{Any}c]/B,utf
------------------------------------------------------------------
        Bra
        AllAny
        #
        []
        !
        AllAny
        :
        []
        @
        AllAny
        %
        [c]
        Ket
        End
------------------------------------------------------------------

/[\P{Any}\P{Any}\P{Any}]![\p{Any}\p{Any}\p{Any}]:[^\P{Any}\P{Any}]@[^\p{Any}\p{Any}]%[^\p{Any}\P{Any}]/B,utf
------------------------------------------------------------------
        Bra
        []
        !
        AllAny
        :
        AllAny
        @
        []
        %
        []
        Ket
        End
------------------------------------------------------------------

/(\P{Yi}+\277)/

/(\P{Yi}+\277)?/

/(?<=\P{Yi}{3}A)X/

/\p{Yi}+(\P{Yi}+)(?1)/

/(\P{Yi}{2}\277)?/

/[\P{Yi}A]/

/[\P{Yi}\P{Yi}\P{Yi}A]/

/[^\P{Yi}A]/

/[^\P{Yi}\P{Yi}\P{Yi}A]/

/(\P{Yi}*\277)*/

/(\P{Yi}*?\277)*/

/(\p{Yi}*+\277)*/

/(\P{Yi}?\277)*/

/(\P{Yi}??\277)*/

/(\p{Yi}?+\277)*/

/(\P{Yi}{0,3}\277)*/

/(\P{Yi}{0,3}?\277)*/

/(\p{Yi}{0,3}+\277)*/

/\p{Zl}{2,3}+/B,utf
------------------------------------------------------------------
        Bra
        prop Zl {2}
        prop Zl ?+
        Ket
        End
------------------------------------------------------------------
      
 0: \x{2028}\x{2028}
    \x{2028}\x{2028}\x{2028}
 0: \x{2028}\x{2028}\x{2028}

/\p{Zl}/B,utf
------------------------------------------------------------------
        Bra
        prop Zl
        Ket
        End
------------------------------------------------------------------

/\p{Lu}{3}+/B,utf
------------------------------------------------------------------
        Bra
        prop Lu {3}
        Ket
        End
------------------------------------------------------------------

/\pL{2}+/B,utf
------------------------------------------------------------------
        Bra
        prop L {2}
        Ket
        End
------------------------------------------------------------------

/\p{Cc}{2}+/B,utf
------------------------------------------------------------------
        Bra
        prop Cc {2}
        Ket
        End
------------------------------------------------------------------

/^\p{Cf}/utf
    \x{180e}
 0: \x{180e}
    \x{061c}
 0: \x{61c}
    \x{2066}
 0: \x{2066}
    \x{2067}
 0: \x{2067}
    \x{2068}
 0: \x{2068}
    \x{2069}
 0: \x{2069}

/^\p{Cs}/utf
    \x{dfff}\=no_utf_check
 0: \x{dfff}
\= Expect no match
    \x{09f}
No match

/^\p{Mn}/utf
    \x{1a1b}
 0: \x{1a1b}

/^\p{Pe}/utf
    \x{2309}
 0: \x{2309}
    \x{230b}
 0: \x{230b}

/^\p{Ps}/utf
    \x{2308}
 0: \x{2308}
    \x{230a}
 0: \x{230a}

/^\p{Sc}+/utf
    $\x{a2}\x{a3}\x{a4}\x{a5}\x{a6}
 0: $\x{a2}\x{a3}\x{a4}\x{a5}
    \x{9f2}
 0: \x{9f2}
\= Expect no match
    X
No match
    \x{2c2}
No match

/^\p{Zs}/utf
    \ \
 0:  
    \x{a0}
 0: \x{a0}
    \x{1680}
 0: \x{1680}
    \x{2000}
 0: \x{2000}
    \x{2001}
 0: \x{2001}
\= Expect no match
    \x{2028}
No match
    \x{200d}
No match

/[\x{c0}\x{391}]/i,utf
    \x{c0}
 0: \x{c0}
    \x{e0}
 0: \x{e0}

# The next two are special cases where the lengths of the different cases of
# the same character differ. The first went wrong with heap frame storage; the
# second was broken in all cases.

/^\x{023a}+?(\x{0130}+)/i,utf
  \x{023a}\x{2c65}\x{0130}
 0: \x{23a}\x{2c65}\x{130}
 1: \x{130}

/^\x{023a}+([^X])/i,utf
  \x{023a}\x{2c65}X
 0: \x{23a}\x{2c65}
 1: \x{2c65}

/\x{c0}+\x{116}+/i,utf
    \x{c0}\x{e0}\x{116}\x{117}
 0: \x{c0}\x{e0}\x{116}\x{117}

/[\x{c0}\x{116}]+/i,utf
    \x{c0}\x{e0}\x{116}\x{117}
 0: \x{c0}\x{e0}\x{116}\x{117}

/(\x{de})\1/i,utf
    \x{de}\x{de}
 0: \x{de}\x{de}
 1: \x{de}
    \x{de}\x{fe}
 0: \x{de}\x{fe}
 1: \x{de}
    \x{fe}\x{fe}
 0: \x{fe}\x{fe}
 1: \x{fe}
    \x{fe}\x{de}
 0: \x{fe}\x{de}
 1: \x{fe}

/^\x{c0}$/i,utf
    \x{c0}
 0: \x{c0}
    \x{e0}
 0: \x{e0}

/^\x{e0}$/i,utf
    \x{c0}
 0: \x{c0}
    \x{e0}
 0: \x{e0}

# The next two should be Perl-compatible, but it fails to match \x{e0}. PCRE
# will match it only with UCP support, because without that it has no notion
# of case for anything other than the ASCII letters.

/((?i)[\x{c0}])/utf
    \x{c0}
 0: \x{c0}
 1: \x{c0}
    \x{e0}
 0: \x{e0}
 1: \x{e0}

/(?i:[\x{c0}])/utf
    \x{c0}
 0: \x{c0}
    \x{e0}
 0: \x{e0}

# These are PCRE's extra properties to help with Unicodizing \d etc.

/^\p{Xan}/utf
    ABCD
 0: A
    1234
 0: 1
    \x{6ca}
 0: \x{6ca}
    \x{a6c}
 0: \x{a6c}
    \x{10a7}
 0: \x{10a7}
\= Expect no match
    _ABC
No match

/^\p{Xan}+/utf
    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
\= Expect no match
    _ABC
No match

/^\p{Xan}+?/utf
    \x{6ca}\x{a6c}\x{10a7}_
 0: \x{6ca}

/^\p{Xan}*/utf
    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}

/^\p{Xan}{2,9}/utf
    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
 0: ABCD1234\x{6ca}

/^\p{Xan}{2,9}?/utf
    \x{6ca}\x{a6c}\x{10a7}_
 0: \x{6ca}\x{a6c}

/^[\p{Xan}]/utf
    ABCD1234_
 0: A
    1234abcd_
 0: 1
    \x{6ca}
 0: \x{6ca}
    \x{a6c}
 0: \x{a6c}
    \x{10a7}
 0: \x{10a7}
\= Expect no match
    _ABC
No match

/^[\p{Xan}]+/utf
    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
\= Expect no match
    _ABC
No match

/^>\p{Xsp}/utf
    >\x{1680}\x{2028}\x{0b}
 0: >\x{1680}
    >\x{a0}
 0: >\x{a0}
\= Expect no match
    \x{0b}
No match

/^>\p{Xsp}+/utf
    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}

/^>\p{Xsp}+?/utf
    >\x{1680}\x{2028}\x{0b}
 0: >\x{1680}

/^>\p{Xsp}*/utf
    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}

/^>\p{Xsp}{2,9}/utf
    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}

/^>\p{Xsp}{2,9}?/utf
    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
 0: > \x{09}

/^>[\p{Xsp}]/utf
    >\x{2028}\x{0b}
 0: >\x{2028}

/^>[\p{Xsp}]+/utf
    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}

/^>\p{Xps}/utf
    >\x{1680}\x{2028}\x{0b}
 0: >\x{1680}
    >\x{a0}
 0: >\x{a0}
\= Expect no match
    \x{0b}
No match

/^>\p{Xps}+/utf
    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}

/^>\p{Xps}+?/utf
    >\x{1680}\x{2028}\x{0b}
 0: >\x{1680}

/^>\p{Xps}*/utf
    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}

/^>\p{Xps}{2,9}/utf
    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}

/^>\p{Xps}{2,9}?/utf
    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
 0: > \x{09}

/^>[\p{Xps}]/utf
    >\x{2028}\x{0b}
 0: >\x{2028}

/^>[\p{Xps}]+/utf
    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}

/^\p{Xwd}/utf
    ABCD
 0: A
    1234
 0: 1
    \x{6ca}
 0: \x{6ca}
    \x{a6c}
 0: \x{a6c}
    \x{10a7}
 0: \x{10a7}
    _ABC
 0: _
\= Expect no match
    []
No match

/^\p{Xwd}+/utf
    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_

/^\p{Xwd}+?/utf
    \x{6ca}\x{a6c}\x{10a7}_
 0: \x{6ca}

/^\p{Xwd}*/utf
    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_

/^\p{Xwd}{2,9}/utf
    A_B12\x{6ca}\x{a6c}\x{10a7}
 0: A_B12\x{6ca}\x{a6c}\x{10a7}

/^\p{Xwd}{2,9}?/utf
    \x{6ca}\x{a6c}\x{10a7}_
 0: \x{6ca}\x{a6c}

/^[\p{Xwd}]/utf
    ABCD1234_
 0: A
    1234abcd_
 0: 1
    \x{6ca}
 0: \x{6ca}
    \x{a6c}
 0: \x{a6c}
    \x{10a7}
 0: \x{10a7}
    _ABC
 0: _
\= Expect no match
    []
No match

/^[\p{Xwd}]+/utf
    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_

# A check not in UTF-8 mode

/^[\p{Xwd}]+/
    ABCD1234_
 0: ABCD1234_

# Some negative checks

/^[\P{Xwd}]+/utf
    !.+\x{019}\x{482}AB
 0: !.+\x{19}\x{482}

/^[\p{^Xwd}]+/utf
    !.+\x{019}\x{589}AB
 0: !.+\x{19}\x{589}

/[\D]/B,utf,ucp
------------------------------------------------------------------
        Bra
        [\P{Nd}]
        Ket
        End
------------------------------------------------------------------
    1\x{3c8}2
 0: \x{3c8}

/[\d]/B,utf,ucp
------------------------------------------------------------------
        Bra
        [\p{Nd}]
        Ket
        End
------------------------------------------------------------------
    >\x{6f4}<
 0: \x{6f4}

/[\S]/B,utf,ucp
------------------------------------------------------------------
        Bra
        [\P{Xsp}]
        Ket
        End
------------------------------------------------------------------
    \x{1680}\x{6f4}\x{1680}
 0: \x{6f4}

/[\s]/B,utf,ucp
------------------------------------------------------------------
        Bra
        [\p{Xsp}]
        Ket
        End
------------------------------------------------------------------
    >\x{1680}<
 0: \x{1680}

/[\W]/B,utf,ucp
------------------------------------------------------------------
        Bra
        [\P{Xwd}]
        Ket
        End
------------------------------------------------------------------
    A\x{1735}B
 0: \x{1735}

/[\w]/B,utf,ucp
------------------------------------------------------------------
        Bra
        [\p{Xwd}]
        Ket
        End
------------------------------------------------------------------
    >\x{1723}<
 0: \x{1723}

/\D/B,utf,ucp
------------------------------------------------------------------
        Bra
        notprop Nd
        Ket
        End
------------------------------------------------------------------
    1\x{3c8}2
 0: \x{3c8}

/\d/B,utf,ucp
------------------------------------------------------------------
        Bra
        prop Nd
        Ket
        End
------------------------------------------------------------------
    >\x{6f4}<
 0: \x{6f4}

/\S/B,utf,ucp
------------------------------------------------------------------
        Bra
        notprop Xsp
        Ket
        End
------------------------------------------------------------------
    \x{1680}\x{6f4}\x{1680}
 0: \x{6f4}

/\s/B,utf,ucp
------------------------------------------------------------------
        Bra
        prop Xsp
        Ket
        End
------------------------------------------------------------------
    >\x{1680}>
 0: \x{1680}

/\W/B,utf,ucp
------------------------------------------------------------------
        Bra
        notprop Xwd
        Ket
        End
------------------------------------------------------------------
    A\x{1735}B
 0: \x{1735}

/\w/B,utf,ucp
------------------------------------------------------------------
        Bra
        prop Xwd
        Ket
        End
------------------------------------------------------------------
    >\x{1723}<
 0: \x{1723}

/[[:alpha:]]/B,ucp
------------------------------------------------------------------
        Bra
        [\p{L}]
        Ket
        End
------------------------------------------------------------------

/[[:lower:]]/B,ucp
------------------------------------------------------------------
        Bra
        [\p{Ll}]
        Ket
        End
------------------------------------------------------------------

/[[:upper:]]/B,ucp
------------------------------------------------------------------
        Bra
        [\p{Lu}]
        Ket
        End
------------------------------------------------------------------

/[[:alnum:]]/B,ucp
------------------------------------------------------------------
        Bra
        [\p{Xan}]
        Ket
        End
------------------------------------------------------------------

/[[:ascii:]]/B,ucp
------------------------------------------------------------------
        Bra
        [\x00-\x7f]
        Ket
        End
------------------------------------------------------------------

/[[:cntrl:]]/B,ucp
------------------------------------------------------------------
        Bra
        [\p{Cc}]
        Ket
        End
------------------------------------------------------------------

/[[:digit:]]/B,ucp
------------------------------------------------------------------
        Bra
        [\p{Nd}]
        Ket
        End
------------------------------------------------------------------

/[[:digit:]]/B,ucp,ascii_digit
------------------------------------------------------------------
        Bra
        [0-9]
        Ket
        End
------------------------------------------------------------------

/[[:graph:]]/B,ucp
------------------------------------------------------------------
        Bra
        [[:graph:]]
        Ket
        End
------------------------------------------------------------------

/[[:print:]]/B,ucp
------------------------------------------------------------------
        Bra
        [[:print:]]
        Ket
        End
------------------------------------------------------------------

/[[:punct:]]/B,ucp
------------------------------------------------------------------
        Bra
        [[:punct:]]
        Ket
        End
------------------------------------------------------------------

/[[:space:]]/B,ucp
------------------------------------------------------------------
        Bra
        [\p{Xps}]
        Ket
        End
------------------------------------------------------------------

/[[:word:]]/B,ucp
------------------------------------------------------------------
        Bra
        [\p{Xwd}]
        Ket
        End
------------------------------------------------------------------

/[[:xdigit:]]/B,ucp
------------------------------------------------------------------
        Bra
        [[:xdigit:]]
        Ket
        End
------------------------------------------------------------------

/[[:xdigit:]]/B,ucp,ascii_digit
------------------------------------------------------------------
        Bra
        [0-9A-Fa-f]
        Ket
        End
------------------------------------------------------------------

# Unicode properties for \b and \B

/\b...\B/utf,ucp
    abc_
 0: abc
    \x{37e}abc\x{376}
 0: abc
    \x{37e}\x{376}\x{371}\x{393}\x{394}
 0: \x{376}\x{371}\x{393}
    !\x{c0}++\x{c1}\x{c2}
 0: ++\x{c1}
    !\x{c0}+++++
 0: \x{c0}++

# Without PCRE_UCP, non-ASCII always fail, even if < 256

/\b...\B/utf
    abc_
 0: abc
\= Expect no match
    \x{37e}abc\x{376}
No match
    \x{37e}\x{376}\x{371}\x{393}\x{394}
No match
    !\x{c0}++\x{c1}\x{c2}
No match
    !\x{c0}+++++
No match

# With PCRE_UCP, non-UTF8 chars that are < 256 still check properties

/\b...\B/ucp
    abc_
 0: abc
    !\x{c0}++\x{c1}\x{c2}
 0: ++\xc1
    !\x{c0}+++++
 0: \xc0++

# Some of these are silly, but they check various combinations

/[[:^alpha:][:^cntrl:]]+/B,utf,ucp
------------------------------------------------------------------
        Bra
        [\P{L}\P{Cc}]++
        Ket
        End
------------------------------------------------------------------
    123
 0: 123
    abc
 0: abc

/[[:^cntrl:][:^alpha:]]+/B,utf,ucp
------------------------------------------------------------------
        Bra
        [\P{Cc}\P{L}]++
        Ket
        End
------------------------------------------------------------------
    123
 0: 123
    abc
 0: abc

/[[:alpha:]]+/B,utf,ucp
------------------------------------------------------------------
        Bra
        [\p{L}]++
        Ket
        End
------------------------------------------------------------------
    abc
 0: abc

/[[:^alpha:]\S]+/B,utf,ucp
------------------------------------------------------------------
        Bra
        [\P{L}\P{Xsp}]++
        Ket
        End
------------------------------------------------------------------
    123
 0: 123
    abc
 0: abc

/[^\d]+/B,utf,ucp
------------------------------------------------------------------
        Bra
        [^\p{Nd}]++
        Ket
        End
------------------------------------------------------------------
    abc123
 0: abc
    abc\x{123}
 0: abc\x{123}
    \x{660}abc
 0: abc

/\p{Lu}+9\p{Lu}+B\p{Lu}+b/B
------------------------------------------------------------------
        Bra
        prop Lu ++
        9
        prop Lu +
        B
        prop Lu ++
        b
        Ket
        End
------------------------------------------------------------------

/\p{^Lu}+9\p{^Lu}+B\p{^Lu}+b/B
------------------------------------------------------------------
        Bra
        notprop Lu +
        9
        notprop Lu ++
        B
        notprop Lu +
        b
        Ket
        End
------------------------------------------------------------------

/\P{Lu}+9\P{Lu}+B\P{Lu}+b/B
------------------------------------------------------------------
        Bra
        notprop Lu +
        9
        notprop Lu ++
        B
        notprop Lu +
        b
        Ket
        End
------------------------------------------------------------------

/\p{Han}+X\p{Greek}+\x{370}/B,utf
------------------------------------------------------------------
        Bra
        prop Han ++
        X
        prop Greek +
        \x{370}
        Ket
        End
------------------------------------------------------------------

/\p{Xan}+!\p{Xan}+A/B
------------------------------------------------------------------
        Bra
        prop Xan ++
        !
        prop Xan +
        A
        Ket
        End
------------------------------------------------------------------

/\p{Xsp}+!\p{Xsp}\t/B
------------------------------------------------------------------
        Bra
        prop Xsp ++
        !
        prop Xsp
        \x09
        Ket
        End
------------------------------------------------------------------

/\p{Xps}+!\p{Xps}\t/B
------------------------------------------------------------------
        Bra
        prop Xps ++
        !
        prop Xps
        \x09
        Ket
        End
------------------------------------------------------------------

/\p{Xwd}+!\p{Xwd}_/B
------------------------------------------------------------------
        Bra
        prop Xwd ++
        !
        prop Xwd
        _
        Ket
        End
------------------------------------------------------------------

/A+\p{N}A+\dB+\p{N}*B+\d*/B,ucp
------------------------------------------------------------------
        Bra
        A++
        prop N
        A++
        prop Nd
        B+
        prop N *+
        B++
        prop Nd *+
        Ket
        End
------------------------------------------------------------------

# These behaved oddly in Perl, so they are kept in this test

/(\x{23a}\x{23a}\x{23a})?\1/i,utf
\= Expect no match
    \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
No match

/(ȺȺȺ)?\1/i,utf
\= Expect no match
    ȺȺȺⱥⱥ
No match

/(\x{23a}\x{23a}\x{23a})?\1/i,utf
    \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
 1: \x{23a}\x{23a}\x{23a}

/(ȺȺȺ)?\1/i,utf
    ȺȺȺⱥⱥⱥ
 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
 1: \x{23a}\x{23a}\x{23a}

/(\x{23a}\x{23a}\x{23a})\1/i,utf
\= Expect no match
    \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
No match

/(ȺȺȺ)\1/i,utf
\= Expect no match
    ȺȺȺⱥⱥ
No match

/(\x{23a}\x{23a}\x{23a})\1/i,utf
    \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
 1: \x{23a}\x{23a}\x{23a}

/(ȺȺȺ)\1/i,utf
    ȺȺȺⱥⱥⱥ
 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
 1: \x{23a}\x{23a}\x{23a}

/(\x{2c65}\x{2c65})\1/i,utf
    \x{2c65}\x{2c65}\x{23a}\x{23a}
 0: \x{2c65}\x{2c65}\x{23a}\x{23a}
 1: \x{2c65}\x{2c65}

/(ⱥⱥ)\1/i,utf
    ⱥⱥȺȺ
 0: \x{2c65}\x{2c65}\x{23a}\x{23a}
 1: \x{2c65}\x{2c65}

/(\x{23a}\x{23a}\x{23a})\1Y/i,utf
    X\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}YZ
 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}Y
 1: \x{23a}\x{23a}\x{23a}

/(\x{2c65}\x{2c65})\1Y/i,utf
    X\x{2c65}\x{2c65}\x{23a}\x{23a}YZ
 0: \x{2c65}\x{2c65}\x{23a}\x{23a}Y
 1: \x{2c65}\x{2c65}

# These scripts weren't yet in Perl when I added Unicode 6.0.0 to PCRE

/^[\p{Batak}]/utf
    \x{1bc0}
 0: \x{1bc0}
    \x{1bff}
 0: \x{1bff}
\= Expect no match
    \x{1bf4}
No match

/^[\p{Brahmi}]/utf
    \x{11000}
 0: \x{11000}
    \x{1106f}
 0: \x{1106f}
\= Expect no match
    \x{1104e}
No match

/^[\p{Mandaic}]/utf
    \x{840}
 0: \x{840}
    \x{85e}
 0: \x{85e}
\= Expect no match
    \x{85c}
No match
    \x{85d}
No match

/(\X*)(.)/s,utf
    A\x{300}
 0: A
 1: 
 2: A

/^S(\X*)e(\X*)$/utf
    Stéréo
 0: Ste\x{301}re\x{301}o
 1: te\x{301}r
 2: \x{301}o

/^\X/utf
    ́réo
 0: \x{301}

/^a\X41z/alt_bsux,allow_empty_class,match_unset_backref,dupnames
    aX41z
 0: aX41z
\= Expect no match
    aAz
No match

/\X/
    a\=ps
 0: a
    a\=ph
Partial match: a

/\Xa/
    aa\=ps
 0: aa
    aa\=ph
 0: aa

/\X{2}/
    aa\=ps
 0: aa
    aa\=ph
Partial match: aa

/\X+a/
    a\=ps
Partial match: a
    aa\=ps
 0: aa
    aa\=ph
Partial match: aa

/\X+?a/
    a\=ps
Partial match: a
    ab\=ps
Partial match: ab
    aa\=ps
 0: aa
    aa\=ph
 0: aa
    aba\=ps
 0: aba

# These Unicode 6.1.0 scripts are not known to Perl.

/\p{Chakma}\d/utf,ucp
    \x{11100}\x{1113c}
 0: \x{11100}\x{1113c}

/\p{Takri}\d/utf,ucp
    \x{11680}\x{116c0}
 0: \x{11680}\x{116c0}

/^\X/utf
    A\=ps
 0: A
    A\=ph
Partial match: A
    A\x{300}\x{301}\=ps
 0: A\x{300}\x{301}
    A\x{300}\x{301}\=ph
Partial match: A\x{300}\x{301}
    A\x{301}\=ps
 0: A\x{301}
    A\x{301}\=ph
Partial match: A\x{301}

/^\X{2,3}/utf
    A\=ps
Partial match: A
    A\=ph
Partial match: A
    AA\=ps
 0: AA
    AA\=ph
Partial match: AA
    A\x{300}\x{301}\=ps
Partial match: A\x{300}\x{301}
    A\x{300}\x{301}\=ph
Partial match: A\x{300}\x{301}
    A\x{300}\x{301}A\x{300}\x{301}\=ps
 0: A\x{300}\x{301}A\x{300}\x{301}
    A\x{300}\x{301}A\x{300}\x{301}\=ph
Partial match: A\x{300}\x{301}A\x{300}\x{301}

/^\X{2}/utf
    AA\=ps
 0: AA
    AA\=ph
Partial match: AA
    A\x{300}\x{301}A\x{300}\x{301}\=ps
 0: A\x{300}\x{301}A\x{300}\x{301}
    A\x{300}\x{301}A\x{300}\x{301}\=ph
Partial match: A\x{300}\x{301}A\x{300}\x{301}

/^\X+/utf
    AA\=ps
 0: AA
    AA\=ph
Partial match: AA

/^\X+?Z/utf
    AA\=ps
Partial match: AA
    AA\=ph
Partial match: AA

/A\x{3a3}B/IBi,utf
------------------------------------------------------------------
        Bra
     /i A
        clist 03a3 03c2 03c3
     /i B
        Ket
        End
------------------------------------------------------------------
Capture group count = 0
Options: caseless utf
First code unit = 'A' (caseless)
Last code unit = 'B' (caseless)
Subject length lower bound = 3

/[\x{3a3}]/Bi,utf
------------------------------------------------------------------
        Bra
        clist 03a3 03c2 03c3
        Ket
        End
------------------------------------------------------------------

/[^\x{3a3}]/Bi,utf
------------------------------------------------------------------
        Bra
        not clist 03a3 03c2 03c3
        Ket
        End
------------------------------------------------------------------

/[\x{3a3}]+/Bi,utf
------------------------------------------------------------------
        Bra
        clist 03a3 03c2 03c3 ++
        Ket
        End
------------------------------------------------------------------

/[^\x{3a3}]+/Bi,utf
------------------------------------------------------------------
        Bra
        not clist 03a3 03c2 03c3 ++
        Ket
        End
------------------------------------------------------------------

/a*\x{3a3}/Bi,utf
------------------------------------------------------------------
        Bra
     /i a*+
        clist 03a3 03c2 03c3
        Ket
        End
------------------------------------------------------------------

/\x{3a3}+a/Bi,utf
------------------------------------------------------------------
        Bra
        clist 03a3 03c2 03c3 ++
     /i a
        Ket
        End
------------------------------------------------------------------

/\x{3a3}*\x{3c2}/Bi,utf
------------------------------------------------------------------
        Bra
        clist 03a3 03c2 03c3 *
        clist 03a3 03c2 03c3
        Ket
        End
------------------------------------------------------------------

/\x{3a3}{3}/i,utf,aftertext
    \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
 0: \x{3a3}\x{3c3}\x{3c2}
 0+ \x{3a3}\x{3c3}\x{3c2}

/\x{3a3}{2,4}/i,utf,aftertext
    \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
 0: \x{3a3}\x{3c3}\x{3c2}\x{3a3}
 0+ \x{3c3}\x{3c2}

/\x{3a3}{2,4}?/i,utf,aftertext
    \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
 0: \x{3a3}\x{3c3}
 0+ \x{3c2}\x{3a3}\x{3c3}\x{3c2}

/\x{3a3}+./i,utf,aftertext
    \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
 0: \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
 0+ 

/\x{3a3}++./i,utf,aftertext
\= Expect no match
    \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
No match

/\x{3a3}*\x{3c2}/Bi,utf
------------------------------------------------------------------
        Bra
        clist 03a3 03c2 03c3 *
        clist 03a3 03c2 03c3
        Ket
        End
------------------------------------------------------------------

/[^\x{3a3}]*\x{3c2}/Bi,utf
------------------------------------------------------------------
        Bra
        not clist 03a3 03c2 03c3 *+
        clist 03a3 03c2 03c3
        Ket
        End
------------------------------------------------------------------

/[^a]*\x{3c2}/Bi,utf
------------------------------------------------------------------
        Bra
     /i [^a]* (not)
        clist 03a3 03c2 03c3
        Ket
        End
------------------------------------------------------------------

/ist/Bi,utf
------------------------------------------------------------------
        Bra
     /i i
        clist 0053 0073 017f
     /i t
        Ket
        End
------------------------------------------------------------------
\= Expect no match
    ikt
No match

/is+t/i,utf
    iSs\x{17f}t
 0: iSs\x{17f}t
\= Expect no match
    ikt
No match

/is+?t/i,utf
\= Expect no match
    ikt
No match

/is?t/i,utf
\= Expect no match
    ikt
No match

/is{2}t/i,utf
\= Expect no match
    iskt
No match

# This property is a PCRE special

/^\p{Xuc}/utf
    $abc
 0: $
    @abc
 0: @
    `abc
 0: `
    \x{1234}abc
 0: \x{1234}
\= Expect no match
    abc
No match

/^\p{Xuc}+/utf
    $@`\x{a0}\x{1234}\x{e000}**
 0: $@`\x{a0}\x{1234}\x{e000}
\= Expect no match
    \x{9f}
No match

/^\p{Xuc}+?/utf
    $@`\x{a0}\x{1234}\x{e000}**
 0: $
\= Expect no match
    \x{9f}
No match

/^\p{Xuc}+?\*/utf
    $@`\x{a0}\x{1234}\x{e000}**
 0: $@`\x{a0}\x{1234}\x{e000}*
\= Expect no match
    \x{9f}
No match

/^\p{Xuc}++/utf
    $@`\x{a0}\x{1234}\x{e000}**
 0: $@`\x{a0}\x{1234}\x{e000}
\= Expect no match
    \x{9f}
No match

/^\p{Xuc}{3,5}/utf
    $@`\x{a0}\x{1234}\x{e000}**
 0: $@`\x{a0}\x{1234}
\= Expect no match
    \x{9f}
No match

/^\p{Xuc}{3,5}?/utf
    $@`\x{a0}\x{1234}\x{e000}**
 0: $@`
\= Expect no match
    \x{9f}
No match

/^[\p{Xuc}]/utf
    $@`\x{a0}\x{1234}\x{e000}**
 0: $
\= Expect no match
    \x{9f}
No match

/^[\p{Xuc}]+/utf
    $@`\x{a0}\x{1234}\x{e000}**
 0: $@`\x{a0}\x{1234}\x{e000}
\= Expect no match
    \x{9f}
No match

/^\P{Xuc}/utf
    abc
 0: a
\= Expect no match
    $abc
No match
    @abc
No match
    `abc
No match
    \x{1234}abc
No match

/^[\P{Xuc}]/utf
    abc
 0: a
\= Expect no match
    $abc
No match
    @abc
No match
    `abc
No match
    \x{1234}abc
No match

# Some auto-possessification tests

/\pN+\z/B
------------------------------------------------------------------
        Bra
        prop N ++
        \z
        Ket
        End
------------------------------------------------------------------

/\PN+\z/B
------------------------------------------------------------------
        Bra
        notprop N ++
        \z
        Ket
        End
------------------------------------------------------------------

/\pN+/B
------------------------------------------------------------------
        Bra
        prop N ++
        Ket
        End
------------------------------------------------------------------

/\PN+/B
------------------------------------------------------------------
        Bra
        notprop N ++
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        AllAny+
        AllAny
        AllAny+
        []
        AllAny+
        prop Lc
        AllAny+
        prop L
        AllAny+
        prop Lu
        AllAny+
        prop Han
        AllAny+
        prop Xan
        AllAny+
        prop Xsp
        AllAny+
        prop Xps
        prop Xwd +
        AllAny
        AllAny+
        prop Xuc
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        prop Lc +
        AllAny
        prop Lc +
        prop Lc
        notprop Lc ++
        prop Lc
        prop Lc +
        prop L
        prop Lc +
        prop Lu
        prop Lc +
        prop Han
        prop Lc +
        prop Xan
        prop Lc ++
        notprop Xan
        prop Lc ++
        prop Xsp
        prop Lc ++
        prop Xps
        prop Xwd +
        prop Lc
        prop Lc +
        prop Xuc
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        prop N +
        AllAny
        prop N +
        prop Lc
        prop N ++
        prop L
        prop N +
        notprop L
        prop N ++
        notprop N
        prop N ++
        prop Lu
        prop N +
        prop Han
        prop N +
        prop Xan
        prop N ++
        prop Xsp
        prop N ++
        prop Xps
        prop Xwd +
        prop N
        prop N +
        prop Xuc
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        prop Lu +
        AllAny
        prop Lu +
        prop Lc
        prop Lu +
        prop L
        prop Lu +
        prop Lu
        notprop Lu ++
        prop Lu
        prop Lu ++
        prop Nd
        prop Lu +
        notprop Nd
        prop Lu +
        prop Han
        prop Lu +
        prop Xan
        prop Lu ++
        prop Xsp
        prop Lu ++
        prop Xps
        prop Xwd +
        prop Lu
        prop Lu +
        prop Xuc
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        prop Han +
        prop Lu
        prop Han +
        prop Lc
        prop Han +
        prop L
        prop Han +
        prop Lu
        prop Han ++
        prop Arabic
        prop Arabic +
        prop Arabic
        prop Han +
        prop Xan
        prop Han +
        prop Xsp
        prop Han +
        prop Xps
        prop Xwd +
        prop Han
        prop Han +
        prop Xuc
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        prop Xan +
        AllAny
        prop Xan +
        prop Lc
        notprop Xan ++
        prop Lc
        prop Xan +
        prop L
        prop Xan +
        prop Lu
        prop Xan +
        prop Han
        prop Xan +
        prop Xan
        prop Xan ++
        notprop Xan
        prop Xan ++
        prop Xsp
        prop Xan ++
        prop Xps
        prop Xwd +
        prop Xan
        prop Xan +
        prop Xuc
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        prop Xsp +
        AllAny
        prop Xsp ++
        prop Lc
        prop Xsp ++
        prop L
        prop Xsp ++
        prop Lu
        prop Xsp +
        prop Han
        prop Xsp ++
        prop Xan
        prop Xsp +
        prop Xsp
        notprop Xsp ++
        prop Xsp
        prop Xsp +
        prop Xps
        prop Xwd ++
        prop Xsp
        prop Xsp +
        prop Xuc
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        prop Xwd +
        AllAny
        prop Xwd +
        prop Lc
        prop Xwd +
        prop L
        prop Xwd +
        prop Lu
        prop Xwd +
        prop Han
        prop Xwd +
        prop Xan
        prop Xwd ++
        prop Xsp
        prop Xwd ++
        prop Xps
        prop Xwd +
        prop Xwd
        prop Xwd ++
        notprop Xwd
        prop Xwd +
        prop Xuc
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        prop Xuc +
        AllAny
        prop Xuc +
        prop Lc
        prop Xuc +
        prop L
        prop Xuc +
        prop Lu
        prop Xuc +
        prop Han
        prop Xuc +
        prop Xan
        prop Xuc +
        prop Xsp
        prop Xuc +
        prop Xps
        prop Xwd +
        prop Xuc
        prop Xuc +
        prop Xuc
        prop Xuc ++
        notprop Xuc
        Ket
        End
------------------------------------------------------------------

/\p{N}+\p{Ll} \p{N}+\p{Nd} \p{N}+\P{Nd}/Bx,ucp
------------------------------------------------------------------
        Bra
        prop N ++
        prop Ll
        prop N +
        prop Nd
        prop N +
        notprop Nd
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        prop Xan +
        prop L
        prop Xan +
        prop N
        prop Xan ++
        prop C
        prop Xan +
        notprop L
        notprop Xan ++
        prop N
        prop Xan +
        notprop C
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        prop L +
        prop Xan
        prop N +
        prop Xan
        prop C ++
        prop Xan
        notprop L +
        prop Xan
        prop N +
        prop Xan
        notprop C +
        prop Xan
        prop L ++
        notprop Xan
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        prop Xan +
        prop Lu
        prop Xan +
        prop Nd
        prop Xan ++
        prop Cc
        prop Xan +
        notprop Ll
        notprop Xan ++
        prop No
        prop Xan +
        notprop Cf
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        prop Lu +
        prop Xan
        prop Nd +
        prop Xan
        prop Cs ++
        prop Xan
        notprop Lt +
        prop Xan
        prop Nl +
        prop Xan
        notprop Cc +
        prop Xan
        prop Lt ++
        notprop Xan
        Ket
        End
------------------------------------------------------------------

/\w+\p{P} \w+\p{Po} \w+\s \p{Xan}+\s \s+\p{Xan} \s+\w/Bx,ucp
------------------------------------------------------------------
        Bra
        prop Xwd +
        prop P
        prop Xwd +
        prop Po
        prop Xwd ++
        prop Xsp
        prop Xan ++
        prop Xsp
        prop Xsp ++
        prop Xan
        prop Xsp ++
        prop Xwd
        Ket
        End
------------------------------------------------------------------

/\w+\P{P} \W+\p{Po} \w+\S \P{Xan}+\s \s+\P{Xan} \s+\W/Bx,ucp
------------------------------------------------------------------
        Bra
        prop Xwd +
        notprop P
        notprop Xwd +
        prop Po
        prop Xwd +
        notprop Xsp
        notprop Xan +
        prop Xsp
        prop Xsp +
        notprop Xan
        prop Xsp +
        notprop Xwd
        Ket
        End
------------------------------------------------------------------

/\w+\p{Po} \w+\p{Pc} \W+\p{Po} \W+\p{Pc} \w+\P{Po} \w+\P{Pc}/Bx,ucp
------------------------------------------------------------------
        Bra
        prop Xwd +
        prop Po
        prop Xwd ++
        prop Pc
        notprop Xwd +
        prop Po
        notprop Xwd +
        prop Pc
        prop Xwd +
        notprop Po
        prop Xwd +
        notprop Pc
        Ket
        End
------------------------------------------------------------------

/\p{Nl}+\p{Xan} \P{Nl}+\p{Xan} \p{Nl}+\P{Xan} \P{Nl}+\P{Xan}/Bx,ucp
------------------------------------------------------------------
        Bra
        prop Nl +
        prop Xan
        notprop Nl +
        prop Xan
        prop Nl ++
        notprop Xan
        notprop Nl +
        notprop Xan
        Ket
        End
------------------------------------------------------------------

/\p{Xan}+\p{Nl} \P{Xan}+\p{Nl} \p{Xan}+\P{Nl} \P{Xan}+\P{Nl}/Bx,ucp
------------------------------------------------------------------
        Bra
        prop Xan +
        prop Nl
        notprop Xan ++
        prop Nl
        prop Xan +
        notprop Nl
        notprop Xan +
        notprop Nl
        Ket
        End
------------------------------------------------------------------

/\p{Xan}+\p{Nd} \P{Xan}+\p{Nd} \p{Xan}+\P{Nd} \P{Xan}+\P{Nd}/Bx,ucp
------------------------------------------------------------------
        Bra
        prop Xan +
        prop Nd
        notprop Xan ++
        prop Nd
        prop Xan +
        notprop Nd
        notprop Xan +
        notprop Nd
        Ket
        End
------------------------------------------------------------------

# End auto-possessification tests

/\w+/B,utf,ucp,auto_callout
------------------------------------------------------------------
        Bra
        Callout 255 0 3
        prop Xwd ++
        Callout 255 3 0
        Ket
        End
------------------------------------------------------------------
    abcd
--->abcd
 +0 ^        \w+
 +3 ^   ^    End of pattern
 0: abcd

/[\p{N}]?+/B,no_auto_possess
------------------------------------------------------------------
        Bra
        [\p{N}]?+
        Ket
        End
------------------------------------------------------------------

/[\p{L}ab]{2,3}+/B,no_auto_possess
------------------------------------------------------------------
        Bra
        [A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff\p{L}]{2,3}+
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        \D+
        extuni
        \d+
        extuni
        \S+
        extuni
        \s+
        extuni
        \W+
        extuni
        \w+
        extuni
        \R+
        extuni
        \H+
        extuni
        \h+
        extuni
        \V+
        extuni
        \v+
        extuni
        a+
        extuni
        \x0a+
        extuni
        Any+
        extuni
        Ket
        End
------------------------------------------------------------------

/.+\X/Bsx
------------------------------------------------------------------
        Bra
        AllAny+
        extuni
        Ket
        End
------------------------------------------------------------------

/\X+$/Bmx
------------------------------------------------------------------
        Bra
        extuni+
     /m $
        Ket
        End
------------------------------------------------------------------

/\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
------------------------------------------------------------------
        Bra
        extuni+
        \D
        extuni+
        \d
        extuni+
        \S
        extuni+
        \s
        extuni+
        \W
        extuni+
        \w
        extuni+
        Any
        extuni+
        \R
        extuni+
        \H
        extuni+
        \h
        extuni+
        \V
        extuni+
        \v
        extuni+
        extuni
        extuni+
        \Z
        extuni++
        \z
        extuni+
        $
        Ket
        End
------------------------------------------------------------------

/\d+\s{0,5}=\s*\S?=\w{0,4}\W*/B,utf,ucp
------------------------------------------------------------------
        Bra
        prop Nd ++
        prop Xsp {0,5}+
        =
        prop Xsp *+
        notprop Xsp ?
        =
        prop Xwd {0,4}+
        notprop Xwd *+
        Ket
        End
------------------------------------------------------------------

/[RST]+/Bi,utf,ucp
------------------------------------------------------------------
        Bra
        [R-Tr-t\x{17f}]++
        Ket
        End
------------------------------------------------------------------

/[R-T]+/Bi,utf,ucp
------------------------------------------------------------------
        Bra
        [R-Tr-t\x{17f}]++
        Ket
        End
------------------------------------------------------------------

/[Q-U]+/Bi,utf,ucp
------------------------------------------------------------------
        Bra
        [Q-Uq-u\x{17f}]++
        Ket
        End
------------------------------------------------------------------

/^s?c/Iim,utf
Capture group count = 0
Options: caseless multiline utf
First code unit at start or follows newline
Last code unit = 'c' (caseless)
Subject length lower bound = 1
    scat
 0: sc

/\X?abc/utf,no_start_optimize
    \xff\x7f\x00\x00\x03\x00\x41\xcc\x80\x41\x{300}\x61\x62\x63\x00\=no_utf_check,offset=06
 0: A\x{300}abc

/\x{100}\x{200}\K\x{300}/utf,startchar
    \x{100}\x{200}\x{300}
 0: \x{100}\x{200}\x{300}
    ^^^^^^^^^^^^^^

# Test UTF characters in a substitution

/ábc/utf,replace=XሴZ
    123ábc123
 1: 123X\x{1234}Z123

/(?<=abc)(|def)/g,utf,replace=<$0>
    123abcáyzabcdef789abcሴqr
 4: 123abc<>\x{e1}yzabc<><def>789abc<>\x{1234}qr

/[A-`]/iB,utf
------------------------------------------------------------------
        Bra
        [A-z\x{17f}\x{212a}]
        Ket
        End
------------------------------------------------------------------
    abcdefghijklmno
 0: a

/(?<=\K\x{17f})/g,utf,aftertext,allow_lookaround_bsk
    \x{17f}\x{17f}\x{17f}\x{17f}\x{17f}
 0: \x{17f}
 0+ \x{17f}\x{17f}\x{17f}\x{17f}
 0: \x{17f}
 0+ \x{17f}\x{17f}\x{17f}
 0: \x{17f}
 0+ \x{17f}\x{17f}
 0: \x{17f}
 0+ \x{17f}
 0: \x{17f}
 0+ 

/(?<=\K\x{17f})/altglobal,utf,aftertext,allow_lookaround_bsk
    \x{17f}\x{17f}\x{17f}\x{17f}\x{17f}
 0: \x{17f}
 0+ \x{17f}\x{17f}\x{17f}\x{17f}
 0: \x{17f}
 0+ \x{17f}\x{17f}\x{17f}
 0: \x{17f}
 0+ \x{17f}\x{17f}
 0: \x{17f}
 0+ \x{17f}
 0: \x{17f}
 0+ 

"\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"
Failed: error 122 at offset 1227: unmatched closing parenthesis

/$(&.+[\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'})*?/

"(*UTF)(*UCP)(.UTF).+X(\V+;\^(\D|)!999}(?(?C{7(?C')\H*\S*/^\x5\xa\\xd3\x85n?(;\D*(?m).[^mH+((*UCP)(*U:F)})(?!^)(?'"
Failed: error 162 at offset 113: subpattern name expected

/[\pS#moq]/
    =
 0: =

/(*:a\x{12345}b\t(d\)c)xxx/utf,alt_verbnames,mark
    cxxxz
 0: xxx
MK: a\x{12345}b\x{09}(d)c

/abcd/utf,replace=x\x{824}y\o{3333}z(\Q12\$34$$\x34\E5$$),substitute_extended
    abcd
 1: x\x{824}y\x{6db}z(12\$34$$\x345$)

/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
    a\x{e0}\x{101}\x{c0}\x{102}
 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

/((?<digit>\d)|(?<letter>\p{L}))/g,substitute_extended,replace=<${digit:+digit; :not digit; }${letter:+letter:not a letter}>
    ab12cde
 7: <not digit; letter><not digit; letter><digit; not a letter><digit; not a letter><not digit; letter><not digit; letter><not digit; letter>

/(*UCP)(*UTF)[[:>:]]X/B
------------------------------------------------------------------
        Bra
        \b (ucp)
        Assert back
        Reverse
        prop Xwd
        Ket
        X
        Ket
        End
------------------------------------------------------------------

/abc/utf,replace=xyz
    abc\=zero_terminate
 1: xyz

/a[[:punct:]b]/ucp,bincode
------------------------------------------------------------------
        Bra
        a
        [!-/:-@[-`b{-~\xa1\xa7\xab\xb6\xb7\xbb\xbf[:punct:]]
        Ket
        End
------------------------------------------------------------------

/a[[:punct:]b]/utf,ucp,bincode
------------------------------------------------------------------
        Bra
        a
        [!-/:-@[-`b{-~\xa1\xa7\xab\xb6\xb7\xbb\xbf[:punct:]]
        Ket
        End
------------------------------------------------------------------

/a[b[:punct:]]/utf,ucp,bincode
------------------------------------------------------------------
        Bra
        a
        [!-/:-@[-`b{-~\xa1\xa7\xab\xb6\xb7\xbb\xbf[:punct:]]
        Ket
        End
------------------------------------------------------------------

/[[:^ascii:]]/utf,ucp,bincode
------------------------------------------------------------------
        Bra
        [^\x00-\x7f]
        Ket
        End
------------------------------------------------------------------

/[[:^ascii:]\w]/utf,ucp,bincode
------------------------------------------------------------------
        Bra
        [^\x00-/:-@[-^`{-\x7f]
        Ket
        End
------------------------------------------------------------------

/[\w[:^ascii:]]/utf,ucp,bincode
------------------------------------------------------------------
        Bra
        [^\x00-/:-@[-^`{-\x7f]
        Ket
        End
------------------------------------------------------------------

/[^[:ascii:]\W]/utf,ucp,bincode
------------------------------------------------------------------
        Bra
        [^\x00-\xa9\xab-\xb1\xb4\xb6-\xb8\xbb\xbf\xd7\xf7\P{Xwd}]
        Ket
        End
------------------------------------------------------------------
    \x{de}
 0: \x{de}
    \x{200}
 0: \x{200}
\= Expect no match
    \x{589}
No match
    \x{37e}
No match

/[[:^ascii:]a]/utf,ucp,bincode
------------------------------------------------------------------
        Bra
        [^\x00-`b-\x7f]
        Ket
        End
------------------------------------------------------------------

/L(?#(|++<!(2)?/B,utf,no_auto_possess,auto_callout
------------------------------------------------------------------
        Bra
        Callout 255 0 14
        L?
        Callout 255 14 0
        Ket
        End
------------------------------------------------------------------

/L(?#(|++<!(2)?/B,utf,ucp,auto_callout
------------------------------------------------------------------
        Bra
        Callout 255 0 14
        L?+
        Callout 255 14 0
        Ket
        End
------------------------------------------------------------------

/(*UTF)C\x09((?<!'(?x)!*H? #\xcc\x9a[^$]/
Failed: error 114 at offset 39: missing closing parenthesis

/[\D]/utf
    \x{1d7cf}
 0: \x{1d7cf}

/[\D\P{Nd}]/utf
    \x{1d7cf}
 0: \x{1d7cf}

/[^\D]/utf
    a9b
 0: 9
\= Expect no match
    \x{1d7cf}
No match

/[^\D\P{Nd}]/utf
    a9b
 0: 9
\= Expect no match
    \x{1d7cf}
No match
    \x{10000}
No match

# Hex uses pattern length, not zero-terminated. This tests for overrunning
# the given length of a pattern.

/'(*UTF)'/hex

/'#('/hex,extended,utf

/a(?<=A\XB)/utf
Failed: error 125 at offset 1: length of lookbehind assertion is not limited

/../utf,auto_callout
    \n\x{123}\x{123}\x{123}\x{123}
--->\x{0a}\x{123}\x{123}\x{123}\x{123}
 +0 ^                                      .
 +0       ^                                .
 +1       ^      ^                         .
 +2       ^             ^                  End of pattern
 0: \x{123}\x{123}

# This tests processing wide characters in extended mode.

/XȀ/x,utf

# These three test a bug fix that was not clearing up after a locale setting
# when the test or a subsequent one matched a wide character.

//locale=C

/[\P{Yi}]/utf
\x{2f000}
 0: \x{2f000}

/[\P{Yi}]/utf,locale=C
\x{2f000}
 0: \x{2f000}

/^(?<!(?=􃡜))/B,utf
------------------------------------------------------------------
        Bra
        ^
        Assert back not
        Assert
        \x{10385c}
        Ket
        Ket
        Ket
        End
------------------------------------------------------------------

# Horizontal and vertical space lists ignore caseless

/[\HH]/Bi,utf
------------------------------------------------------------------
        Bra
        [\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}]
        Ket
        End
------------------------------------------------------------------

/[^\HH]/Bi,utf
------------------------------------------------------------------
        Bra
        [^\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}]
        Ket
        End
------------------------------------------------------------------

//g,utf
    \=zero_terminate
 0: 

/^(?1)\p{Nd}{3}(a)/
    a123a
 0: a123a
 1: a

/\p{Nd}{0,3}[\pL](*:abc)(?C1)xxx/callout_info
Callout 1  x

# ---------------------------------------------------------------------------

# A bunch of tests that hit lines of code that others do not (at least when
# these were created).

/^[^a]{3,}?x/i,utf,no_start_optimize,no_auto_possess
\= Expect no match
    bbb
No match
    cc
No match

/^[ac]{3,}?x/i,utf,no_start_optimize,no_auto_possess
\= Expect no match
    aaa\x{100}
No match

/^X\X/no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X\p{L&}+?/no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X\p{L}+?/no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X\p{Lu}+?/no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X\p{Arabic}+?/no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X\p{Xan}+?/ucp,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X\s+?/ucp,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match
    XX
No match

/^X\S+?/ucp,no_start_optimize,no_auto_possess
    XX
 0: XX
\= Expect no match
    X
No match

/^X\w+?/ucp,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X[^\x{b5}]+?/i,utf,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X[\x{b5}]+?/i,utf,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X\p{Xuc}+?/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X.+?Z/s,utf,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X\R+?/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X\H+?/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X\V+?/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X\s+?/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match
    XX
No match

/^X\S+?/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match

/^X\p{Any}{1,3}?Z/s,no_start_optimize,no_auto_possess
    XYYYZ
 0: XYYYZ
\= Expect no match
    XY
No match
    XYY
No match
    XYYY
No match
    XYYYYZ
No match

/^X\p{L&}{1,3}?Z/s,no_start_optimize,no_auto_possess
\= Expect no match
    XY
No match
    XY!
No match

/^X\p{L}{1,3}?Z/s,no_start_optimize,no_auto_possess
\= Expect no match
    XY
No match
    XY!
No match

/^X\p{Lu}{1,3}?Z/s,no_start_optimize,no_auto_possess
\= Expect no match
    XY
No match
    XY!
No match

/^X\P{Han}{1,3}?Z/s,utf,no_start_optimize,no_auto_possess
\= Expect no match
    XY
No match
    XY!
No match
    XY\x{2f00}!
No match

/^X\p{Xan}{1,3}?Z/s,no_start_optimize,no_auto_possess
\= Expect no match
    XY
No match
    XY!
No match

/^X\p{Xsp}{1,3}?Z/s,no_start_optimize,no_auto_possess
\= Expect no match
    X\n
No match
    X\n!
No match
    X\n\n! 
No match

/^X\P{Xsp}{1,3}?Z/s,no_start_optimize,no_auto_possess
\= Expect no match
    XYY\n
No match

/^X\p{Xwd}{1,3}?Z/s,no_start_optimize,no_auto_possess
\= Expect no match
    XY
No match
    XY!
No match
    XYY! 
No match

/^X\x{b5}+?Z/i,utf,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match
    X\x{b5} 
No match
    X\x{b5}\x{b5}Y 
No match

/^X\p{Xuc}+?Z/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match
    X$
No match
    X@@Y  
No match

/(*CRLF)^X.+?Z/utf,no_start_optimize,no_auto_possess
\= Expect partial match
    XYY\r\=ph 
Partial match: XYY\x{0d}
\= Expect no match
    X
No match

/^X.+?Z/s,utf,no_start_optimize,no_auto_possess
\= Expect no match
    X
No match
    XYY 
No match

/^X\R+?Z/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X\nX
No match
    X\n\rX
No match
    X\n\r\nX
No match
    X\n\n
No match
    X\n\x{0c}    
No match

/(*BSR_ANYCRLF)^X\R+?Z/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X\nX
No match
    X\n\rX
No match
    X\n\r\nX
No match
    X\n\n
No match
    X\n\x{0c}    
No match

/^X\H+?Z/utf,no_start_optimize,no_auto_possess
\= Expect no match
    XY\t
No match
    XYY 
No match

/^X\h+?Z/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X\t\t
No match
    X\tY
No match

/^X\V+?Z/utf,no_start_optimize,no_auto_possess
\= Expect no match
    XY\n
No match
    XYY 
No match

/^X\v+?Z/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X\n\n
No match
    X\nY
No match

/^X\D+?Z/utf,no_start_optimize,no_auto_possess
\= Expect no match
    XY9
No match
    XYY 
No match

/^X\d+?Z/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X99
No match
    X9Y
No match

/^X\S+?Z/utf,no_start_optimize,no_auto_possess
\= Expect no match
    XY\n
No match
    XYY 
No match

/^X\s+?Z/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X\n\n
No match
    X\nY
No match

/^X\W+?Z/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X.A
No match
    X++ 
No match

/^X\p{L&}{1,3}Z/no_start_optimize,no_auto_possess
\= Expect no match
    XY
No match
    XY!
No match

/^X\p{L}{1,3}Z/no_start_optimize,no_auto_possess
\= Expect no match
    XY
No match

/^X\p{Xan}{1,3}Z/no_start_optimize,no_auto_possess
\= Expect no match
    XY
No match

/^X\P{Xsp}{1,3}Z/no_start_optimize,no_auto_possess
\= Expect no match
    XYY
No match

/^X\p{Xuc}+Z/utf,no_start_optimize,no_auto_possess
\= Expect no match
    X$
No match

# ----------------------------------------------------------------------
# These test the dangerous PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL option.

/\x{d800}/B,utf,bad_escape_is_literal
------------------------------------------------------------------
        Bra
        x{d800}
        Ket
        End
------------------------------------------------------------------

/\ud800/B,utf,alt_bsux,bad_escape_is_literal
------------------------------------------------------------------
        Bra
        ud800
        Ket
        End
------------------------------------------------------------------

# ----------------------------------------------------------------------

/Aሴ+B/literal,utf,no_utf_check
    Aሴ+B
 0: A\x{1234}+B
    
# These are here because I upgraded to Unicode 10.0.0 before Perl did, so it
# doesn't recognize all these scripts. In time these three tests can be moved
# to test 4.

/^(\p{Adlam}+)(\p{Bhaiksuki}+)(\p{Marchen}+)(\p{Newa}+)(\p{Osage}+)
  (\p{Tangut}+)(\p{Masaram_Gondi}+)(\p{Nushu}+)(\p{Soyombo}+)
  (\p{Zanabazar_Square}+)/x,utf
    \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} 
 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}
 1: \x{1e900}\x{1e924}\x{1e953}
 2: \x{11c00}\x{11c2d}\x{11c3e}
 3: \x{11c70}\x{11c77}\x{11cab}
 4: \x{11400}\x{1142f}\x{11455}
 5: \x{104b0}\x{104d8}\x{104fb}
 6: \x{16fe0}\x{18800}\x{18af2}
 7: \x{11d00}\x{11d3a}\x{11d59}
 8: \x{16fe1}\x{1b170}\x{1b2fb}
 9: \x{11a50}\x{11a58}\x{11aa2}
10: \x{11a00}\x{11a07}\x{11a47}

/^\x{1E900}\x{104B0}/i,utf
    \x{1E900}\x{104B0}
 0: \x{1e900}\x{104b0}
    \x{1E922}\x{104D8}
 0: \x{1e922}\x{104d8}
    
/^(?:(\X)(?C))+$/utf
    \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 
Callout 0: last capture = 1
 1: \x{1e900}
Callout 0: last capture = 1
 1: \x{1e924}
Callout 0: last capture = 1
 1: \x{1e953}
Callout 0: last capture = 1
 1: \x{11c00}
Callout 0: last capture = 1
 1: \x{11c2d}\x{11c3e}
Callout 0: last capture = 1
 1: \x{11c70}
Callout 0: last capture = 1
 1: \x{11c77}\x{11cab}
Callout 0: last capture = 1
 1: \x{11400}
Callout 0: last capture = 1
 1: \x{1142f}
Callout 0: last capture = 1
 1: \x{11455}
Callout 0: last capture = 1
 1: \x{104b0}
Callout 0: last capture = 1
 1: \x{104d8}
Callout 0: last capture = 1
 1: \x{104fb}
Callout 0: last capture = 1
 1: \x{16fe0}
Callout 0: last capture = 1
 1: \x{18800}
Callout 0: last capture = 1
 1: \x{18af2}
Callout 0: last capture = 1
 1: \x{11d00}\x{11d3a}
Callout 0: last capture = 1
 1: \x{11d59}
Callout 0: last capture = 1
 1: \x{16fe1}
Callout 0: last capture = 1
 1: \x{1b170}
Callout 0: last capture = 1
 1: \x{1b2fb}
Callout 0: last capture = 1
 1: \x{11a50}\x{11a58}
Callout 0: last capture = 1
 1: \x{11aa2}
Callout 0: last capture = 1
 1: \x{11a00}\x{11a07}\x{11a47}
 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}
 1: \x{11a00}\x{11a07}\x{11a47}

# Similarly for Unicode 11.0.0

/^(\p{Dogra}+)(\p{Gunjala_Gondi}+)(\p{Hanifi_Rohingya}+)(\p{Makasar}+)
  (\p{Medefaidrin}+)(\p{Old_Sogdian}+)(\p{Sogdian}+)/x,utf
    \x{11800}\x{11da9}\x{10d27}\x{11ee0}\x{16e48}\x{10f27}\x{10f30} 
 0: \x{11800}\x{11da9}\x{10d27}\x{11ee0}\x{16e48}\x{10f27}\x{10f30}
 1: \x{11800}
 2: \x{11da9}
 3: \x{10d27}
 4: \x{11ee0}
 5: \x{16e48}
 6: \x{10f27}
 7: \x{10f30}

# Regional indicators

/^(\X)(\X)/utf,aftertext
    \x{1F1E6}\x{1F1E7}\x{1F1E7}B
 0: \x{1f1e6}\x{1f1e7}\x{1f1e7}
 0+ B
 1: \x{1f1e6}\x{1f1e7}
 2: \x{1f1e7}
    \x{1F1E6}\x{1F1E7}\x{1F1E7}\x{1F1E6}B
 0: \x{1f1e6}\x{1f1e7}\x{1f1e7}\x{1f1e6}
 0+ B
 1: \x{1f1e6}\x{1f1e7}
 2: \x{1f1e7}\x{1f1e6}
    
# More differences from Perl

/^\p{Common}/utf
    \x{60c}
 0: \x{60c}
    \x{61f}  
 0: \x{61f}
    \x{964}
 0: \x{964}
    \x{965}  
 0: \x{965}

/^\p{Inherited}/utf
    \x{64b}
 0: \x{64b}
    \x{654}
 0: \x{654}
    \x{655}
 0: \x{655}
    \x{1D1AA} 
 0: \x{1d1aa}

/\N{U+}/
Failed: error 193 at offset 2: \N{U+dddd} is supported only in Unicode (UTF) mode

/\N{U+}/utf
Failed: error 178 at offset 5: digits missing after \x or in \x{} or \o{} or \N{U+}

/\N{U}/
Failed: error 137 at offset 2: PCRE2 does not support \F, \L, \l, \N{name}, \U, or \u

# This tests the non-UTF Unicode NEL pattern whitespace character, only
# recognized by PCRE2 with /x when there is Unicode support.

/A      

B/x
    AB 
 0: AB
    
# This tests Unicode Pattern White Space characters in verb names when they
# are being processed with PCRE2_EXTENDED. Note: there are UTF-8 characters
# with code points greater than 255 between A, B, and C in the pattern.

/(*: A‎B C)abc/x,utf,mark,alt_verbnames
    abc
 0: abc
MK: ABC
    
# Script run tests: auto-possessification

/^(*sr:.*)/B,utf 
------------------------------------------------------------------
        Bra
        ^
        Script run
        Any*
        Ket
        Ket
        End
------------------------------------------------------------------
    paypаl.com   A classic example of why script run checks are a good thing
 0: payp

/^(*sr:.*(*ACCEPT))/utf 
    paypаl.com   But *ACCEPT breaks things
 0: payp\x{430}l.com   But *ACCEPT breaks things

/^(*sr:\x{2e80}*)/B,utf
------------------------------------------------------------------
        Bra
        ^
        Script run
        \x{2e80}*+
        Ket
        Ket
        End
------------------------------------------------------------------

/^(*sr:\x{2e80}*)\x{2e80}/B,utf
------------------------------------------------------------------
        Bra
        ^
        Script run
        \x{2e80}*
        Ket
        \x{2e80}
        Ket
        End
------------------------------------------------------------------

/(?<!)(*sr:)/B
------------------------------------------------------------------
        Bra
        Assert back not
        Ket
        Script run
        Ket
        Ket
        End
------------------------------------------------------------------

/(?<=abc(?=X(*sr:BXY)CCC)XBXYCCC)./B
------------------------------------------------------------------
        Bra
        Assert back
        Reverse
        abc
        Assert
        X
        Script run
        BXY
        Ket
        CCC
        Ket
        XBXYCCC
        Ket
        Any
        Ket
        End
------------------------------------------------------------------
   abcXBXYCCC!
 0: !

# Some script run patterns are broken in Perl 5.28.0. These can be moved into
# test 4 when a mended version of Perl is released.

/^(*sr:.{4})/utf
    \x{0980}12\x{0993}     Bengali Common-digits Bengali
 0: \x{980}12\x{993}
    \x{0780}12\x{07b1}     Thaana Common-digits Thaana
 0: \x{780}12\x{7b1}
    \x{0e01}12\x{0e5b}     Thai Common-digits Thai
 0: \x{e01}12\x{e5b}
    \x{1780}12\x{19ff}     Khmer Common-digits Khmer
 0: \x{1780}12\x{19ff}
    \x{0904}12\x{0939}     Devanagari Common-digits Devanagari
 0: \x{904}12\x{939}
    A\x{ff10}\x{ff19}B     Latin Common-notascii-digits Latin 
 0: A\x{ff10}\x{ff19}B
    A\x{1d7ce}\x{1d7cf}B   Latin fancy-common-digits Latin
 0: A\x{1d7ce}\x{1d7cf}B
    
# These ones involve non-ASCII but nevertheless Common digits. As of October
# 2018 even blead Perl wasn't handling all of these - but is going to. 

/^(*sr:.{4})/utf
    A\x{ff10}\x{ff19}B     Latin Common-notascii-digits Latin 
 0: A\x{ff10}\x{ff19}B
    \x{ff10}\x{ff19}..     Common-notascii-digits Common Common
 0: \x{ff10}\x{ff19}..
    A\x{ff10}BC            Latin Common-notascii-digit Latin Latin
 0: A\x{ff10}BC
    A\x{1d7ce}\x{1d7cf}B   Latin fancy-common-digits Latin
 0: A\x{1d7ce}\x{1d7cf}B
    \x{1d7ce}\x{1d7cf},,   fancy-common-digits Common Common
 0: \x{1d7ce}\x{1d7cf},,
    A\x{1d7ce}BC           Latin fancy-common-digit Latin Latin
 0: A\x{1d7ce}BC
    
# Some Unicode 12.1.0 new script characters

/\p{Elymaic}\p{Nandinagari}\p{Nyiakeng_Puachue_Hmong}\p{Wancho}/utf
    \x{10fe5}\x{119AC}\x{1E10E}\x{1E2D1} 
 0: \x{10fe5}\x{119ac}\x{1e10e}\x{1e2d1}

# Some Unicode 13.0.0 new script characters

/\p{Chorasmian}\p{Dives_Akuru}\p{Khitan_Small_Script}\p{Yezidi}/utf
    \x{10FB0}\x{11900}\x{18B00}\x{10E80}
 0: \x{10fb0}\x{11900}\x{18b00}\x{10e80}

# ------- 

# Test reference and errors in non-ASCII characters in group names

/(?'𑠅ABC'...)/I,utf
Capture group count = 1
Named capture groups:
  𑠅ABC   1
Options: utf
Subject length lower bound = 3
   abcde\=copy=𑠅ABC
 0: abc
 1: abc
  C abc (3) 𑠅ABC (group 1)

# Bad ones

/(?'AB၌C'...)\g{AB၌C}/utf
Failed: error 142 at offset 5: syntax error in subpattern name (missing terminator?)

/(?'٠ABC'...)/utf
Failed: error 144 at offset 3: subpattern name must start with a non-digit

/(?'²ABC'...)/utf
Failed: error 162 at offset 3: subpattern name expected

/(?'X²ABC'...)/utf
Failed: error 142 at offset 4: syntax error in subpattern name (missing terminator?)

# -------

/\p{Any}*xyz/I
Capture group count = 0
Compile options: <none>
Overall options: anchored
Last code unit = 'z'
Subject length lower bound = 3

/(|)7/caseless,ucp

/(\xc1)\1/i,ucp
    \xc1\xe1\=no_jit
 0: \xc1\xe1
 1: \xc1
    
/\p{L&}+\p{bidi_control}/B
------------------------------------------------------------------
        Bra
        prop Lc +
        prop Bidicontrol
        Ket
        End
------------------------------------------------------------------

/\p{bidi_control}+\p{L&}/B
------------------------------------------------------------------
        Bra
        prop Bidicontrol +
        prop Lc
        Ket
        End
------------------------------------------------------------------

/\p{han}/B
------------------------------------------------------------------
        Bra
        prop Han
        Ket
        End
------------------------------------------------------------------

/\p{script:han}/B
------------------------------------------------------------------
        Bra
        prop script:Han
        Ket
        End
------------------------------------------------------------------

/\p{sc:han}/B
------------------------------------------------------------------
        Bra
        prop script:Han
        Ket
        End
------------------------------------------------------------------

/\p{script extensions:han}/B
------------------------------------------------------------------
        Bra
        prop Han
        Ket
        End
------------------------------------------------------------------

/\p{scx:han}/B
------------------------------------------------------------------
        Bra
        prop Han
        Ket
        End
------------------------------------------------------------------

# Test error - invalid script name

/\p{sc:L}/
Failed: error 147 at offset 8: unknown property after \P or \p

# Some Boolean property tests that differ from Perl

/\p{emojimodifierbase}\p{ebase}/g,utf
    >AN<>\x{261d}\x{1faf6}<>yz<
 0: \x{261d}\x{1faf6}

/\p{graphemelink}\p{grlink}/g,utf
    >AN<>\x{11d97}\x{94d}<>yz<
 0: \x{11d97}\x{94d}
 
/\p{soft dotted}\p{sd}/g,utf
    >AF23<>\x{1df1a}\x{69}<>yz<
 0: \x{1df1a}i
    
# ------------------------------------------------ 

/\p{\2b[:xigi:t:_/
Failed: error 146 at offset 10: malformed \P or \p sequence

# Tests for PCRE2_EXTRA_CASELESS_RESTRICT. Compare each test with and without
# the restriction.

/AskZ/i,utf,caseless_restrict
    AskZ
 0: AskZ
    aSKz
 0: aSKz
\= Expect no match
    A\x{17f}kZ
No match
    As\x{212a}Z      
No match

/AskZ/i,utf
    AskZ
 0: AskZ
    aSKz
 0: aSKz
    A\x{17f}kZ
 0: A\x{17f}kZ
    As\x{212a}Z      
 0: As\x{212a}Z

/A\x{17f}\x{212a}Z/ir,utf
    \= Expect no match
    AskZ
No match

/A\x{17f}\x{212a}Z/i,utf
    AskZ
 0: AskZ

/[AskZ]+/i,utf,caseless_restrict
    AskZ
 0: AskZ
    aSKz 
 0: aSKz
    A\x{17f}kZ
 0: A
    As\x{212a}Z      
 0: As

/[AskZ]+/i,utf
    AskZ
 0: AskZ
    aSKz 
 0: aSKz
    A\x{17f}kZ
 0: A\x{17f}kZ
    As\x{212a}Z      
 0: As\x{212a}Z

/[\x{17f}\x{212a}]+/ir,utf
\= Expect no match
    AskZ
No match

/[\x{17f}\x{212a}]+/i,utf
    AskZ
 0: sk

/[^s]+/ir,utf
    A\x{17f}Z 
 0: A\x{17f}Z

/[^s]+/i,utf
    A\x{17f}Z 
 0: A

/[^k]+/ir,utf
    A\x{212a}Z 
 0: A\x{212a}Z
    
/[^k]+/i,utf
    A\x{212a}Z 
 0: A
    
/[^sk]+/ir,utf
    A\x{17f}\x{212a}Z 
 0: A\x{17f}\x{212a}Z

/[^sk]+/i,utf
    A\x{17f}\x{212a}Z 
 0: A

/[^\x{17f}]+/ir,utf
    AsSZ 
 0: AsSZ

/[^\x{17f}]+/i,utf
    AsSZ 
 0: A

/[Ss]+/irB,utf
------------------------------------------------------------------
        Bra
     /i S++
        Ket
        End
------------------------------------------------------------------
    Sss\x{17f}ss
 0: Sss

/[Ss]+/iB,utf
------------------------------------------------------------------
        Bra
        [Ss\x{17f}]++
        Ket
        End
------------------------------------------------------------------
    Sss\x{17f}ss
 0: Sss\x{17f}ss

/[S\x{17f}]/irB,utf
------------------------------------------------------------------
        Bra
        [Ss\x{17f}]
        Ket
        End
------------------------------------------------------------------

/[S\x{17f}]/iB,utf
------------------------------------------------------------------
        Bra
        [Ss\x{17f}]
        Ket
        End
------------------------------------------------------------------

/[\x{17f}s]/irB,utf
------------------------------------------------------------------
        Bra
        [Ss\x{17f}]
        Ket
        End
------------------------------------------------------------------

/[\x{17f}s]/iB,utf
------------------------------------------------------------------
        Bra
        [Ss\x{17f}]
        Ket
        End
------------------------------------------------------------------

/[\x{4b}\x{6b}]/irB,utf
------------------------------------------------------------------
        Bra
     /i K
        Ket
        End
------------------------------------------------------------------

/[\x{4b}\x{6b}]/iB,utf
------------------------------------------------------------------
        Bra
        [Kk\x{212a}]
        Ket
        End
------------------------------------------------------------------

/s(?r)s(?-r)s(?r:s)s/i,utf
    \x{17f}S\x{17f}S\x{17f}
 0: \x{17f}S\x{17f}S\x{17f}
\= Expect no match     
    \x{17f}\x{17f}\x{17f}S\x{17f}
No match
    \x{17f}S\x{17f}\x{17f}\x{17f}
No match

/k(?^i)k/ir,utf
    K\x{212a}
 0: K\x{212a}
\= Expect no match          
    \x{212a}\x{212a}
No match

/[sk](?r:[sk])[sk]/Bi,utf
------------------------------------------------------------------
        Bra
        [KSks\x{17f}\x{212a}]
        Bra
        [KSks]
        Ket
        [KSks\x{17f}\x{212a}]
        Ket
        End
------------------------------------------------------------------
    SKS
 0: SKS
    sks
 0: sks
    \x{212a}S\x{17f}
 0: \x{212a}S\x{17f}
    \x{17f}K\x{212a}
 0: \x{17f}K\x{212a}
\= Expect no match
    s\x{212a}s
No match
    K\x{17f}K
No match

/(.) \1/i,utf,caseless_restrict
    s S
 0: s S
 1: s
    k K
 0: k K
 1: k
\= Expect no match
    s \x{17f}
No match
    k \x{212a}
No match

/(.) (?r:\1)/i,utf
    s S
 0: s S
 1: s
    k K
 0: k K
 1: k
\= Expect no match
    s \x{17f}
No match
    k \x{212a}
No match

/(.) \1/i,utf
    s S
 0: s S
 1: s
    k K
 0: k K
 1: k
    s \x{17f}
 0: s \x{17f}
 1: s
    k \x{212a}
 0: k \x{212a}
 1: k

/(?:(?<A>ss)|(?<A>kk)) \k<A>/i,utf,dupnames,caseless_restrict
    sS Ss
 0: sS Ss
 1: sS
    kK Kk
 0: kK Kk
 1: <unset>
 2: kK
\= Expect no match
    sS \x{17f}s
No match
    kK \x{212a}k
No match

/(?:(?<A>ss)|(?<A>kk)) \k<A>/i,utf,dupnames
    sS Ss
 0: sS Ss
 1: sS
    kK Kk
 0: kK Kk
 1: <unset>
 2: kK
    sS \x{17f}s
 0: sS \x{17f}s
 1: sS
    kK \x{212a}k
 0: kK \x{212a}k
 1: <unset>
 2: kK

/(?:(?<A>s)|(?<A>k)) \k<A>{3,}!/i,utf,dupnames,caseless_restrict
    s SsSs!
 0: s SsSs!
 1: s
    k KkKk!
 0: k KkKk!
 1: <unset>
 2: k
\= Expect no match
    s \x{17f}sSs\x{17f}!
No match
    k \x{212a}kKk\x{212a}!
No match

/(?:(?<A>s)|(?<A>k)) \k<A>{3,}!/i,utf,dupnames
    s SsSs!
 0: s SsSs!
 1: s
    k KkKk!
 0: k KkKk!
 1: <unset>
 2: k
    s \x{17f}sSs\x{17f}!
 0: s \x{17f}sSs\x{17f}!
 1: s
    k \x{212a}kKk\x{212a}!
 0: k \x{212a}kKk\x{212a}!
 1: <unset>
 2: k

# End caseless restrict tests

# TESTS for PCRE2_EXTRA_TURKISH_CASING - again, tests with and without.

/i/i,utf
    i
 0: i
    I
 0: I
\= Expect no match
    \x{0130}
No match
    \x{0131}
No match

/i/i,utf,turkish_casing
    i
 0: i
    \x{0130}
 0: \x{130}
\= Expect no match
    I
No match
    \x{0131}
No match

/I/i,utf
    i
 0: i
    I
 0: I
\= Expect no match
    \x{0130}
No match
    \x{0131}
No match

/I/i,utf,turkish_casing
    I
 0: I
    \x{0131}
 0: \x{131}
\= Expect no match
    i
No match
    \x{0130}
No match

/\x{0130}/i,utf
    \x{0130}
 0: \x{130}
\= Expect no match
    i
No match
    I
No match
    \x{0131}
No match

/\x{0130}/i,utf,turkish_casing
    i
 0: i
    \x{0130}
 0: \x{130}
\= Expect no match
    I
No match
    \x{0131}
No match

/\x{0131}/i,utf
    \x{0131}
 0: \x{131}
\= Expect no match
    i
No match
    I
No match
    \x{0130}
No match

/\x{0131}/i,utf,turkish_casing
    I
 0: I
    \x{0131}
 0: \x{131}
\= Expect no match
    i
No match
    \x{0130}
No match

/[i]/i,utf
    i
 0: i
    I
 0: I
\= Expect no match
    \x{0130}
No match
    \x{0131}
No match

/[i]/i,utf,turkish_casing
    i
 0: i
    \x{0130}
 0: \x{130}
\= Expect no match
    I
No match
    \x{0131}
No match

/[^i]/i,utf
    \x{0130}
 0: \x{130}
    \x{0131}
 0: \x{131}
\= Expect no match
    i
No match
    I
No match

/[^i]/i,utf,turkish_casing
    I
 0: I
    \x{0131}
 0: \x{131}
\= Expect no match
    i
No match
    \x{0130}
No match

/[\x{0130}]/i,utf
    \x{0130}
 0: \x{130}
\= Expect no match
    i
No match
    I
No match
    \x{0131}
No match

/[\x{0130}]/i,utf,turkish_casing
    i
 0: i
    \x{0130}
 0: \x{130}
\= Expect no match
    I
No match
    \x{0131}
No match

/[\x{0120}-\x{0130}]/i,utf
    \x{0130}
 0: \x{130}
\= Expect no match
    i
No match
    I
No match
    \x{0131}
No match

/[\x{0120}-\x{0130}]/i,utf,turkish_casing
    i
 0: i
    \x{0130}
 0: \x{130}
\= Expect no match
    I
No match
    \x{0131}
No match

/[zi]/i,utf
    i
 0: i
    I
 0: I
\= Expect no match
    \x{0130}
No match
    \x{0131}
No match

/[zi]/i,utf,turkish_casing
    i
 0: i
    \x{0130}
 0: \x{130}
\= Expect no match
    I
No match
    \x{0131}
No match

/[z\x{0130}]/i,utf
    \x{0130}
 0: \x{130}
\= Expect no match
    i
No match
    I
No match
    \x{0131}
No match

/[z\x{0130}]/i,utf,turkish_casing
    i
 0: i
    \x{0130}
 0: \x{130}
\= Expect no match
    I
No match
    \x{0131}
No match

/[iI]/i,utf
    i
 0: i
    I
 0: I
\= Expect no match
    \x{0130}
No match
    \x{0131}
No match

/[iI]/i,utf,turkish_casing
    i
 0: i
    I
 0: I
    \x{0130}
 0: \x{130}
    \x{0131}
 0: \x{131}

/[i\x{0130}]/i,utf
    i
 0: i
    I
 0: I
    \x{0130}
 0: \x{130}
\= Expect no match
    \x{0131}
No match

/[i\x{0130}]/i,utf,turkish_casing
    i
 0: i
    \x{0130}
 0: \x{130}
\= Expect no match
    I
No match
    \x{0131}
No match

/(.) \1/i,utf
    i I
 0: i I
 1: i
\= Expect no match
    i \x{0130}
No match
    \x{0131} I
No match

/(*TURKISH_CASING)(.) \1/i,utf
    i \x{0130}
 0: i \x{130}
 1: i
    \x{0131} I
 0: \x{131} I
 1: \x{131}
\= Expect no match
    i I
No match

/(.) \1/i,utf,turkish_casing
    i \x{0130}
 0: i \x{130}
 1: i
    \x{0131} I
 0: \x{131} I
 1: \x{131}
\= Expect no match
    i I
No match

/i/i,utf,caseless_restrict,turkish_casing
Failed: error 206 at offset 0: PCRE2_EXTRA_TURKISH_CASING and PCRE2_EXTRA_CASELESS_RESTRICT are not compatible

/i/i,turkish_casing
Failed: error 204 at offset 0: PCRE2_EXTRA_TURKISH_CASING require Unicode (UTF or UCP) mode

/i/i,utf,caseless_restrict
    i
 0: i

/i/i,ucp,caseless_restrict
    i
 0: i

/b(?r:[\x{00FF}-\x{FFEE}])/i,utf,turkish_casing
    b\x{0130}
 0: b\x{130}
    b\x{0131}
 0: b\x{131}
\= Expect no match
    bi
No match
    bI
No match
    bk
No match

/[\x60-\x7f]/i,ucp
    i
 0: i
    I
 0: I

/[\x60-\xc0]/i,ucp
    i
 0: i
    I
 0: I

/[\x80-\xc0]/i,ucp
\= Expect no match
    i
No match
    I
No match

# End Turkish casing tests

# TESTS for PCRE2_EXTRA_ASCII_xxx - again, tests with and without.

# DIGITS

/\d+/i,utf
    123\x{660}456
 0: 123

/\d+/i,utf,ucp
    123\x{660}456
 0: 123\x{660}456

/\d+/i,utf,ucp,ascii_bsd
    123\x{660}456
 0: 123

/[\d]+/i,utf
    123\x{660}456
 0: 123

/[\d]+/i,utf,ucp
    123\x{660}456
 0: 123\x{660}456

/[\d]+/i,utf,ucp,ascii_bsd
    123\x{660}456
 0: 123

/\d(?aD)\d(?-aD)\d/utf,ucp
    \x{660}9\x{660}
 0: \x{660}9\x{660}
\= Expect no match     
    \x{660}\x{660}\x{660}
No match

/\d(?-aD)\d(?aD)\d/utf,ucp,ascii_bsd
    999
 0: 999
    9\x{660}9
 0: 9\x{660}9

/\d(?a)\d(?-a)\d/utf,ucp
    \x{660}9\x{660}
 0: \x{660}9\x{660}
\= Expect no match     
    \x{660}\x{660}\x{660}
No match

/\d(?-aD)\d(?aD)\d/utf,ucp,ascii_bsd
    999
 0: 999
    9\x{660}9
 0: 9\x{660}9

# SPACES

/>\s+</i,utf
    >  <
 0: >  <
\= Expect no match     
    >\x{a0} <
No match

/>\s+</i,utf,ucp
    >  <
 0: >  <
    >\x{a0} <
 0: >\x{a0} <

/>\s+</i,utf,ucp,ascii_bss
    >  <
 0: >  <
\= Expect no match     
    >\x{a0} <
No match

/>[\s]+</i,utf
    >  <
 0: >  <
\= Expect no match     
    >\x{a0} <
No match

/>[\s]+</i,utf,ucp
    >  <
 0: >  <
    >\x{a0} <
 0: >\x{a0} <

/>[\s]+</i,utf,ucp,ascii_bss
    >  <
 0: >  <
\= Expect no match     
    >\x{a0} <
No match

/>\s(?aS)\s(?-aS)\s</utf,ucp
    >\x{a0} \x{a0}<
 0: >\x{a0} \x{a0}<
\= Expect no match     
    >\x{a0}\x{a0}\x{a0}<
No match

/>\s(?a)\s(?-a)\s</utf,ucp
    >\x{a0} \x{a0}<
 0: >\x{a0} \x{a0}<
\= Expect no match     
    >\x{a0}\x{a0}\x{a0}<
No match
    
# WORDS

/\w+/i,utf
    123\x{660}abc
 0: 123

/\w+/i,utf,ucp
    123\x{660}abc
 0: 123\x{660}abc

/\w+/i,utf,ucp,ascii_bsw
    123\x{660}abc
 0: 123

/[\w]+/i,utf
    123\x{660}abc
 0: 123

/[\w]+/i,utf,ucp
    123\x{660}abc
 0: 123\x{660}abc

/[\w]+/i,utf,ucp,ascii_bsw
    123\x{660}abc
 0: 123

/\w(?aW)\w(?-aW)\w/utf,ucp
    \x{660}A\x{c0}
 0: \x{660}A\x{c0}
\= Expect no match     
    \x{660}\x{c0}\x{c0}
No match

/\w(?a)\w(?-a)\w/utf,ucp
    \x{660}A\x{c0}
 0: \x{660}A\x{c0}
\= Expect no match     
    \x{660}\x{c0}\x{c0}
No match
    
# WORD BOUNDARY

/\bABC\b/utf
    \x{c0}ABC\x{d0}
 0: ABC

/\bABC\b/utf,ucp
\= Expect no match
    \x{c0}ABC\x{d0}
No match

/\bABC\b/utf,ucp,ascii_bsw
    \x{c0}ABC\x{d0}
 0: ABC

/\bABC\b/utf,ucp,ascii_all
    \x{c0}ABC\x{d0}
 0: ABC
    
# POSIX 

/^[[:digit:]]+$/utf,ucp
    123456
 0: 123456
    123\x{660}456
 0: 123\x{660}456

/^[[:digit:]]+$/utf,ucp,ascii_digit
    123456
 0: 123456
\= Expect no match
    123\x{660}456
No match

/[[:digit:]]+/g,utf,ucp,ascii_digit
    123\x{660}456
 0: 123
 0: 456

/(?-aT)[[:digit:]](?aT)[[:digit:]]/utf,ucp,ascii_digit
    11
 0: 11
    \x{ff11}1
 0: \x{ff11}1
\= Expect no match
    1\x{ff11}
No match

/(?-aT:[[:digit:]])[[:digit:]]/utf,ucp,ascii_digit
    11
 0: 11
    \x{ff11}1
 0: \x{ff11}1
\= Expect no match
    1\x{ff11}
No match

/(?-aT:[[:digit:]])[[:digit:]]/utf,never_ucp,ascii_digit
    11
 0: 11
\= Expect no match
    \x{ff11}1
No match
    1\x{ff11}
No match

/[[:digit:]]+/utf,ucp,ascii_posix
    123\x{660}456
 0: 123

/(?-aP)[[:digit:]](?aP)[[:digit:]]/utf,ucp,ascii_posix
    11
 0: 11
    \x{ff11}1
 0: \x{ff11}1
\= Expect no match
    1\x{ff11}
No match

/(?-aP:[[:digit:]])[[:digit:]]/utf,ucp,ascii_posix
    11
 0: 11
    \x{ff11}1
 0: \x{ff11}1
\= Expect no match
    1\x{ff11}
No match

/(?-a:[[:digit:]])[[:digit:]]/a,utf,ucp
    11
 0: 11
    \x{ff11}1
 0: \x{ff11}1
\= Expect no match
    1\x{ff11}
No match

/^[[:xdigit:]]+$/utf,ucp
    f0
 0: f0
    1A
 0: 1A
    d\x{ff10}
 0: d\x{ff10}
    \x{ff26}8
 0: \x{ff26}8
\= Expect no match
    8g\=no_jit
No match

/^[[:xdigit:]]+$/utf,ucp,ascii_digit
    f0
 0: f0
    1A
 0: 1A
\= Expect no match
    d\x{ff10}
No match
    \x{ff26}8
No match
    8g
No match

/>[[:space:]]+</utf,ucp
    >\x{a0} \x{a0}<
 0: >\x{a0} \x{a0}<
    >\x{a0}\x{a0}\x{a0}<
 0: >\x{a0}\x{a0}\x{a0}<

/>[[:space:]]+</utf,ucp,ascii_posix
\= Expect no match     
    >\x{a0} \x{a0}<
No match

/(?aP)[[:alnum:]]+/i,ucp,utf
    abcáxyz
 0: abc
    abc\x{660}xyz
 0: abc

/(?aP)[[:alnum:]\d]+/i,ucp,utf
    abc\x{660}xyz
 0: abc\x{660}xyz
    
/(*UCP)(*UTF)[[:alnum:]](?aP:[[:alnum:]])[[:alnum:]]/
    \x{660}A\x{660}
 0: \x{660}A\x{660}
\= Expect no match     
    \x{660}\x{660}\x{660}
No match
    
# VARIOUS

/[\d\s\w]+/a,ucp,utf
    9 A\x{660}À 
 0: 9 A
    9 AÀ\x{660} 
 0: 9 A

# End PCRE2_EXTRA_ASCII_xxx tests

/(?<!(|l ))/utf
    (?<!(|l ))
No match

/\p{  Aሴ}/utf
Failed: error 146 at offset 7: malformed \P or \p sequence

/\p{BC: Aሴ}/utf
Failed: error 146 at offset 9: malformed \P or \p sequence

/\p{BC: A=}/utf
Failed: error 147 at offset 10: unknown property after \P or \p

/abc/utf,substitute_extended,replace=>\777<
    abc
 1: >\x{1ff}<

/a(?<namED_1>b)c/utf,substitute_extended
    abc\=replace=>${namED_1}<
 1: >b<

/a(?<namedverylongbutperfectlylegalsoyoushouldnthaveaproblem_1>b)c/utf,substitute_extended
    abc\=replace=>${namedverylongbutperfectlylegalsoyoushouldnthaveaproblem_1}<
 1: >b<

/a(?<nämed>b)c/utf,substitute_extended
    abc\=replace=>${nämed}<
 1: >b<

/a(?<nämedverylongbutperfectlylegalsoyoushouldnthaveaproblem_٢>b)c/utf,substitute_extended
    abc\=replace=>${nämedverylongbutperfectlylegalsoyoushouldnthaveaproblem_٢}<
 1: >b<

# python_octal

/\400/utf
    \o{400}
 0: \x{100}

/\400/utf,python_octal
Failed: error 202 at offset 4: octal value given by \ddd is greater than \377 (forbidden by PCRE2_EXTRA_PYTHON_OCTAL)

/abc/utf,substitute_extended
    abc\=replace=\400
 1: \x{100}

/abc/utf,substitute_extended,python_octal
    abc\=replace=\400
Failed: error -57 at offset 4 in replacement: bad escape sequence in replacement string

# Character range merging tests

/[\x{1200}\s\x{1202}\d\x{1201}]+/B,utf,ucp
------------------------------------------------------------------
        Bra
        [\p{Xsp}\p{Nd}\x{1200}-\x{1202}]++
        Ket
        End
------------------------------------------------------------------
    \x{11ff}\x{1200}\x{1201}\x{1202}\x{1203}
 0: \x{1200}\x{1201}\x{1202}

/[\x{2000}-\x{2500}\x{2100}-\x{2600}\d\x{1800}-\x{1fff}]+/B,utf,ucp
------------------------------------------------------------------
        Bra
        [\p{Nd}\x{1800}-\x{2600}]++
        Ket
        End
------------------------------------------------------------------
    \x{17ff}\x{1800}\x{2600}\x{2601}
 0: \x{1800}\x{2600}

/[\x{10008}\x{10003}\x{10006}\x{10004}\x{10007}]+/B,utf
------------------------------------------------------------------
        Bra
        [\x{10003}-\x{10004}\x{10006}-\x{10008}]++
        Ket
        End
------------------------------------------------------------------
    \x{10002}\x{10005}\x{10003}\x{10004}\x{10006}\x{10007}\x{10008}\x{10009}
 0: \x{10003}\x{10004}\x{10006}\x{10007}\x{10008}

/[\x{100}-\x{400}]+/Bi,utf
------------------------------------------------------------------
        Bra
        [Ss\xb5\xff\x{100}-\x{400}\x{450}\x{1fbe}\x{1fd3}\x{1fe3}\x{2126}\x{2c62}\x{2c64}-\x{2c66}\x{2c6d}-\x{2c70}\x{2c7e}-\x{2c7f}\x{a78d}\x{a7aa}-\x{a7ae}\x{a7b0}-\x{a7b2}\x{a7c5}\x{a7cb}\x{a7dc}]++
        Ket
        End
------------------------------------------------------------------
    qS\x{ff}\x{100}\x{a7c5}\x{401}
 0: S\x{ff}\x{100}\x{a7c5}
    \x{2c63}\x{2c64}\x{2c65}\x{2c66}\x{2c67}
 0: \x{2c64}\x{2c65}\x{2c66}
    \x{a7af}\x{a7b0}\x{a7b1}\x{a7b2}\x{a7b3}
 0: \x{a7b0}\x{a7b1}\x{a7b2}

/[\x{100}-\x{400}\p{Ll}\x{500}-\x{700}\p{OldHungarian}\x{701}\p{bidiLRI}]/B,utf
------------------------------------------------------------------
        Bra
        [\p{Ll}\p{Oldhungarian}\p{Bidilri}\x{100}-\x{400}\x{500}-\x{701}]
        Ket
        End
------------------------------------------------------------------

/[\pC\x{100}-\x{200}\h\pN]/B,utf
------------------------------------------------------------------
        Bra
        [\x00- 0-9\x7f-\xa0\xad\xb2\xb3\xb9\xbc-\xbe\p{C}\p{N}\x{100}-\x{200}\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}]
        Ket
        End
------------------------------------------------------------------

/[\pC\x{100}-\x{200}\v\pN]/B,utf
------------------------------------------------------------------
        Bra
        [\x00-\x1f0-9\x7f-\x9f\xad\xb2\xb3\xb9\xbc-\xbe\p{C}\p{N}\x{100}-\x{200}\x{2028}-\x{2029}]
        Ket
        End
------------------------------------------------------------------

/[\pC\x{100}-\x{200}\H\pN]/B,utf
------------------------------------------------------------------
        Bra
        [\x00-\x1f!-\x9f\xa1-\xff\p{C}\p{N}\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}]
        Ket
        End
------------------------------------------------------------------

/[\pC\x{100}-\x{200}\V\pN]/B,utf
------------------------------------------------------------------
        Bra
        [\x00-\xff\p{C}\p{N}\x{100}-\x{2027}\x{202a}-\x{10ffff}]
        Ket
        End
------------------------------------------------------------------

/[\x{16e49}-\x{16e4f}\x{20000}\x{16e40}-\x{16e48}\pN]/Bi,utf
------------------------------------------------------------------
        Bra
        [\p{N}\x{16e40}-\x{16e4f}\x{16e60}-\x{16e6f}\x{20000}]
        Ket
        End
------------------------------------------------------------------

/[\x80-\x{4000}\x90\x{400}-\x{f000}\xa0\x{4000}-\x{10ffff}]++/B,utf
------------------------------------------------------------------
        Bra
        [^\x00-\x7f]++
        Ket
        End
------------------------------------------------------------------
    \x{7f}\x{80}\x{100}\x{10fffe}\x{10ffff}\x00
 0: \x{80}\x{100}\x{10fffe}\x{10ffff}

/[\x80-\x{4000}\x90\x{400}-\x{f000}\xa0\pN\x{4000}-\x{10ffff}]++/B,utf
------------------------------------------------------------------
        Bra
        [^\x00-/:-\x7f]++
        Ket
        End
------------------------------------------------------------------
    \x{7f}\x{80}\x{100}090\x{10fffe}\x{10ffff}\x00
 0: \x{80}\x{100}090\x{10fffe}\x{10ffff}

/[\x00-\x{4000}\x{2000}-\x{10ffff}]++/B,utf
------------------------------------------------------------------
        Bra
        AllAny++
        Ket
        End
------------------------------------------------------------------
    abcd
 0: abcd

/[abc\p{Any}]{5,7}/B,utf
------------------------------------------------------------------
        Bra
        AllAny{5}
        AllAny{0,2}+
        Ket
        End
------------------------------------------------------------------
    xyz
No match

/[^\p{Any}\x34\p{Any}]*cat/B,utf
------------------------------------------------------------------
        Bra
        []*+
        cat
        Ket
        End
------------------------------------------------------------------
    cat
 0: cat

/[\pN\xf0-\x{10ffff}]{5,8}/B,utf
------------------------------------------------------------------
        Bra
        [^\x00-/:-\xb1\xb4-\xb8\xba\xbb\xbf-\xef]{5,8}+
        Ket
        End
------------------------------------------------------------------
    ab0123456cd
 0: 0123456

/[\x00-\x{398}\x{39a}-\x{10ffff}]*#(?i)[\x00-\x{398}\x{39a}-\x{10ffff}]*?#/B,utf
------------------------------------------------------------------
        Bra
        [\x00-\xff\x{100}-\x{398}\x{39a}-\x{10ffff}]*
        #
        AllAny*?
     /i #
        Ket
        End
------------------------------------------------------------------
    abcd#efg#
 0: abcd#efg#

# Freeing memory on error test
/[\x{100}-\x{400}][\x{100}-\x{300}][\x{100}-\x{200}]\8/i,utf
Failed: error 115 at offset 52: reference to non-existent subpattern

# Character list tests

/[\x{100}-\x{7fff}\x{d7b0}\x{d7b1}\x{d7b3}\x{d7b4}\x{d7b6}\x{d7b7}\x{d7b9}\x{d7ba}]{12}/B,utf
------------------------------------------------------------------
        Bra
        [\x{100}-\x{7fff}\x{d7b0}-\x{d7b1}\x{d7b3}-\x{d7b4}\x{d7b6}-\x{d7b7}\x{d7b9}-\x{d7ba}]{12,12}+
        Ket
        End
------------------------------------------------------------------
  \x{8000}\x{d7af}\x{d7b2}\x{d7b5}\x{d7b8}\x{d7bb}\x{100}\x{800}\x{7000}\x{7fff}\x{d7b0}\x{d7b1}\x{d7b3}\x{d7b4}\x{d7b6}\x{d7b7}\x{d7b9}\x{d7ba}\x{100}
 0: \x{100}\x{800}\x{7000}\x{7fff}\x{d7b0}\x{d7b1}\x{d7b3}\x{d7b4}\x{d7b6}\x{d7b7}\x{d7b9}\x{d7ba}

/([\x{6535}\x{6536}\x{6538}\x{6539}\x{653b}\x{653c}\x{653e}\x{653f}\x{6541}\x{6542}\x{8000}-\x{ffff}]#)+/B,utf
------------------------------------------------------------------
        Bra
        CBra 1
        [\x{6535}-\x{6536}\x{6538}-\x{6539}\x{653b}-\x{653c}\x{653e}-\x{653f}\x{6541}-\x{6542}\x{8000}-\x{ffff}]
        #
        KetRmax
        Ket
        End
------------------------------------------------------------------
  \x{6534}#\x{6537}#\x{653a}#\x{653d}#\x{6540}#\x{6543}#\x{7fff}#\x{6535}#\x{6536}#\x{6538}#\x{6539}#\x{653b}#\x{653c}#\x{653e}#\x{653f}#\x{6541}#\x{6542}#\x{8000}#\x{c246}#\x{ffff}
 0: \x{6535}#\x{6536}#\x{6538}#\x{6539}#\x{653b}#\x{653c}#\x{653e}#\x{653f}#\x{6541}#\x{6542}#\x{8000}#\x{c246}#
 1: \x{c246}#

/[[:xdigit:]\x{400}-\x{600}]+/utf,ucp
  !a0\x{400}\x{600}9\x{3ff}
 0: a0\x{400}\x{600}9

/[^[:xdigit:]\x{400}-\x{600}]+/utf,ucp
  \x{400}(\x{3ff}\x{601})\x{600}
 0: (\x{3ff}\x{601})

/[[:xdigit:]\x{400}-\x{600}\x{700}]+/utf,ucp
  !A0\x{700}9\x{601}
 0: A0\x{700}9

/[^[:xdigit:]\x{400}-\x{600}\x{700}]+/utf,ucp
  \x{600}(\x{6ff}\x{701}\x{3ff}\x{601})\x{700}
 0: (\x{6ff}\x{701}\x{3ff}\x{601})

/[[:xdigit:]\x{400}-\x{600}\x{700}-\x{800}\x{900}]+/utf,ucp
  !f0\x{800}\x{600}9\x{601}
 0: f0\x{800}\x{600}9

/[^[:xdigit:]\x{400}-\x{600}\x{700}-\x{800}\x{900}]+/utf,ucp
  \x{700}[\x{3ff}\x{601}\x{6ff}\x{801}\x{8ff}\x{901}]\x{900}
 0: [\x{3ff}\x{601}\x{6ff}\x{801}\x{8ff}\x{901}]

/[[:xdigit:]\x{400}-\x{410}\x{500}\x{600}-\x{610}\x{700}\x{800}-\x{810}]+/utf,ucp
  !F0\x{400}\x{410}\x{500}\x{600}\x{610}\x{700}\x{800}\x{810}9\x{7ff}
 0: F0\x{400}\x{410}\x{500}\x{600}\x{610}\x{700}\x{800}\x{810}9

/[^[:xdigit:]\x{400}-\x{410}\x{500}\x{600}-\x{610}\x{700}\x{800}-\x{810}]+/utf,ucp
  \x{800}<\x{3ff}\x{411}\x{4ff}\x{501}\x{5ff}\x{611}\x{6ff}\x{701}\x{7ff}\x{811}>\x{810}
 0: <\x{3ff}\x{411}\x{4ff}\x{501}\x{5ff}\x{611}\x{6ff}\x{701}\x{7ff}\x{811}>

# --------------

# EXTENDED CHARACTER CLASSES (UTS#18)

/[\p{Lu}[\p{Nd}]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{Lu}]
          xclass: [\p{Nd}]
          OR
        ]
        Ket
        End
------------------------------------------------------------------
    0
 0: 0
    C
 0: C
\= Expect no match
    [
No match
    a
No match

/[[\pL][\p{Nd}]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{L}]
          xclass: [\p{Nd}]
          OR
        ]
        Ket
        End
------------------------------------------------------------------
    0
 0: 0
    a
 0: a
\= Expect no match
    [
No match
    ]
No match

/[[\p{Lu}]||[\p{Nd}]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{Lu}]
          xclass: [\p{Nd}]
          OR
        ]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    1
 0: 1
\= Expect no match
    a
No match

/[[^\pL][\p{Nd}]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [^\p{L}]
          xclass: [\p{Nd}]
          OR
        ]
        Ket
        End
------------------------------------------------------------------
    0
 0: 0
    .
 0: .
\= Expect no match
    A
No match

/[^[\pL][\p{Nd}]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [^\p{L}]
          xclass: [^\p{Nd}]
          AND
        ]
        Ket
        End
------------------------------------------------------------------
    .
 0: .
\= Expect no match
    A
No match
    0
No match

/[^[\pL]&&[\p{Nd}]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [^\p{L}]
          xclass: [^\p{Nd}]
          OR
        ]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    0
 0: 0

/[[\p{Lu}\p{Ll}]||[\p{Nd}\p{Ll}]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{Lu}\p{Ll}]
          xclass: [\p{Nd}\p{Ll}]
          OR
        ]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    1
 0: 1
    c
 0: c
\= Expect no match
    _
No match

/[[\p{Lu}\p{Ll}]&&[\p{Nd}\p{Ll}]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{Lu}\p{Ll}]
          xclass: [\p{Nd}\p{Ll}]
          AND
        ]
        Ket
        End
------------------------------------------------------------------
    c
 0: c
\= Expect no match
    A
No match
    1
No match
    _
No match

/[[\p{Lu}\p{Ll}]--[\p{Nd}\p{Ll}]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{Lu}\p{Ll}]
          xclass: [^\p{Nd}\p{Ll}]
          AND
        ]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
\= Expect no match
    1
No match
    c
No match
    _
No match

/[[\p{Lu}\p{Ll}]~~[\p{Nd}\p{Ll}]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{Lu}\p{Ll}]
          xclass: [\p{Nd}\p{Ll}]
          XOR
        ]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    1
 0: 1
\= Expect no match
    c
No match
    _
No match

/[\pL[]]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        [A-Z\]a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff\p{L}]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    ]
 0: ]
\= Expect no match
    [
No match

/[\pL[^]]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        [^\]]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    [
 0: [
    0
 0: 0
\= Expect no match
    ]
No match

/[\pL[]]/B,alt_extended_class,allow_empty_class
------------------------------------------------------------------
        Bra
        [\p{L}]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
\= Expect no match
    ]
No match
    [
No match

/[\pL[^]]/B,alt_extended_class,allow_empty_class
------------------------------------------------------------------
        Bra
        AllAny
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    0
 0: 0
    [
 0: [
    ]
 0: ]

/[\dAC-E[:space:]\p{Lu}&&[^z]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        [\x09-\x0d 0-9A-Z\xc0-\xd6\xd8-\xde\p{Lu}]
        Ket
        End
------------------------------------------------------------------
    0
 0: 0
    A
 0: A
    C
 0: C
    D
 0: D
    E
 0: E
    \t
 0: \x09
\= Expect no match
    a
No match
    ;
No match

/[z||[^\dAC-E[:space:]\p{Lu}]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        [^\x09-\x0d 0-9A-Z\xc0-\xd6\xd8-\xde\p{Lu}]
        Ket
        End
------------------------------------------------------------------
    z
 0: z
    ;
 0: ;
\= Expect no match
    0
No match
    A
No match
    C
No match
    D
No match
    E
No match
    B
No match
    F
No match
    \t
No match

/[\p{Lu}\p{Nd}||cd]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        [0-9A-Zcd\xc0-\xd6\xd8-\xde\p{Lu}\p{Nd}]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    0
 0: 0
    c
 0: c
\= Expect no match
    e
No match

/[[\p{Lu}]\p{Nd}||[c]d]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          bitmap: [0-9A-Zcd\xc0-\xd6\xd8-\xde]
          xclass: [\p{Lu}]
          xclass: [\p{Nd}]
          OR
        ]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    0
 0: 0
    c
 0: c
\= Expect no match
    e
No match

/[\p{Lu}[\p{Nd}]||c[d]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          bitmap: [0-9A-Zcd\xc0-\xd6\xd8-\xde]
          xclass: [\p{Lu}]
          xclass: [\p{Nd}]
          OR
        ]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    0
 0: 0
    c
 0: c
\= Expect no match
    e
No match

/[\p{Lu}-]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        [\-A-Z\xc0-\xd6\xd8-\xde\p{Lu}]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    -
 0: -
\= Expect no match
    a
No match

/[-\p{Lu}]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        [\-A-Z\xc0-\xd6\xd8-\xde\p{Lu}]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    -
 0: -
\= Expect no match
    a
No match

/[\pL-]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        [\-A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff\p{L}]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    -
 0: -
\= Expect no match
    0
No match

/[-\pL]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        [\-A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff\p{L}]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    -
 0: -
\= Expect no match
    0
No match

/[\p{Lu}-]/B
------------------------------------------------------------------
        Bra
        [\-A-Z\xc0-\xd6\xd8-\xde\p{Lu}]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    -
 0: -
\= Expect no match
    a
No match

/[-\p{Lu}]/B
------------------------------------------------------------------
        Bra
        [\-A-Z\xc0-\xd6\xd8-\xde\p{Lu}]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    -
 0: -
\= Expect no match
    a
No match

/[\pL-]/B
------------------------------------------------------------------
        Bra
        [\-A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff\p{L}]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    -
 0: -
\= Expect no match
    0
No match

/[-\pL]/B
------------------------------------------------------------------
        Bra
        [\-A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff\p{L}]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
    -
 0: -
\= Expect no match
    0
No match

/[\p{Lu}-z]/B,alt_extended_class
Failed: error 150 at offset 8: invalid range in character class

/[z-\p{Lu}]/B,alt_extended_class
Failed: error 150 at offset 9: invalid range in character class

/[\pL-z]/B,alt_extended_class
Failed: error 150 at offset 5: invalid range in character class

/[z-\pL]/B,alt_extended_class
Failed: error 150 at offset 6: invalid range in character class

/[\p{Lu}-&&-\pL]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          bitmap: [\-A-Z\xc0-\xd6\xd8-\xde]
          xclass: [\p{Lu}]
          xclass: [\p{L}]
          AND
        ]
        Ket
        End
------------------------------------------------------------------
    -
 0: -
    A
 0: A
\= Expect no match
    a
No match

/[-\p{Lu}&&\pL-]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          bitmap: [\-A-Z\xc0-\xd6\xd8-\xde]
          xclass: [\p{Lu}]
          xclass: [\p{L}]
          AND
        ]
        Ket
        End
------------------------------------------------------------------
    -
 0: -
    A
 0: A
\= Expect no match
    a
No match

/[[\p{Lu}]-&&-[\pL]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          bitmap: [\-A-Z\xc0-\xd6\xd8-\xde]
          xclass: [\p{Lu}]
          xclass: [\p{L}]
          AND
        ]
        Ket
        End
------------------------------------------------------------------
    -
 0: -
    A
 0: A
\= Expect no match
    a
No match

/[-[\p{Lu}]&&[\pL]-]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          bitmap: [\-A-Z\xc0-\xd6\xd8-\xde]
          xclass: [\p{Lu}]
          xclass: [\p{L}]
          AND
        ]
        Ket
        End
------------------------------------------------------------------
    -
 0: -
    A
 0: A
\= Expect no match
    a
No match

/(?xx:[  ^  5[  ^  \p{Nd}]  ])/B,alt_extended_class
------------------------------------------------------------------
        Bra
        Bra
        [0-46-9\p{Nd}]
        Ket
        Ket
        End
------------------------------------------------------------------
    4
 0: 4
\= Expect no match
    a
No match
    ;
No match
    5
No match

/(?xx:[  ^  \p{Nd}[  ^  5]  ])/B,alt_extended_class
------------------------------------------------------------------
        Bra
        Bra
        []
        Ket
        Ket
        End
------------------------------------------------------------------
\= Expect no match
    a
No match
    ;
No match
    4
No match
    5
No match

/(?xx:[  ^  \p{Nd}[  ^  \p{Nd}]  ])/B,alt_extended_class
------------------------------------------------------------------
        Bra
        Bra
        eclass[
          no bitmap
          xclass: [^\p{Nd}]
          xclass: [\p{Nd}]
          AND
        ]
        Ket
        Ket
        End
------------------------------------------------------------------
\= Expect no match
    a
No match
    ;
No match
    4
No match
    5
No match

/[  ^  \p{Ll}[  ^  \p{Nd}]  ]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          bitmap: [ 0-9^a-z\xb5\xdf-\xf6\xf8-\xff]
          xclass: [\p{Ll}]
          xclass: [\p{Nd}]
          OR
        ]
        Ket
        End
------------------------------------------------------------------
    \x20
 0:  
    ^
 0: ^
    a
 0: a
    0
 0: 0
\= Expect no match
    A
No match
    ;
No match

/[a-c--\p{Nd}]+/B,alt_extended_class
------------------------------------------------------------------
        Bra
        [a-c]++
        Ket
        End
------------------------------------------------------------------
    ac
 0: ac
    a
 0: a
\= Expect no match
    0
No match

/[a-c--\p{Nd}]{2,3}/B,alt_extended_class
------------------------------------------------------------------
        Bra
        [a-c]{2,3}+
        Ket
        End
------------------------------------------------------------------
    ac
 0: ac
    cac
 0: cac
\= Expect no match
    a
No match
    00
No match

/x[a-c--\p{Nd}]+y/B,alt_extended_class
------------------------------------------------------------------
        Bra
        x
        [a-c]++
        y
        Ket
        End
------------------------------------------------------------------
    xacy
 0: xacy
    xaay
 0: xaay
    xay
 0: xay
\= Expect no match
    zacy
No match
    xacz
No match
    xy
No match
    x0y
No match

/[\pL--\pL--\pL]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{L}]
          xclass: [^\p{L}]
          AND
          xclass: [^\p{L}]
          AND
        ]
        Ket
        End
------------------------------------------------------------------
\= Expect no match
    A
No match
    1
No match

/[[\pL--\pL]--\pL]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{L}]
          xclass: [^\p{L}]
          AND
          xclass: [^\p{L}]
          AND
        ]
        Ket
        End
------------------------------------------------------------------
\= Expect no match
    A
No match
    1
No match

/[\pL--[\pL--\pL]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{L}]
          xclass: [^\p{L}]
          xclass: [\p{L}]
          OR
          AND
        ]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
\= Expect no match
    1
No match

/[\pL--^\p{Nd}]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          bitmap: [A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff]
          xclass: [\p{L}]
          xclass: [^\p{Nd}]
          AND
        ]
        Ket
        End
------------------------------------------------------------------
    A
 0: A
\= Expect no match
    1
No match
    ^
No match

/([a-z--[\pL&&n]])\1/B,alt_extended_class
------------------------------------------------------------------
        Bra
        CBra 1
        [a-mo-z]
        Ket
        \1
        Ket
        End
------------------------------------------------------------------
    aa
 0: aa
 1: a
    zz
 0: zz
 1: z
\= Expect no match
    az
No match
    nn
No match

/(x[a-z--[\pL&&n]]y)\1/B,alt_extended_class
------------------------------------------------------------------
        Bra
        CBra 1
        x
        [a-mo-z]
        y
        Ket
        \1
        Ket
        End
------------------------------------------------------------------
    xayxay
 0: xayxay
 1: xay
    xzyxzy
 0: xzyxzy
 1: xzy
\= Expect no match
    xnyxny
No match

/(?:_\1|([a-z--[\pL&&n]])){2}/B,alt_extended_class
------------------------------------------------------------------
        Bra
        Bra
        _
        \1
        Alt
        CBra 1
        [a-mo-z]
        Ket
        Ket
        Bra
        _
        \1
        Alt
        CBra 1
        [a-mo-z]
        Ket
        Ket
        Ket
        End
------------------------------------------------------------------
    a_a
 0: a_a
 1: a
    z_z
 0: z_z
 1: z
\= Expect no match
    a_z
No match
    n_n
No match

/(?:_\1|([a-z--[\pL&&n]]))+/B,alt_extended_class
------------------------------------------------------------------
        Bra
        Bra
        _
        \1
        Alt
        CBra 1
        [a-mo-z]
        Ket
        KetRmax
        Ket
        End
------------------------------------------------------------------
    a_a
 0: a_a
 1: a
    z_z
 0: z_z
 1: z
    a_partial
 0: a
 1: a
\= Expect no match
    n_n
No match

/[\p{Nd}||[\pL--\p{Lu}]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{Nd}]
          xclass: [\p{L}]
          xclass: [^\p{Lu}]
          AND
          OR
        ]
        Ket
        End
------------------------------------------------------------------
    a
 0: a
    0
 0: 0
\= Expect no match
    C
No match

/[\P{Nd}||2]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        [\x00-/2:-\xff\P{Nd}]
        Ket
        End
------------------------------------------------------------------
    _
 0: _
    Z
 0: Z
    2
 0: 2
\= Expect no match
    1
No match
    3
No match

/[^[\P{Nd}]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        [^\P{Nd}]
        Ket
        End
------------------------------------------------------------------
    1
 0: 1
    2
 0: 2
\= Expect no match
    _
No match
    z
No match

# caseless tests

/[\p{Lu}~~\p{Ll}]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{Lu}]
          xclass: [\p{Ll}]
          XOR
        ]
        Ket
        End
------------------------------------------------------------------
    a
 0: a
    A
 0: A
\= Expect no match
    _
No match
    1
No match

/[[\p{Lu}1]~~\p{Ll}]/iB,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          bitmap: [1]
          xclass: [\p{Lc}]
          xclass: [\p{Lc}]
          XOR
        ]
        Ket
        End
------------------------------------------------------------------
    1
 0: 1
\= Expect no match
    a
No match
    A
No match
    _
No match

/[[\p{Lu}1]&&[\p{Ll}1]]/B,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          bitmap: [1]
          xclass: [\p{Lu}]
          xclass: [\p{Ll}]
          AND
        ]
        Ket
        End
------------------------------------------------------------------
    1
 0: 1
\= Expect no match
    a
No match
    A
No match
    _
No match
    2
No match

/[[\p{Lu}1]&&[\p{Ll}1]]/iB,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          bitmap: [1A-Za-z\xb5\xc0-\xd6\xd8-\xf6\xf8-\xff]
          xclass: [\p{Lc}]
          xclass: [\p{Lc}]
          AND
        ]
        Ket
        End
------------------------------------------------------------------
    a
 0: a
    A
 0: A
    1
 0: 1
\= Expect no match
    _
No match
    2
No match
    \
No match

/[\p{Thai}&&\p{Nd}]/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]
        Ket
        End
------------------------------------------------------------------
    \x{0e51}
 0: \x{e51}
\= Expect no match
    0
No match
    a
No match
    \x{0e01}
No match

/[\p{Thai}||\p{Nd}]/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          OR
        ]
        Ket
        End
------------------------------------------------------------------
    \x{0e51}
 0: \x{e51}
    \x{0e01}
 0: \x{e01}
    0
 0: 0
\= Expect no match
    a
No match

/[\p{Thai}~~\p{Nd}]/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          XOR
        ]
        Ket
        End
------------------------------------------------------------------
    \x{0e01}
 0: \x{e01}
    0
 0: 0
\= Expect no match
    \x{0e51}
No match
    a
No match

/[[\p{Thai}&&\p{Nd}]~~[^a]]/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        eclass[
          bitmap: [^a]
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
          NOT
        ]
        Ket
        End
------------------------------------------------------------------
    \x{0e01}
 0: \x{e01}
    b
 0: b
    0
 0: 0
\= Expect no match
    a
No match
    \x{0e51}
No match

/^[\p{Thai}&&\p{Nd}]?$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]?
        $
        Ket
        End
------------------------------------------------------------------
    \x{0e51}
 0: \x{e51}
    \
 0: 
\= Expect no match
    a
No match

/^[\p{Thai}&&\p{Nd}]??$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]??
        $
        Ket
        End
------------------------------------------------------------------
    \x{0e51}
 0: \x{e51}
    \
 0: 
\= Expect no match
    a
No match

/^[\p{Thai}&&\p{Nd}]?+$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]?+
        $
        Ket
        End
------------------------------------------------------------------
    \x{0e51}
 0: \x{e51}
    \
 0: 
\= Expect no match
    a
No match

/^[\p{Thai}&&\p{Nd}]{3}$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]{3,3}
        $
        Ket
        End
------------------------------------------------------------------
    \x{0e51}\x{0e51}\x{0e51}
 0: \x{e51}\x{e51}\x{e51}
\= Expect no match
    \x{0e51}
No match
    \
No match
    a
No match

/^[\p{Thai}&&\p{Nd}]{3,}$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]{3,}
        $
        Ket
        End
------------------------------------------------------------------
    \x{0e51}\x{0e51}\x{0e51}\x{0e51}
 0: \x{e51}\x{e51}\x{e51}\x{e51}
    \x{0e51}\x{0e51}\x{0e51}
 0: \x{e51}\x{e51}\x{e51}
\= Expect no match
    \x{0e51}
No match
    \
No match
    a
No match

/^[\p{Thai}&&\p{Nd}]{3,}?$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]{3,}?
        $
        Ket
        End
------------------------------------------------------------------
    \x{0e51}\x{0e51}\x{0e51}\x{0e51}
 0: \x{e51}\x{e51}\x{e51}\x{e51}
    \x{0e51}\x{0e51}\x{0e51}
 0: \x{e51}\x{e51}\x{e51}
\= Expect no match
    \x{0e51}
No match
    \
No match
    a
No match

/^[\p{Thai}&&\p{Nd}]{3,}+$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]{3,}+
        $
        Ket
        End
------------------------------------------------------------------
    \x{0e51}\x{0e51}\x{0e51}\x{0e51}
 0: \x{e51}\x{e51}\x{e51}\x{e51}
    \x{0e51}\x{0e51}\x{0e51}
 0: \x{e51}\x{e51}\x{e51}
\= Expect no match
    \x{0e51}
No match
    \
No match
    a
No match

/^[\p{Thai}&&\p{Nd}]{,3}$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]{0,3}
        $
        Ket
        End
------------------------------------------------------------------
    \
 0: 
    \x{0e51}
 0: \x{e51}
    \x{0e51}\x{0e51}\x{0e51}
 0: \x{e51}\x{e51}\x{e51}
\= Expect no match
    \x{0e51}\x{0e51}\x{0e51}\x{0e51}
No match
    a
No match

/^[\p{Thai}&&\p{Nd}]{,3}?$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]{0,3}?
        $
        Ket
        End
------------------------------------------------------------------
    \
 0: 
    \x{0e51}
 0: \x{e51}
    \x{0e51}\x{0e51}\x{0e51}
 0: \x{e51}\x{e51}\x{e51}
\= Expect no match
    \x{0e51}\x{0e51}\x{0e51}\x{0e51}
No match
    a
No match

/^[\p{Thai}&&\p{Nd}]{,3}+$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]{0,3}+
        $
        Ket
        End
------------------------------------------------------------------
    \
 0: 
    \x{0e51}
 0: \x{e51}
    \x{0e51}\x{0e51}\x{0e51}
 0: \x{e51}\x{e51}\x{e51}
\= Expect no match
    \x{0e51}\x{0e51}\x{0e51}\x{0e51}
No match
    a
No match

/^[\p{Thai}&&\p{Nd}]+\x{0e51}$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]+
        \x{e51}
        $
        Ket
        End
------------------------------------------------------------------
    \x{0e51}\x{0e51}
 0: \x{e51}\x{e51}
    \x{0e51}\x{0e51}\x{0e51}
 0: \x{e51}\x{e51}\x{e51}
\= Expect no match
    \x{0e51}
No match
    \
No match
    a
No match

/^[\p{Thai}&&\p{Nd}]+?\x{0e51}$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]+?
        \x{e51}
        $
        Ket
        End
------------------------------------------------------------------
    \x{0e51}\x{0e51}
 0: \x{e51}\x{e51}
    \x{0e51}\x{0e51}\x{0e51}
 0: \x{e51}\x{e51}\x{e51}
\= Expect no match
    \x{0e51}
No match
    \
No match
    a
No match

/^[\p{Thai}&&\p{Nd}]++\x{0e51}$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]++
        \x{e51}
        $
        Ket
        End
------------------------------------------------------------------
\= Expect no match
    \x{0e51}
No match
    \x{0e51}\x{0e51}
No match
    \x{0e51}\x{0e51}\x{0e51}
No match
    \
No match
    a
No match

/^[\p{Thai}&&\p{Nd}]*\x{0e51}$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]*
        \x{e51}
        $
        Ket
        End
------------------------------------------------------------------
    \x{0e51}
 0: \x{e51}
    \x{0e51}\x{0e51}
 0: \x{e51}\x{e51}
    \x{0e51}\x{0e51}\x{0e51}
 0: \x{e51}\x{e51}\x{e51}
\= Expect no match
    \
No match
    a
No match

/^[\p{Thai}&&\p{Nd}]*?\x{0e51}$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]*?
        \x{e51}
        $
        Ket
        End
------------------------------------------------------------------
    \x{0e51}
 0: \x{e51}
    \x{0e51}\x{0e51}
 0: \x{e51}\x{e51}
    \x{0e51}\x{0e51}\x{0e51}
 0: \x{e51}\x{e51}\x{e51}
\= Expect no match
    \
No match
    a
No match

/^[\p{Thai}&&\p{Nd}]*+\x{0e51}$/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        ^
        eclass[
          no bitmap
          xclass: [\p{Thai}]
          xclass: [\p{Nd}]
          AND
        ]*+
        \x{e51}
        $
        Ket
        End
------------------------------------------------------------------
\= Expect no match
    \x{0e51}
No match
    \x{0e51}\x{0e51}
No match
    \x{0e51}\x{0e51}\x{0e51}
No match
    \
No match
    a
No match

/[^[^\p{Thai}]]/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        [\p{Thai}]
        Ket
        End
------------------------------------------------------------------
    \x{0e51}
 0: \x{e51}
\= Expect no match
    a
No match

/[^[^\p{L}]]/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        [\p{L}]
        Ket
        End
------------------------------------------------------------------
    \x{0e01}
 0: \x{e01}
    a
 0: a
\= Expect no match
    0
No match

/[\pL&&[^\x00-\xFF]]/B,utf,alt_extended_class
------------------------------------------------------------------
        Bra
        [\p{L}]
        Ket
        End
------------------------------------------------------------------
    \x{21e}
 0: \x{21e}
\= Expect no match
    a
No match

/[\pL&&\x{100}-\x{1000}]{3,6}+/utf,alt_extended_class
    \x{145}\x{18b}A\x{145}\x{18b}\x{1C2}\x{21a}\x{257}\x{2ae}\x{0145}\x{18b}
 0: \x{145}\x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}
    \x{145}A\x{145}\x{18b}\x{1C2}B
 0: \x{145}\x{18b}\x{1c2}

/[\pL&&\x{100}-\x{1000}]{3,6}\x{2A3}/utf,alt_extended_class
    \x{145}\x{18b}\x{2a3}A\x{145}\x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{2a3}
 0: \x{145}\x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{2a3}
    \x{145}\x{2a3}A\x{145}\x{18b}\x{1c2}\x{2a3}
 0: \x{145}\x{18b}\x{1c2}\x{2a3}
    \x{2a3}A\x{145}\x{18b}\x{1c2}\x{2a3}\x{2a3}
 0: \x{145}\x{18b}\x{1c2}\x{2a3}\x{2a3}
    \x{0145}\x{18b}\x{2a3}A\x{145}\x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{145}\x{2a3}
 0: \x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{145}\x{2a3}

/[\pL&&\x{100}-\x{1000}]{3,6}?\x{2A3}/utf,alt_extended_class
    \x{145}\x{18b}\x{2a3}A\x{145}\x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{2a3}
 0: \x{145}\x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{2a3}
    \x{145}\x{2a3}A\x{145}\x{18b}\x{1c2}\x{2a3}
 0: \x{145}\x{18b}\x{1c2}\x{2a3}
    \x{2a3}A\x{145}\x{18b}\x{1c2}\x{2a3}\x{2a3}
 0: \x{145}\x{18b}\x{1c2}\x{2a3}
    \x{0145}\x{18b}\x{2a3}A\x{145}\x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{145}\x{2a3}
 0: \x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{145}\x{2a3}

/[\P{scx=Beng}\P{scx=Deva}\pM--[\x{2000}-\x{3000}]]+/utf,alt_extended_class
    \x{964}\x{2000}\x{3000}A\x{951}\x{1fff}\x{3001}\x{965}
 0: A\x{951}\x{1fff}\x{3001}

/[\p{Thai}~~[^]]/B,utf,alt_extended_class,allow_empty_class
------------------------------------------------------------------
        Bra
        [^\p{Thai}]
        Ket
        End
------------------------------------------------------------------
    \x{0d01}
 0: \x{d01}
    a
 0: a
\= Expect no match
    \x{0e01}
No match

/[[]~~[^]]/B,utf,alt_extended_class,allow_empty_class
------------------------------------------------------------------
        Bra
        AllAny
        Ket
        End
------------------------------------------------------------------
    \x{0d01}
 0: \x{d01}
    a
 0: a

/[[^]~~[]]/B,utf,alt_extended_class,allow_empty_class
------------------------------------------------------------------
        Bra
        AllAny
        Ket
        End
------------------------------------------------------------------
    \x{0d01}
 0: \x{d01}
    a
 0: a

/[[^]~~[^]]/B,utf,alt_extended_class,allow_empty_class
------------------------------------------------------------------
        Bra
        []
        Ket
        End
------------------------------------------------------------------
\= Expect no match
    \x{0d01}
No match
    a
No match

/[[^]||\pL]/B,utf,alt_extended_class,allow_empty_class
------------------------------------------------------------------
        Bra
        AllAny
        Ket
        End
------------------------------------------------------------------
    0
 0: 0
    a
 0: a

/[\pL||[^]]/B,utf,alt_extended_class,allow_empty_class
------------------------------------------------------------------
        Bra
        AllAny
        Ket
        End
------------------------------------------------------------------
    0
 0: 0
    a
 0: a

/[\pL~~[^]]/B,utf,alt_extended_class,allow_empty_class
------------------------------------------------------------------
        Bra
        [^\p{L}]
        Ket
        End
------------------------------------------------------------------
    0
 0: 0
\= Expect no match
    a
No match

/[[^]~~\pL]/B,utf,alt_extended_class,allow_empty_class
------------------------------------------------------------------
        Bra
        [^\p{L}]
        Ket
        End
------------------------------------------------------------------
    0
 0: 0
\= Expect no match
    a
No match

/([\p{Lu}&&\p{sc=Hung}]+?\x{10c81})+#/utf,alt_extended_class
    \x{10c80}\x{10cb2}\x{10c81}\x{10c85}\x{10cb0}\x{10cf2}\x{10c81}#\x{10c80}\x{10cb2}\x{10c81}\x{10c85}\x{10cb0}\x{10c81}##
 0: \x{10c80}\x{10cb2}\x{10c81}\x{10c85}\x{10cb0}\x{10c81}#
 1: \x{10c85}\x{10cb0}\x{10c81}

/[[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]
&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]]/utf,alt_extended_class

# --------------

/^([\h\x{9000}\x{9002}\x{9004}][\v\x{9000}\x{9002}\x{9004}\x{9006}\x{9008}][\h\v\x{9000}],){4}$/B,utf
------------------------------------------------------------------
        Bra
        ^
        CBra 1
        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}\x{9000}\x{9002}\x{9004}]
        [\x0a-\x0d\x85\x{2028}-\x{2029}\x{9000}\x{9002}\x{9004}\x{9006}\x{9008}]
        [\x09-\x0d \x85\xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{2028}-\x{2029}\x{202f}\x{205f}\x{3000}\x{9000}]
        ,
        Ket
        CBra 1
        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}\x{9000}\x{9002}\x{9004}]
        [\x0a-\x0d\x85\x{2028}-\x{2029}\x{9000}\x{9002}\x{9004}\x{9006}\x{9008}]
        [\x09-\x0d \x85\xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{2028}-\x{2029}\x{202f}\x{205f}\x{3000}\x{9000}]
        ,
        Ket
        CBra 1
        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}\x{9000}\x{9002}\x{9004}]
        [\x0a-\x0d\x85\x{2028}-\x{2029}\x{9000}\x{9002}\x{9004}\x{9006}\x{9008}]
        [\x09-\x0d \x85\xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{2028}-\x{2029}\x{202f}\x{205f}\x{3000}\x{9000}]
        ,
        Ket
        CBra 1
        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}\x{9000}\x{9002}\x{9004}]
        [\x0a-\x0d\x85\x{2028}-\x{2029}\x{9000}\x{9002}\x{9004}\x{9006}\x{9008}]
        [\x09-\x0d \x85\xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{2028}-\x{2029}\x{202f}\x{205f}\x{3000}\x{9000}]
        ,
        Ket
        $
        Ket
        End
------------------------------------------------------------------
  \x09\x0a\x0d,\x{1680}\x{2028}\x{1680},\x{180e}\x{2029}\x{180e},\x{9000}\x{9000}\x{9000},
 0: \x{09}\x{0a}\x{0d},\x{1680}\x{2028}\x{1680},\x{180e}\x{2029}\x{180e},\x{9000}\x{9000}\x{9000},
 1: \x{9000}\x{9000}\x{9000},

/[z-\p{Lu}]/
Failed: error 150 at offset 9: invalid range in character class

/[z-\pL]/
Failed: error 150 at offset 6: invalid range in character class

/[\p{Lu}-z]/
Failed: error 150 at offset 8: invalid range in character class

/[\pL-z]/
Failed: error 150 at offset 5: invalid range in character class

/[a\x{e1}]/iB
------------------------------------------------------------------
        Bra
        [Aa\xe1]
        Ket
        End
------------------------------------------------------------------
    a
 0: a
    A
 0: A
    \x{e1}
 0: \xe1

/[a\x{e1}]/iB,utf
------------------------------------------------------------------
        Bra
        [Aa\xc1\xe1]
        Ket
        End
------------------------------------------------------------------
    a
 0: a
    A
 0: A
    \x{e1}
 0: \x{e1}
    \x{c1}
 0: \x{c1}

/[a\x{e1}]/iB,ucp
------------------------------------------------------------------
        Bra
        [Aa\xc1\xe1]
        Ket
        End
------------------------------------------------------------------
    a
 0: a
    A
 0: A
    \x{e1}
 0: \xe1
    \x{c1}
 0: \xc1

/[a\x{e1}]/iB,ucp,utf
------------------------------------------------------------------
        Bra
        [Aa\xc1\xe1]
        Ket
        End
------------------------------------------------------------------
    a
 0: a
    A
 0: A
    \x{e1}
 0: \x{e1}
    \x{c1}
 0: \x{c1}

# End of testinput5
