# 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: 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 /(?= 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 Stéréo 0: Ste\x{301}re\x{301}o 1: te\x{301}r 2: \x{301}o /^\X/utf ́ré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<>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'(?\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*?(?())(?))(?\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*:(?)\xd1+0!~:(?)'d'E:yD!\s(?'R'\x1e;\x10:U))|'\x9g!\xb0*){)\\x16:;()\x1e\x10\x87*:(?)\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*?(?())(?)\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 /((?\d)|(?\p{L}))/g,substitute_extended,replace=<${digit:+digit; :not digit; }${letter:+letter:not a letter}> ab12cde 7: /(*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(?#(|++\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} /^(? 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 /(?:(?ss)|(?kk)) \k/i,utf,dupnames,caseless_restrict sS Ss 0: sS Ss 1: sS kK Kk 0: kK Kk 1: 2: kK \= Expect no match sS \x{17f}s No match kK \x{212a}k No match /(?:(?ss)|(?kk)) \k/i,utf,dupnames sS Ss 0: sS Ss 1: sS kK Kk 0: kK Kk 1: 2: kK sS \x{17f}s 0: sS \x{17f}s 1: sS kK \x{212a}k 0: kK \x{212a}k 1: 2: kK /(?:(?s)|(?k)) \k{3,}!/i,utf,dupnames,caseless_restrict s SsSs! 0: s SsSs! 1: s k KkKk! 0: k KkKk! 1: 2: k \= Expect no match s \x{17f}sSs\x{17f}! No match k \x{212a}kKk\x{212a}! No match /(?:(?s)|(?k)) \k{3,}!/i,utf,dupnames s SsSs! 0: s SsSs! 1: s k KkKk! 0: k KkKk! 1: 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: 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+ < 0: > < \= Expect no match >\x{a0} < No match />\s+ < 0: > < >\x{a0} < 0: >\x{a0} < />\s+ < 0: > < \= Expect no match >\x{a0} < No match />[\s]+ < 0: > < \= Expect no match >\x{a0} < No match />[\s]+ < 0: > < >\x{a0} < 0: >\x{a0} < />[\s]+ < 0: > < \= Expect no match >\x{a0} < No match />\s(?aS)\s(?-aS)\s\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\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:]]+\x{a0} \x{a0}< 0: >\x{a0} \x{a0}< >\x{a0}\x{a0}\x{a0}< 0: >\x{a0}\x{a0}\x{a0}< />[[:space:]]+\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 /(?\777< abc 1: >\x{1ff}< /a(?b)c/utf,substitute_extended abc\=replace=>${namED_1}< 1: >b< /a(?b)c/utf,substitute_extended abc\=replace=>${namedverylongbutperfectlylegalsoyoushouldnthaveaproblem_1}< 1: >b< /a(?b)c/utf,substitute_extended abc\=replace=>${nämed}< 1: >b< /a(?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