/-- These tests for Unicode property support test PCRE's API and show some of the compiled code. They are not Perl-compatible. --/ /[\p{L}]/DZ ------------------------------------------------------------------ Bra [\p{L}] Ket End ------------------------------------------------------------------ Capturing subpattern count = 0 No options No first char No need char /[\p{^L}]/DZ ------------------------------------------------------------------ Bra [\P{L}] Ket End ------------------------------------------------------------------ Capturing subpattern count = 0 No options No first char No need char /[\P{L}]/DZ ------------------------------------------------------------------ Bra [\P{L}] Ket End ------------------------------------------------------------------ Capturing subpattern count = 0 No options No first char No need char /[\P{^L}]/DZ ------------------------------------------------------------------ Bra [\p{L}] Ket End ------------------------------------------------------------------ Capturing subpattern count = 0 No options No first char No need char /[abc\p{L}\x{0660}]/8DZ ------------------------------------------------------------------ Bra [a-c\p{L}\x{660}] Ket End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: utf8 No first char No need char /[\p{Nd}]/8DZ ------------------------------------------------------------------ Bra [\p{Nd}] Ket End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: utf8 No first char No need char 1234 0: 1 /[\p{Nd}+-]+/8DZ ------------------------------------------------------------------ Bra [+\-\p{Nd}]+ Ket End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: utf8 No first char No need char 1234 0: 1234 12-34 0: 12-34 12+\x{661}-34 0: 12+\x{661}-34 ** Failers No match abcd No match /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8iDZ ------------------------------------------------------------------ Bra /i A\x{391}\x{10427}\x{ff3a}\x{1fb0} Ket End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: caseless utf8 First char = 'A' (caseless) No need char /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8DZ ------------------------------------------------------------------ Bra A\x{391}\x{10427}\x{ff3a}\x{1fb0} Ket End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: utf8 First char = 'A' Need char = 176 /AB\x{1fb0}/8DZ ------------------------------------------------------------------ Bra AB\x{1fb0} Ket End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: utf8 First char = 'A' Need char = 176 /AB\x{1fb0}/8DZi ------------------------------------------------------------------ Bra /i AB\x{1fb0} Ket End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: caseless utf8 First char = 'A' (caseless) Need char = 'B' (caseless) /[\x{105}-\x{109}]/8iDZ ------------------------------------------------------------------ Bra [\x{104}-\x{109}] Ket End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: caseless utf8 No first char No need char \x{104} 0: \x{104} \x{105} 0: \x{105} \x{109} 0: \x{109} ** Failers No match \x{100} No match \x{10a} No match /[z-\x{100}]/8iDZ ------------------------------------------------------------------ Bra [Z\x{39c}\x{178}z-\x{101}] Ket End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: caseless utf8 No first char No need char Z 0: Z z 0: z \x{39c} 0: \x{39c} \x{178} 0: \x{178} | 0: | \x{80} 0: \x{80} \x{ff} 0: \x{ff} \x{100} 0: \x{100} \x{101} 0: \x{101} ** Failers No match \x{102} No match Y No match y No match /[z-\x{100}]/8DZi ------------------------------------------------------------------ Bra [Z\x{39c}\x{178}z-\x{101}] Ket End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: caseless utf8 No first char No need char /(?:[\PPa*]*){8,}/ /[\P{Any}]/BZ ------------------------------------------------------------------ Bra [\P{Any}] Ket End ------------------------------------------------------------------ /[\P{Any}\E]/BZ ------------------------------------------------------------------ Bra [\P{Any}] 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}+/8BZ ------------------------------------------------------------------ Bra prop Zl {2} prop Zl ?+ Ket End ------------------------------------------------------------------ \xe2\x80\xa8\xe2\x80\xa8 0: \x{2028}\x{2028} \x{2028}\x{2028}\x{2028} 0: \x{2028}\x{2028}\x{2028} /\p{Zl}/8BZ ------------------------------------------------------------------ Bra prop Zl Ket End ------------------------------------------------------------------ /\p{Lu}{3}+/8BZ ------------------------------------------------------------------ Bra prop Lu {3} Ket End ------------------------------------------------------------------ /\pL{2}+/8BZ ------------------------------------------------------------------ Bra prop L {2} Ket End ------------------------------------------------------------------ /\p{Cc}{2}+/8BZ ------------------------------------------------------------------ Bra prop Cc {2} Ket End ------------------------------------------------------------------ /^\p{Cs}/8 \?\x{dfff} 0: \x{dfff} ** Failers No match \x{09f} No match /^\p{Sc}+/8 $\x{a2}\x{a3}\x{a4}\x{a5}\x{a6} 0: $\x{a2}\x{a3}\x{a4}\x{a5} \x{9f2} 0: \x{9f2} ** Failers No match X No match \x{2c2} No match /^\p{Zs}/8 \ \ 0: \x{a0} 0: \x{a0} \x{1680} 0: \x{1680} \x{180e} 0: \x{180e} \x{2000} 0: \x{2000} \x{2001} 0: \x{2001} ** Failers No match \x{2028} No match \x{200d} No match /-- These four are here rather than in test 6 because Perl has problems with the negative versions of the properties. --/ /\p{^Lu}/8i 1234 0: 1 ** Failers 0: * ABC No match /\P{Lu}/8i 1234 0: 1 ** Failers 0: * ABC No match /\p{Ll}/8i a 0: a Az 0: z ** Failers 0: a ABC No match /\p{Lu}/8i A 0: A a\x{10a0}B 0: \x{10a0} ** Failers 0: F a No match \x{1d00} No match /[\x{c0}\x{391}]/8i \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}+)/8i \x{023a}\x{2c65}\x{0130} 0: \x{23a}\x{2c65}\x{130} 1: \x{130} /^\x{023a}+([^X])/8i \x{023a}\x{2c65}X 0: \x{23a}\x{2c65} 1: \x{2c65} /\x{c0}+\x{116}+/8i \x{c0}\x{e0}\x{116}\x{117} 0: \x{c0}\x{e0}\x{116}\x{117} /[\x{c0}\x{116}]+/8i \x{c0}\x{e0}\x{116}\x{117} 0: \x{c0}\x{e0}\x{116}\x{117} /(\x{de})\1/8i \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}$/8i \x{c0} 0: \x{c0} \x{e0} 0: \x{e0} /^\x{e0}$/8i \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}])/8 \x{c0} 0: \x{c0} 1: \x{c0} \x{e0} 0: \x{e0} 1: \x{e0} /(?i:[\x{c0}])/8 \x{c0} 0: \x{c0} \x{e0} 0: \x{e0} /-- This should be Perl-compatible but Perl 5.11 gets \x{300} wrong. --/8 /^\X/8 A 0: A A\x{300}BC 0: A\x{300} A\x{300}\x{301}\x{302}BC 0: A\x{300}\x{301}\x{302} *** Failers 0: * \x{300} No match /-- These are PCRE's extra properties to help with Unicodizing \d etc. --/ /^\p{Xan}/8 ABCD 0: A 1234 0: 1 \x{6ca} 0: \x{6ca} \x{a6c} 0: \x{a6c} \x{10a7} 0: \x{10a7} ** Failers No match _ABC No match /^\p{Xan}+/8 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 0: ABCD1234\x{6ca}\x{a6c}\x{10a7} ** Failers No match _ABC No match /^\p{Xan}+?/8 \x{6ca}\x{a6c}\x{10a7}_ 0: \x{6ca} /^\p{Xan}*/8 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 0: ABCD1234\x{6ca}\x{a6c}\x{10a7} /^\p{Xan}{2,9}/8 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 0: ABCD1234\x{6ca} /^\p{Xan}{2,9}?/8 \x{6ca}\x{a6c}\x{10a7}_ 0: \x{6ca}\x{a6c} /^[\p{Xan}]/8 ABCD1234_ 0: A 1234abcd_ 0: 1 \x{6ca} 0: \x{6ca} \x{a6c} 0: \x{a6c} \x{10a7} 0: \x{10a7} ** Failers No match _ABC No match /^[\p{Xan}]+/8 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 0: ABCD1234\x{6ca}\x{a6c}\x{10a7} ** Failers No match _ABC No match /^>\p{Xsp}/8 >\x{1680}\x{2028}\x{0b} 0: >\x{1680} >\x{a0} 0: >\x{a0} ** Failers No match \x{0b} No match /^>\p{Xsp}+/8 > \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} /^>\p{Xsp}+?/8 >\x{1680}\x{2028}\x{0b} 0: >\x{1680} /^>\p{Xsp}*/8 > \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} /^>\p{Xsp}{2,9}/8 > \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} /^>\p{Xsp}{2,9}?/8 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 0: > \x{09} /^>[\p{Xsp}]/8 >\x{2028}\x{0b} 0: >\x{2028} /^>[\p{Xsp}]+/8 > \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} /^>\p{Xps}/8 >\x{1680}\x{2028}\x{0b} 0: >\x{1680} >\x{a0} 0: >\x{a0} ** Failers No match \x{0b} No match /^>\p{Xps}+/8 > \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}+?/8 >\x{1680}\x{2028}\x{0b} 0: >\x{1680} /^>\p{Xps}*/8 > \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}/8 > \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}?/8 > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} 0: > \x{09} /^>[\p{Xps}]/8 >\x{2028}\x{0b} 0: >\x{2028} /^>[\p{Xps}]+/8 > \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}/8 ABCD 0: A 1234 0: 1 \x{6ca} 0: \x{6ca} \x{a6c} 0: \x{a6c} \x{10a7} 0: \x{10a7} _ABC 0: _ ** Failers No match [] No match /^\p{Xwd}+/8 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_ /^\p{Xwd}+?/8 \x{6ca}\x{a6c}\x{10a7}_ 0: \x{6ca} /^\p{Xwd}*/8 ABCD1234\x{6ca}\x{a6c}\x{10a7}_ 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_ /^\p{Xwd}{2,9}/8 A_B12\x{6ca}\x{a6c}\x{10a7} 0: A_B12\x{6ca}\x{a6c}\x{10a7} /^\p{Xwd}{2,9}?/8 \x{6ca}\x{a6c}\x{10a7}_ 0: \x{6ca}\x{a6c} /^[\p{Xwd}]/8 ABCD1234_ 0: A 1234abcd_ 0: 1 \x{6ca} 0: \x{6ca} \x{a6c} 0: \x{a6c} \x{10a7} 0: \x{10a7} _ABC 0: _ ** Failers No match [] No match /^[\p{Xwd}]+/8 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}]+/8 !.+\x{019}\x{35a}AB 0: !.+\x{19}\x{35a} /^[\p{^Xwd}]+/8 !.+\x{019}\x{35a}AB 0: !.+\x{19}\x{35a} /[\D]/WBZ8 ------------------------------------------------------------------ Bra [\P{Nd}] Ket End ------------------------------------------------------------------ 1\x{3c8}2 0: \x{3c8} /[\d]/WBZ8 ------------------------------------------------------------------ Bra [\p{Nd}] Ket End ------------------------------------------------------------------ >\x{6f4}< 0: \x{6f4} /[\S]/WBZ8 ------------------------------------------------------------------ Bra [\P{Xsp}] Ket End ------------------------------------------------------------------ \x{1680}\x{6f4}\x{1680} 0: \x{6f4} /[\s]/WBZ8 ------------------------------------------------------------------ Bra [\p{Xsp}] Ket End ------------------------------------------------------------------ >\x{1680}< 0: \x{1680} /[\W]/WBZ8 ------------------------------------------------------------------ Bra [\P{Xwd}] Ket End ------------------------------------------------------------------ A\x{1712}B 0: \x{1712} /[\w]/WBZ8 ------------------------------------------------------------------ Bra [\p{Xwd}] Ket End ------------------------------------------------------------------ >\x{1723}< 0: \x{1723} /\D/WBZ8 ------------------------------------------------------------------ Bra notprop Nd Ket End ------------------------------------------------------------------ 1\x{3c8}2 0: \x{3c8} /\d/WBZ8 ------------------------------------------------------------------ Bra prop Nd Ket End ------------------------------------------------------------------ >\x{6f4}< 0: \x{6f4} /\S/WBZ8 ------------------------------------------------------------------ Bra notprop Xsp Ket End ------------------------------------------------------------------ \x{1680}\x{6f4}\x{1680} 0: \x{6f4} /\s/WBZ8 ------------------------------------------------------------------ Bra prop Xsp Ket End ------------------------------------------------------------------ >\x{1680}> 0: \x{1680} /\W/WBZ8 ------------------------------------------------------------------ Bra notprop Xwd Ket End ------------------------------------------------------------------ A\x{1712}B 0: \x{1712} /\w/WBZ8 ------------------------------------------------------------------ Bra prop Xwd Ket End ------------------------------------------------------------------ >\x{1723}< 0: \x{1723} /[[:alpha:]]/WBZ ------------------------------------------------------------------ Bra [\p{L}] Ket End ------------------------------------------------------------------ /[[:lower:]]/WBZ ------------------------------------------------------------------ Bra [\p{Ll}] Ket End ------------------------------------------------------------------ /[[:upper:]]/WBZ ------------------------------------------------------------------ Bra [\p{Lu}] Ket End ------------------------------------------------------------------ /[[:alnum:]]/WBZ ------------------------------------------------------------------ Bra [\p{Xan}] Ket End ------------------------------------------------------------------ /[[:ascii:]]/WBZ ------------------------------------------------------------------ Bra [\x00-\x7f] Ket End ------------------------------------------------------------------ /[[:blank:]]/WBZ ------------------------------------------------------------------ Bra [\x09 \xa0] Ket End ------------------------------------------------------------------ /[[:cntrl:]]/WBZ ------------------------------------------------------------------ Bra [\x00-\x1f\x7f] Ket End ------------------------------------------------------------------ /[[:digit:]]/WBZ ------------------------------------------------------------------ Bra [\p{Nd}] Ket End ------------------------------------------------------------------ /[[:graph:]]/WBZ ------------------------------------------------------------------ Bra [!-~] Ket End ------------------------------------------------------------------ /[[:print:]]/WBZ ------------------------------------------------------------------ Bra [ -~] Ket End ------------------------------------------------------------------ /[[:punct:]]/WBZ ------------------------------------------------------------------ Bra [!-/:-@[-`{-~] Ket End ------------------------------------------------------------------ /[[:space:]]/WBZ ------------------------------------------------------------------ Bra [\p{Xps}] Ket End ------------------------------------------------------------------ /[[:word:]]/WBZ ------------------------------------------------------------------ Bra [\p{Xwd}] Ket End ------------------------------------------------------------------ /[[:xdigit:]]/WBZ ------------------------------------------------------------------ Bra [0-9A-Fa-f] Ket End ------------------------------------------------------------------ /-- Unicode properties for \b abd \B --/ /\b...\B/8W 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/8 abc_ 0: abc ** Failers 0: Fai \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/W abc_ 0: abc !\x{c0}++\x{c1}\x{c2} 0: ++\xc1 !\x{c0}+++++ 0: \xc0++ /-- POSIX interface --/ /\w/P +++\x{c2} No match: POSIX code 17: match failed /\w/WP +++\x{c2} 0: \xc2 /-- Some of these are silly, but they check various combinations --/ /[[:^alpha:][:^cntrl:]]+/8WBZ ------------------------------------------------------------------ Bra [ -~\x80-\xff\P{L}]+ Ket End ------------------------------------------------------------------ 123 0: 123 abc 0: abc /[[:^cntrl:][:^alpha:]]+/8WBZ ------------------------------------------------------------------ Bra [ -~\x80-\xff\P{L}]+ Ket End ------------------------------------------------------------------ 123 0: 123 abc 0: abc /[[:alpha:]]+/8WBZ ------------------------------------------------------------------ Bra [\p{L}]+ Ket End ------------------------------------------------------------------ abc 0: abc /[[:^alpha:]\S]+/8WBZ ------------------------------------------------------------------ Bra [\P{L}\P{Xsp}]+ Ket End ------------------------------------------------------------------ 123 0: 123 abc 0: abc /[^\d]+/8WBZ ------------------------------------------------------------------ Bra [^\p{Nd}]+ Ket End ------------------------------------------------------------------ abc123 0: abc abc\x{123} 0: abc\x{123} \x{660}abc 0: abc /\x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}/8iSI Capturing subpattern count = 0 Options: caseless utf8 No first char No need char Subject length lower bound = 17 Starting byte set: \xd0 \xd1 \x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f} 0: \x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f} \x{451}\x{440}\x{441}\x{442}\x{443}\x{444}\x{445}\x{446}\x{447}\x{448}\x{449}\x{44a}\x{44b}\x{44c}\x{44d}\x{44e}\x{44f} 0: \x{451}\x{440}\x{441}\x{442}\x{443}\x{444}\x{445}\x{446}\x{447}\x{448}\x{449}\x{44a}\x{44b}\x{44c}\x{44d}\x{44e}\x{44f} /\p{Lu}+9\p{Lu}+B\p{Lu}+b/BZ ------------------------------------------------------------------ Bra prop Lu ++ 9 prop Lu + B prop Lu ++ b Ket End ------------------------------------------------------------------ /\p{^Lu}+9\p{^Lu}+B\p{^Lu}+b/BZ ------------------------------------------------------------------ Bra notprop Lu + 9 notprop Lu ++ B notprop Lu + b Ket End ------------------------------------------------------------------ /\P{Lu}+9\P{Lu}+B\P{Lu}+b/BZ ------------------------------------------------------------------ Bra notprop Lu + 9 notprop Lu ++ B notprop Lu + b Ket End ------------------------------------------------------------------ /\p{Han}+X\p{Greek}+\x{370}/BZ8 ------------------------------------------------------------------ Bra prop Han ++ X prop Greek + \x{370} Ket End ------------------------------------------------------------------ /\p{Xan}+!\p{Xan}+A/BZ ------------------------------------------------------------------ Bra prop Xan ++ ! prop Xan + A Ket End ------------------------------------------------------------------ /\p{Xsp}+!\p{Xsp}\t/BZ ------------------------------------------------------------------ Bra prop Xsp ++ ! prop Xsp \x09 Ket End ------------------------------------------------------------------ /\p{Xps}+!\p{Xps}\t/BZ ------------------------------------------------------------------ Bra prop Xps ++ ! prop Xps \x09 Ket End ------------------------------------------------------------------ /\p{Xwd}+!\p{Xwd}_/BZ ------------------------------------------------------------------ Bra prop Xwd ++ ! prop Xwd _ Ket End ------------------------------------------------------------------ /A+\p{N}A+\dB+\p{N}*B+\d*/WBZ ------------------------------------------------------------------ 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/8i \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65} No match /(ȺȺȺ)?\1/8i ȺȺȺⱥⱥ No match /(\x{23a}\x{23a}\x{23a})?\1/8i \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/8i ȺȺȺⱥⱥⱥ 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/8i \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65} No match /(ȺȺȺ)\1/8i ȺȺȺⱥⱥ No match /(\x{23a}\x{23a}\x{23a})\1/8i \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/8i ȺȺȺⱥⱥⱥ 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/8i \x{2c65}\x{2c65}\x{23a}\x{23a} 0: \x{2c65}\x{2c65}\x{23a}\x{23a} 1: \x{2c65}\x{2c65} /(ⱥⱥ)\1/8i ⱥⱥȺȺ 0: \x{2c65}\x{2c65}\x{23a}\x{23a} 1: \x{2c65}\x{2c65} /(\x{23a}\x{23a}\x{23a})\1Y/8i 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/8i 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}]/8 \x{1bc0} 0: \x{1bc0} \x{1bff} 0: \x{1bff} ** Failers No match \x{1bf4} No match /^[\p{Brahmi}]/8 \x{11000} 0: \x{11000} \x{1106f} 0: \x{1106f} ** Failers No match \x{1104e} No match /^[\p{Mandaic}]/8 \x{840} 0: \x{840} \x{85e} 0: \x{85e} ** Failers No match \x{85c} No match \x{85d} No match /-- --/ /(\X*)(.)/s8 A\x{300} 0: A 1: 2: A /^S(\X*)e(\X*)$/8 Stéréo No match /^\X/8 ́réo No match /^a\X41z/ aX41z 0: aX41z *** Failers No match aAz No match /(?<=ab\Cde)X/8 Failed: \C not allowed in lookbehind assertion at offset 10 /-- End of testinput13 --/