Upgrade pcre to pcre2-10.40
Test: make
Change-Id: I5d7243566be5bc6b8e2a5eaf08dec2d08a565f84
diff --git a/testdata/testoutput4 b/testdata/testoutput4
index f43d940..48f3b30 100644
--- a/testdata/testoutput4
+++ b/testdata/testoutput4
@@ -1,4 +1,4 @@
-# This set of tests is for UTF support, including Unicode properties. The
+# This set of tests is for UTF support, including Unicode properties. The
# Unicode tests are all compatible with all versions of Perl >= 5.10, but
# some of the property tests may differ because of different versions of
# Unicode in use by PCRE2 and Perl.
@@ -6,7 +6,7 @@
# WARNING: Use only / as the pattern delimiter. Although pcre2test supports
# a number of delimiters, all those other than / give problems with the
# perltest.sh script.
-
+
#newline_default lf anycrlf any
#perltest
@@ -1183,35 +1183,35 @@
/^\d*\w{4}/utf
1234
0: 1234
-\= Expect no match
+\= Expect no match
123
No match
/^[^b]*\w{4}/utf
aaaa
0: aaaa
-\= Expect no match
+\= Expect no match
aaa
No match
/^[^b]*\w{4}/i,utf
aaaa
0: aaaa
-\= Expect no match
+\= Expect no match
aaa
No match
/^\x{100}*.{4}/utf
\x{100}\x{100}\x{100}\x{100}
0: \x{100}\x{100}\x{100}\x{100}
-\= Expect no match
+\= Expect no match
\x{100}\x{100}\x{100}
No match
/^\x{100}*.{4}/i,utf
\x{100}\x{100}\x{100}\x{100}
0: \x{100}\x{100}\x{100}\x{100}
-\= Expect no match
+\= Expect no match
\x{100}\x{100}\x{100}
No match
@@ -1226,113 +1226,113 @@
/^#[^\x{ffff}]#[^\x{ffff}]#[^\x{ffff}]#/utf
#\x{10000}#\x{100}#\x{10ffff}#
0: #\x{10000}#\x{100}#\x{10ffff}#
-
-# Unicode property support tests
+
+# Unicode property support tests
/^\pC\pL\pM\pN\pP\pS\pZ</utf
\x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
0: \x{7f}\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
- \np\x{300}9!\$ <
+ \np\x{300}9!\$ <
0: \x{0a}p\x{300}9!$ <
-\= Expect no match
- ap\x{300}9!\$ <
+\= Expect no match
+ ap\x{300}9!\$ <
No match
-
+
/^\PC/utf
X
0: X
-\= Expect no match
+\= Expect no match
\x7f
No match
-
+
/^\PL/utf
9
0: 9
-\= Expect no match
+\= Expect no match
\x{c0}
No match
-
+
/^\PM/utf
X
0: X
-\= Expect no match
+\= Expect no match
\x{30f}
No match
-
+
/^\PN/utf
X
0: X
-\= Expect no match
+\= Expect no match
\x{660}
No match
-
+
/^\PP/utf
X
0: X
-\= Expect no match
+\= Expect no match
\x{66c}
No match
-
+
/^\PS/utf
X
0: X
-\= Expect no match
+\= Expect no match
\x{f01}
No match
-
+
/^\PZ/utf
X
0: X
-\= Expect no match
+\= Expect no match
\x{1680}
No match
-
+
/^\p{Cc}/utf
\x{017}
0: \x{17}
- \x{09f}
+ \x{09f}
0: \x{9f}
\= Expect no match
- \x{0600}
+ \x{0600}
No match
-
+
/^\p{Cf}/utf
\x{601}
0: \x{601}
\= Expect no match
- \x{09f}
+ \x{09f}
No match
-
+
/^\p{Cn}/utf
\x{e0000}
0: \x{e0000}
\= Expect no match
- \x{09f}
+ \x{09f}
No match
-
+
/^\p{Co}/utf
\x{f8ff}
0: \x{f8ff}
\= Expect no match
- \x{09f}
+ \x{09f}
No match
-
+
/^\p{Ll}/utf
a
0: a
-\= Expect no match
+\= Expect no match
Z
No match
- \x{e000}
+ \x{e000}
No match
-
+
/^\p{Lm}/utf
\x{2b0}
0: \x{2b0}
\= Expect no match
- a
+ a
No match
-
+
/^\p{Lo}/utf
\x{1bb}
0: \x{1bb}
@@ -1344,32 +1344,32 @@
0: \x{4d00}
\x{4db4}
0: \x{4db4}
- \x{4db5}
+ \x{4db5}
0: \x{4db5}
- \x{4db6}
+ \x{4db6}
0: \x{4db6}
\= Expect no match
- a
+ a
No match
\x{2b0}
No match
-
+
/^\p{Lt}/utf
\x{1c5}
0: \x{1c5}
\= Expect no match
- a
+ a
No match
\x{2b0}
No match
-
+
/^\p{Lu}/utf
A
0: A
\= Expect no match
\x{2b0}
No match
-
+
/^\p{Mc}/utf
\x{903}
0: \x{903}
@@ -1378,7 +1378,7 @@
No match
\x{300}
No match
-
+
/^\p{Me}/utf
\x{488}
0: \x{488}
@@ -1389,7 +1389,7 @@
No match
\x{300}
No match
-
+
/^\p{Mn}/utf
\x{300}
0: \x{300}
@@ -1398,7 +1398,7 @@
No match
\x{903}
No match
-
+
/^\p{Nd}+/utf
0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}\x{66a}
0: 0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}
@@ -1409,7 +1409,7 @@
\= Expect no match
X
No match
-
+
/^\p{Nl}/utf
\x{16ee}
0: \x{16ee}
@@ -1418,7 +1418,7 @@
No match
\x{966}
No match
-
+
/^\p{No}/utf
\x{b2}
0: \x{b2}
@@ -1429,7 +1429,7 @@
No match
\x{16ee}
No match
-
+
/^\p{Pc}/utf
\x5f
0: _
@@ -1442,7 +1442,7 @@
No match
\x{58a}
No match
-
+
/^\p{Pd}/utf
-
0: -
@@ -1453,7 +1453,7 @@
No match
\x{203f}
No match
-
+
/^\p{Pe}/utf
)
0: )
@@ -1476,7 +1476,7 @@
No match
\x{f3c}
No match
-
+
/^\p{Pf}/utf
\x{bb}
0: \x{bb}
@@ -1487,7 +1487,7 @@
No match
\x{203f}
No match
-
+
/^\p{Pi}/utf
\x{ab}
0: \x{ab}
@@ -1498,7 +1498,7 @@
No match
\x{203f}
No match
-
+
/^\p{Po}/utf
!
0: !
@@ -1509,7 +1509,7 @@
No match
\x{203f}
No match
-
+
/^\p{Ps}/utf
(
0: (
@@ -1530,7 +1530,7 @@
No match
\x{f3b}
No match
-
+
/^\p{Sk}/utf
\x{2c2}
0: \x{2c2}
@@ -1539,7 +1539,7 @@
No match
\x{9f2}
No match
-
+
/^\p{Sm}+/utf
+<|~\x{ac}\x{2044}
0: +<|~\x{ac}\x{2044}
@@ -1548,18 +1548,18 @@
No match
\x{9f2}
No match
-
+
/^\p{So}/utf
\x{a6}
0: \x{a6}
- \x{482}
+ \x{482}
0: \x{482}
\= Expect no match
X
No match
\x{9f2}
No match
-
+
/^\p{Zl}/utf
\x{2028}
0: \x{2028}
@@ -1568,7 +1568,7 @@
No match
\x{2029}
No match
-
+
/^\p{Zp}/utf
\x{2029}
0: \x{2029}
@@ -1577,77 +1577,77 @@
No match
\x{2028}
No match
-
+
/\p{Nd}+(..)/utf
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: AB
-
+
/\p{Nd}+?(..)/utf
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}
1: \x{661}\x{662}
-
+
/\p{Nd}{2,}(..)/utf
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: AB
-
+
/\p{Nd}{2,}?(..)/utf
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}A
1: \x{662}A
-
+
/\p{Nd}*(..)/utf
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: AB
-
+
/\p{Nd}*?(..)/utf
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}
1: \x{660}\x{661}
-
+
/\p{Nd}{2}(..)/utf
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}A
1: \x{662}A
-
+
/\p{Nd}{2,3}(..)/utf
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: AB
-
+
/\p{Nd}{2,3}?(..)/utf
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}A
1: \x{662}A
-
+
/\p{Nd}?(..)/utf
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}
1: \x{661}\x{662}
-
+
/\p{Nd}??(..)/utf
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}
1: \x{660}\x{661}
-
+
/\p{Nd}*+(..)/utf
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: AB
-
+
/\p{Nd}*+(...)/utf
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}ABC
1: ABC
-
+
/\p{Nd}*+(....)/utf
\= Expect no match
\x{660}\x{661}\x{662}ABC
No match
-
+
/(?<=A\p{Nd})XYZ/utf
A2XYZ
0: XYZ
@@ -1658,18 +1658,18 @@
\= Expect no match
AXYZ
No match
- XYZ
+ XYZ
No match
-
+
/(?<!\pL)XYZ/utf
1XYZ
0: XYZ
- AB=XYZ..
+ AB=XYZ..
0: XYZ
- XYZ
+ XYZ
0: XYZ
\= Expect no match
- WXYZ
+ WXYZ
No match
/[\P{Nd}]+/utf
@@ -1685,7 +1685,7 @@
\= Expect no match
11111111111111111111111111111111111111111111111111111111111111111111111
No match
-
+
/\P{Nd}+/utf
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -1717,22 +1717,22 @@
/\pL/utf
a
0: a
- A
+ A
0: A
/\pL/i,utf
a
0: a
- A
+ A
0: A
-
+
/\p{Lu}/utf
A
0: A
aZ
0: Z
\= Expect no match
- abc
+ abc
No match
/\p{Ll}/utf
@@ -1741,14 +1741,14 @@
Az
0: z
\= Expect no match
- ABC
+ ABC
No match
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf
A\x{391}\x{10427}\x{ff3a}\x{1fb0}
0: A\x{391}\x{10427}\x{ff3a}\x{1fb0}
\= Expect no match
- a\x{391}\x{10427}\x{ff3a}\x{1fb0}
+ a\x{391}\x{10427}\x{ff3a}\x{1fb0}
No match
A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
No match
@@ -1762,7 +1762,7 @@
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf
A\x{391}\x{10427}\x{ff3a}\x{1fb0}
0: A\x{391}\x{10427}\x{ff3a}\x{1fb0}
- a\x{391}\x{10427}\x{ff3a}\x{1fb0}
+ a\x{391}\x{10427}\x{ff3a}\x{1fb0}
0: a\x{391}\x{10427}\x{ff3a}\x{1fb0}
A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
0: A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
@@ -1794,41 +1794,41 @@
0: \x{ff3a}
\x{3b1}
0: \x{3b1}
- \x{ff5a}
+ \x{ff5a}
0: \x{ff5a}
-
+
/^(\X*)C/utf
- A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
+ A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
0: A\x{300}\x{301}\x{302}BC
1: A\x{300}\x{301}\x{302}B
- A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
+ A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
0: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
1: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
/^(\X*?)C/utf
- A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
+ A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
0: A\x{300}\x{301}\x{302}BC
1: A\x{300}\x{301}\x{302}B
- A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
+ A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
0: A\x{300}\x{301}\x{302}BC
1: A\x{300}\x{301}\x{302}B
/^(\X*)(.)/utf
- A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
+ A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
0: A\x{300}\x{301}\x{302}BCA
1: A\x{300}\x{301}\x{302}BC
2: A
- A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
+ A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
0: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
1: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
2: C
/^(\X*?)(.)/utf
- A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
+ A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
0: A
1:
2: A
- A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
+ A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
0: A
1:
2: A
@@ -1851,7 +1851,7 @@
A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
0: A\x{300}\x{301}B\x{300}C\x{300}\x{301}D
1: D
-
+
/^\X{2,3}?(.)/utf
A\x{300}\x{301}B\x{300}X
0: A\x{300}\x{301}B\x{300}X
@@ -1869,25 +1869,18 @@
/^\X/utf
A
0: A
- A\x{300}BC
+ A\x{300}BC
0: A\x{300}
- A\x{300}\x{301}\x{302}BC
+ A\x{300}\x{301}\x{302}BC
0: A\x{300}\x{301}\x{302}
- \x{300}
+ \x{300}
0: \x{300}
/^\p{Han}+/utf
\x{2e81}\x{3007}\x{2f804}\x{31a0}
0: \x{2e81}\x{3007}\x{2f804}
\= Expect no match
- \x{2e7f}
-No match
-
-/^\P{Katakana}+/utf
- \x{3105}
- 0: \x{3105}
-\= Expect no match
- \x{30ff}
+ \x{2e7f}
No match
/^[\p{Arabic}]/utf
@@ -1896,7 +1889,14 @@
\x{060b}
0: \x{60b}
\= Expect no match
- X\x{06e9}
+ X\x{06e9}
+No match
+
+/^\P{Katakana}+/utf
+ \x{3105}
+ 0: \x{3105}
+\= Expect no match
+ \x{30ff}
No match
/^[\P{Yi}]/utf
@@ -1905,32 +1905,32 @@
\= Expect no match
\x{a014}
No match
- \x{a4c6}
+ \x{a4c6}
No match
-
+
/^\p{Any}X/utf
AXYZ
0: AX
- \x{1234}XYZ
+ \x{1234}XYZ
0: \x{1234}X
\= Expect no match
- X
+ X
No match
-
+
/^\P{Any}X/utf
\= Expect no match
AX
No match
-
+
/^\p{Any}?X/utf
XYZ
0: X
AXYZ
0: AX
- \x{1234}XYZ
+ \x{1234}XYZ
0: \x{1234}X
\= Expect no match
- ABXYZ
+ ABXYZ
No match
/^\P{Any}?X/utf
@@ -1939,9 +1939,9 @@
\= Expect no match
AXYZ
No match
- \x{1234}XYZ
+ \x{1234}XYZ
No match
- ABXYZ
+ ABXYZ
No match
/^\p{Any}+X/utf
@@ -1990,26 +1990,26 @@
/^[\p{Any}]X/utf
AXYZ
0: AX
- \x{1234}XYZ
+ \x{1234}XYZ
0: \x{1234}X
\= Expect no match
- X
+ X
No match
-
+
/^[\P{Any}]X/utf
\= Expect no match
AX
No match
-
+
/^[\p{Any}]?X/utf
XYZ
0: X
AXYZ
0: AX
- \x{1234}XYZ
+ \x{1234}XYZ
0: \x{1234}X
\= Expect no match
- ABXYZ
+ ABXYZ
No match
/^[\P{Any}]?X/utf
@@ -2018,9 +2018,9 @@
\= Expect no match
AXYZ
No match
- \x{1234}XYZ
+ \x{1234}XYZ
No match
- ABXYZ
+ ABXYZ
No match
/^[\p{Any}]+X/utf
@@ -2069,20 +2069,20 @@
/^\p{Any}{3,5}?/utf
abcdefgh
0: abc
- \x{1234}\n\r\x{3456}xyz
+ \x{1234}\n\r\x{3456}xyz
0: \x{1234}\x{0a}\x{0d}
/^\p{Any}{3,5}/utf
abcdefgh
0: abcde
- \x{1234}\n\r\x{3456}xyz
+ \x{1234}\n\r\x{3456}xyz
0: \x{1234}\x{0a}\x{0d}\x{3456}x
/^\P{Any}{3,5}?/utf
\= Expect no match
abcdefgh
No match
- \x{1234}\n\r\x{3456}xyz
+ \x{1234}\n\r\x{3456}xyz
No match
/^\p{L&}X/utf
@@ -2097,7 +2097,7 @@
No match
\x{2b0}XY
No match
- !XY
+ !XY
No match
/^[\p{L&}]X/utf
@@ -2112,7 +2112,7 @@
No match
\x{2b0}XY
No match
- !XY
+ !XY
No match
/^\p{L&}+X/utf
@@ -2120,18 +2120,18 @@
0: AX
aXY
0: aX
- AbcdeXyz
+ AbcdeXyz
0: AbcdeX
\x{1c5}AbXY
0: \x{1c5}AbX
- abcDEXypqreXlmn
+ abcDEXypqreXlmn
0: abcDEXypqreX
\= Expect no match
\x{1bb}XY
No match
\x{2b0}XY
No match
- !XY
+ !XY
No match
/^[\p{L&}]+X/utf
@@ -2139,18 +2139,18 @@
0: AX
aXY
0: aX
- AbcdeXyz
+ AbcdeXyz
0: AbcdeX
\x{1c5}AbXY
0: \x{1c5}AbX
- abcDEXypqreXlmn
+ abcDEXypqreXlmn
0: abcDEXypqreX
\= Expect no match
\x{1bb}XY
No match
\x{2b0}XY
No match
- !XY
+ !XY
No match
/^\p{L&}+?X/utf
@@ -2158,18 +2158,18 @@
0: AX
aXY
0: aX
- AbcdeXyz
+ AbcdeXyz
0: AbcdeX
\x{1c5}AbXY
0: \x{1c5}AbX
- abcDEXypqreXlmn
+ abcDEXypqreXlmn
0: abcDEX
\= Expect no match
\x{1bb}XY
No match
\x{2b0}XY
No match
- !XY
+ !XY
No match
/^[\p{L&}]+?X/utf
@@ -2177,18 +2177,18 @@
0: AX
aXY
0: aX
- AbcdeXyz
+ AbcdeXyz
0: AbcdeX
\x{1c5}AbXY
0: \x{1c5}AbX
- abcDEXypqreXlmn
+ abcDEXypqreXlmn
0: abcDEX
\= Expect no match
\x{1bb}XY
No match
\x{2b0}XY
No match
- !XY
+ !XY
No match
/^\P{L&}X/utf
@@ -2201,7 +2201,7 @@
\= Expect no match
\x{1c5}XY
No match
- AXY
+ AXY
No match
/^[\P{L&}]X/utf
@@ -2214,7 +2214,7 @@
\= Expect no match
\x{1c5}XY
No match
- AXY
+ AXY
No match
/^(\p{Z}[^\p{C}\p{Z}]+)*$/
@@ -2223,7 +2223,7 @@
1: \xa0!
/^[\pL](abc)(?1)/
- AabcabcYZ
+ AabcabcYZ
0: Aabcabc
1: abc
@@ -2238,7 +2238,7 @@
0: \x{1b00}\x{12000}\x{7c0}\x{a840}\x{10900}
# Check property support in non-UTF mode
-
+
/\p{L}{4}/
123abcdefg
0: abcd
@@ -2249,15 +2249,15 @@
\= Expect no match
\x8aBCD
No match
-
+
/\X?\d/
\= Expect no match
- \x8aBCD
+ \x8aBCD
No match
/\P{L}?\d/
\= Expect no match
- \x8aBCD
+ \x8aBCD
No match
/[\PPP\x8a]{1,}\x80/
@@ -2267,54 +2267,54 @@
/^[\p{Arabic}]/utf
\x{604}
0: \x{604}
- \x{60e}
+ \x{60e}
0: \x{60e}
- \x{656}
+ \x{656}
0: \x{656}
- \x{657}
+ \x{657}
0: \x{657}
- \x{658}
+ \x{658}
0: \x{658}
- \x{659}
+ \x{659}
0: \x{659}
- \x{65a}
+ \x{65a}
0: \x{65a}
- \x{65b}
+ \x{65b}
0: \x{65b}
- \x{65c}
+ \x{65c}
0: \x{65c}
- \x{65d}
+ \x{65d}
0: \x{65d}
- \x{65e}
+ \x{65e}
0: \x{65e}
\x{65f}
0: \x{65f}
- \x{66a}
+ \x{66a}
0: \x{66a}
- \x{6e9}
+ \x{6e9}
0: \x{6e9}
\x{6ef}
0: \x{6ef}
- \x{6fa}
+ \x{6fa}
0: \x{6fa}
/^\p{Cyrillic}/utf
- \x{1d2b}
+ \x{1d2b}
0: \x{1d2b}
-
+
/^\p{Common}/utf
\x{2116}
0: \x{2116}
- \x{1D183}
+ \x{1D183}
0: \x{1d183}
/^\p{Inherited}/utf
- \x{200c}
+ \x{200c}
0: \x{200c}
\= Expect no match
\x{64a}
No match
- \x{656}
+ \x{656}
No match
/^\p{Shavian}/utf
@@ -2322,13 +2322,13 @@
0: \x{10450}
\x{1047f}
0: \x{1047f}
-
+
/^\p{Deseret}/utf
\x{10400}
0: \x{10400}
\x{1044f}
0: \x{1044f}
-
+
/^\p{Osmanya}/utf
\x{10480}
0: \x{10480}
@@ -2343,8 +2343,48 @@
No match
\x{1049f}
No match
- \x{104aa}
+ \x{104aa}
No match
+
+/\p{katakana}/utf
+ \x{30a1}
+ 0: \x{30a1}
+ \x{3001}
+ 0: \x{3001}
+
+/\p{scx:katakana}/utf
+ \x{30a1}
+ 0: \x{30a1}
+ \x{3001}
+ 0: \x{3001}
+
+/\p{script extensions:katakana}/utf
+ \x{30a1}
+ 0: \x{30a1}
+ \x{3001}
+ 0: \x{3001}
+
+/\p{sc:katakana}/utf
+ \x{30a1}
+ 0: \x{30a1}
+\= Expect no match
+ \x{3001}
+No match
+
+/\p{script:katakana}/utf
+ \x{30a1}
+ 0: \x{30a1}
+\= Expect no match
+ \x{3001}
+No match
+
+/\p{sc:katakana}{3,}/utf
+ \x{30a1}\x{30fa}\x{32d0}\x{1b122}\x{ff66}\x{3001}ABC
+ 0: \x{30a1}\x{30fa}\x{32d0}\x{1b122}\x{ff66}
+
+/\p{sc:katakana}{3,}?/utf
+ \x{30a1}\x{30fa}\x{32d0}\x{1b122}\x{ff66}\x{3001}ABC
+ 0: \x{30a1}\x{30fa}\x{32d0}
/\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}/utf
\x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}====
@@ -2353,14 +2393,14 @@
/\x{a77d}\x{1d79}/i,utf
\x{a77d}\x{1d79}
0: \x{a77d}\x{1d79}
- \x{1d79}\x{a77d}
+ \x{1d79}\x{a77d}
0: \x{1d79}\x{a77d}
/\x{a77d}\x{1d79}/utf
\x{a77d}\x{1d79}
0: \x{a77d}\x{1d79}
-\= Expect no match
- \x{1d79}\x{a77d}
+\= Expect no match
+ \x{1d79}\x{a77d}
No match
/(A)\1/i,utf
@@ -2390,7 +2430,7 @@
\x{10b}\x{10a}
0: \x{10b}\x{10a}
1: \x{10b}
-
+
# The next two tests are for property support in non-UTF mode
/(?:\p{Lu}|\x20)+/
@@ -2412,29 +2452,29 @@
/^[[:xdigit:]]*/utf,ucp
1a\x{660}\x{bef}\x{16ee}
0: 1a
-
+
/^\d+/utf,ucp
1\x{660}\x{bef}\x{16ee}
0: 1\x{660}\x{bef}
-
+
/^[[:digit:]]+/utf,ucp
1\x{660}\x{bef}\x{16ee}
0: 1\x{660}\x{bef}
/^>\s+/utf,ucp
- >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
+ >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
0: > \x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{09}\x{0b}
-
+
/^>\pZ+/utf,ucp
- >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
+ >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
0: > \x{a0}\x{1680}\x{2028}\x{2029}\x{202f}
-
+
/^>[[:space:]]*/utf,ucp
- >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
+ >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
0: > \x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{09}\x{0b}
/^>[[:blank:]]*/utf,ucp
- >\x{20}\x{a0}\x{1680}\x{2000}\x{202f}\x{9}\x{b}\x{2028}
+ >\x{20}\x{a0}\x{1680}\x{2000}\x{202f}\x{9}\x{b}\x{2028}
0: > \x{a0}\x{1680}\x{2000}\x{202f}\x{09}
/^[[:alpha:]]*/utf,ucp
@@ -2446,7 +2486,7 @@
0: Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
/^[[:cntrl:]]*/utf,ucp
- \x{0}\x{09}\x{1f}\x{7f}\x{9f}
+ \x{0}\x{09}\x{1f}\x{7f}\x{9f}
0: \x{00}\x{09}\x{1f}\x{7f}\x{9f}
/^[[:graph:]]*/utf,ucp
@@ -2463,28 +2503,28 @@
/\p{Zs}*?\R/
\= Expect no match
- a\xFCb
+ a\xFCb
No match
/\p{Zs}*\R/
-\= Expect no match
- a\xFCb
+\= Expect no match
+ a\xFCb
No match
/ⱥ/i,utf
ⱥ
0: \x{2c65}
- Ⱥx
+ Ⱥx
0: \x{23a}
- Ⱥ
+ Ⱥ
0: \x{23a}
/[ⱥ]/i,utf
ⱥ
0: \x{2c65}
- Ⱥx
+ Ⱥx
0: \x{23a}
- Ⱥ
+ Ⱥ
0: \x{23a}
/Ⱥ/i,utf
@@ -2492,8 +2532,8 @@
0: \x{23a}
ⱥ
0: \x{2c65}
-
-# These are tests for extended grapheme clusters
+
+# These are tests for extended grapheme clusters
/^\X/utf,aftertext
G\x{34e}\x{34e}X
@@ -2511,7 +2551,7 @@
\x{1100}\x{34e}X
0: \x{1100}\x{34e}
0+ X
- \x{1b04}\x{1b04}X
+ \x{1b04}\x{1b04}X
0: \x{1b04}\x{1b04}
0+ X
*These match up to the roman letters
@@ -2631,12 +2671,12 @@
*There are no Prepend characters, so we can't test Prepend, CR
0: *
0+ There are no Prepend characters, so we can't test Prepend, CR
-
+
/^(?>\X{2})X/utf,aftertext
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
-
+
/^\X{2,4}X/utf,aftertext
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
@@ -2688,21 +2728,21 @@
0: \x{1e9e}\x{df}
/\x{1f88}+/i,utf
- \x{1f88}\x{1f80}
+ \x{1f88}\x{1f80}
0: \x{1f88}\x{1f80}
/[z\x{1f88}]+/i,utf
- \x{1f88}\x{1f80}
+ \x{1f88}\x{1f80}
0: \x{1f88}\x{1f80}
-
+
# Check a reference with more than one other case
-/^(\x{00b5})\1{2}$/i,utf
- \x{00b5}\x{039c}\x{03bc}
+/^(\x{00b5})\1{2}$/i,utf
+ \x{00b5}\x{039c}\x{03bc}
0: \x{b5}\x{39c}\x{3bc}
1: \x{b5}
-
-# Characters with more than one other case; test in classes
+
+# Characters with more than one other case; test in classes
/[z\x{00b5}]+/i,utf
\x{00b5}\x{039c}\x{03bc}
@@ -2845,15 +2885,15 @@
0: \x{39a}\x{3ba}\x{3f0}
/[z\x{03a0}]+/i,utf
- \x{03a0}\x{03c0}\x{03d6}
+ \x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
/[z\x{03c0}]+/i,utf
- \x{03a0}\x{03c0}\x{03d6}
+ \x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
/[z\x{03d6}]+/i,utf
- \x{03a0}\x{03c0}\x{03d6}
+ \x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
/[z\x{03a1}]+/i,utf
@@ -2881,15 +2921,15 @@
0: \x{3a3}\x{3c2}\x{3c3}
/[z\x{03a6}]+/i,utf
- \x{03a6}\x{03c6}\x{03d5}
+ \x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
/[z\x{03c6}]+/i,utf
- \x{03a6}\x{03c6}\x{03d5}
+ \x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
/[z\x{03d5}]+/i,utf
- \x{03a6}\x{03c6}\x{03d5}
+ \x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
/[z\x{03c9}]+/i,utf
@@ -2916,7 +2956,7 @@
\x{1e60}\x{1e61}\x{1e9b}
0: \x{1e60}\x{1e61}\x{1e9b}
-# Perl 5.12.4 gets these wrong, but 5.15.3 is OK
+# Perl 5.12.4 gets these wrong, but 5.15.3 is OK
/[z\x{004b}]+/i,utf
\x{004b}\x{006b}\x{212a}
@@ -2941,8 +2981,8 @@
/[z\x{017f}]+/i,utf
\x{0053}\x{0073}\x{017f}
0: Ss\x{17f}
-
-# --------------------------------------
+
+# --------------------------------------
/(ΣΆΜΟΣ) \1/i,utf
ΣΆΜΟΣ ΣΆΜΟΣ
@@ -2957,7 +2997,7 @@
σάμος σάμοσ
0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c3}
1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
- σάμος ΣΆΜΟΣ
+ σάμος ΣΆΜΟΣ
0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
@@ -2974,7 +3014,7 @@
σάμος σάμοσ
0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c3}
1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
- σάμος ΣΆΜΟΣ
+ σάμος ΣΆΜΟΣ
0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
@@ -2986,7 +3026,7 @@
0: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3} \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}\x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}\x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
1: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
-# Perl matches these
+# Perl matches these
/\x{00b5}+/i,utf
\x{00b5}\x{039c}\x{03bc}
@@ -3094,7 +3134,7 @@
/\x{03d0}+/i,utf
\x{0392}\x{03b2}\x{03d0}
0: \x{392}\x{3b2}\x{3d0}
-
+
/\x{0395}+/i,utf
\x{0395}\x{03b5}\x{03f5}
@@ -3124,7 +3164,7 @@
/\x{03f4}+/i,utf
\x{0398}\x{03b8}\x{03d1}\x{03f4}
0: \x{398}\x{3b8}\x{3d1}\x{3f4}
-
+
/\x{039a}+/i,utf
\x{039a}\x{03ba}\x{03f0}
@@ -3137,18 +3177,18 @@
/\x{03f0}+/i,utf
\x{039a}\x{03ba}\x{03f0}
0: \x{39a}\x{3ba}\x{3f0}
-
+
/\x{03a0}+/i,utf
- \x{03a0}\x{03c0}\x{03d6}
+ \x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
/\x{03c0}+/i,utf
- \x{03a0}\x{03c0}\x{03d6}
+ \x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
/\x{03d6}+/i,utf
- \x{03a0}\x{03c0}\x{03d6}
+ \x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
@@ -3176,18 +3216,18 @@
/\x{03c3}+/i,utf
\x{03A3}\x{03C2}\x{03C3}
0: \x{3a3}\x{3c2}\x{3c3}
-
+
/\x{03a6}+/i,utf
- \x{03a6}\x{03c6}\x{03d5}
+ \x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
/\x{03c6}+/i,utf
- \x{03a6}\x{03c6}\x{03d5}
+ \x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
/\x{03d5}+/i,utf
- \x{03a6}\x{03c6}\x{03d5}
+ \x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
@@ -3202,7 +3242,7 @@
/\x{2126}+/i,utf
\x{03c9}\x{03a9}\x{2126}
0: \x{3c9}\x{3a9}\x{2126}
-
+
/\x{1e60}+/i,utf
\x{1e60}\x{1e61}\x{1e9b}
@@ -3215,7 +3255,7 @@
/\x{1e9b}+/i,utf
\x{1e60}\x{1e61}\x{1e9b}
0: \x{1e60}\x{1e61}\x{1e9b}
-
+
/\x{1e9e}+/i,utf
\x{1e9e}\x{00df}
@@ -3224,17 +3264,17 @@
/\x{00df}+/i,utf
\x{1e9e}\x{00df}
0: \x{1e9e}\x{df}
-
+
/\x{1f88}+/i,utf
- \x{1f88}\x{1f80}
+ \x{1f88}\x{1f80}
0: \x{1f88}\x{1f80}
/\x{1f80}+/i,utf
- \x{1f88}\x{1f80}
+ \x{1f88}\x{1f80}
0: \x{1f88}\x{1f80}
-# Perl 5.12.4 gets these wrong, but 5.15.3 is OK
+# Perl 5.12.4 gets these wrong, but 5.15.3 is OK
/\x{004b}+/i,utf
\x{004b}\x{006b}\x{212a}
@@ -3265,14 +3305,14 @@
1234
0: 1234
\= Expect no match
- 123
+ 123
No match
/^\X*\w{4}/utf
1234
0: 1234
\= Expect no match
- 123
+ 123
No match
/^A\s+Z/utf,ucp
@@ -3349,7 +3389,7 @@
No match
\x{e001f}
No match
- \x{e0080}
+ \x{e0080}
No match
/^[[:print:]]+$/utf,ucp
@@ -3357,9 +3397,9 @@
0: Space: \x{a0}
\x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
0: \x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
- \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
+ \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
0: \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
- \x{202f}\x{205f}
+ \x{202f}\x{205f}
0: \x{202f}\x{205f}
\x{3000}
0: \x{3000}
@@ -3414,7 +3454,7 @@
No match
\x{e001f}
No match
- \x{e0080}
+ \x{e0080}
No match
/^[[:punct:]]+$/utf,ucp
@@ -3422,12 +3462,12 @@
0: $+<=>^`|~
!\"#%&'()*,-./:;?@[\\]_{}
0: !"#%&'()*,-./:;?@[\]_{}
- \x{a1}\x{a7}
+ \x{a1}\x{a7}
0: \x{a1}\x{a7}
- \x{37e}
+ \x{37e}
0: \x{37e}
\= Expect no match
- abcde
+ abcde
No match
/^[[:^graph:]]+$/utf,ucp
@@ -3481,9 +3521,9 @@
No match
\x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
No match
- \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
+ \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
No match
- \x{202f}\x{205f}
+ \x{202f}\x{205f}
No match
\x{3000}
No match
@@ -3523,22 +3563,22 @@
No match
/^[[:^punct:]]+$/utf,ucp
- abcde
+ abcde
0: abcde
\= Expect no match
\$+<=>^`|~
No match
!\"#%&'()*,-./:;?@[\\]_{}
No match
- \x{a1}\x{a7}
+ \x{a1}\x{a7}
No match
- \x{37e}
+ \x{37e}
No match
/[RST]+/i,utf,ucp
Ss\x{17f}
0: Ss\x{17f}
-
+
/[R-T]+/i,utf,ucp
Ss\x{17f}
0: Ss\x{17f}
@@ -3550,8 +3590,8 @@
/^s?c/im,utf
scat
0: sc
-
-# The next four tests are for repeated caseless back references when the
+
+# The next four tests are for repeated caseless back references when the
# code unit length of the matched text is different to that of the original
# group in the UTF-8 case.
@@ -3607,7 +3647,7 @@
0: x
/[[:punct:]]/utf,ucp
- \x{b4}
+ \x{b4}
No match
/[[:^ascii:]]/utf,ucp
@@ -3619,12 +3659,12 @@
0: \x{300}
\x{37e}
0: \x{37e}
-\= Expect no match
+\= Expect no match
aa
No match
99
No match
-
+
/[[:^ascii:]\w]/utf,ucp
aa
0: a
@@ -3662,7 +3702,7 @@
0: \x{100}
\x{200}
0: \x{200}
-\= Expect no match
+\= Expect no match
aa
No match
99
@@ -3692,7 +3732,7 @@
/(?=.*b)\pL/
11bb
0: b
-
+
/(?(?=.*b)(?=.*b)\pL|.*c)/
11bb
0: b
@@ -3704,10 +3744,10 @@
/^\x{123}+?$/i,utf,no_auto_possess
\x{123}\x{122}\x{123}
0: \x{123}\x{122}\x{123}
-\= Expect no match
+\= Expect no match
\x{123}\x{124}\x{123}
No match
-
+
/\N{U+1234}/utf
\x{1234}
0: \x{1234}
@@ -3715,7 +3755,7 @@
/[\N{U+1234}]/utf
\x{1234}
0: \x{1234}
-
+
# Test the full list of Unicode "Pattern White Space" characters that are to
# be ignored by /x. The pattern lines below may show up oddly in text editors
# or when listed to the screen. Note that characters such as U+2002, which are
@@ -3731,8 +3771,8 @@
\= Expect no match
AB
No match
-
-# -------
+
+# -------
/[^\x{100}-\x{ffff}]*[\x80-\xff]/utf
\x{99}\x{99}\x{99}
@@ -3745,7 +3785,7 @@
/[^\x{100}-\x{ffff}]*[\x80-\xff]/i,utf
\x{99}\x{99}\x{99}
0: \x{99}\x{99}\x{99}
-
+
# Script run tests
/^(*script_run:.{4})/utf
@@ -3767,7 +3807,7 @@
0: \x{3105}\x{2e80}\x{2e80}\x{3105}
\x{0300}cd! Inherited Latin Latin Common
0: \x{300}cd!
- \x{0391}12\x{03a9} Greek Common-digits Greek
+ \x{0391}12\x{03a9} Greek Common-digits Greek
0: \x{391}12\x{3a9}
\x{0400}12\x{fe2f} Cyrillic Common-digits Cyrillic
0: \x{400}12\x{fe2f}
@@ -3791,7 +3831,7 @@
0: \x{980}\x{9e6}\x{9e7}\x{993}
!cde Common Latin Latin Latin
0: !cde
- A..B Latin Common Common Latin
+ A..B Latin Common Common Latin
0: A..B
0abc Ascii-digit Latin Latin Latin
0: 0abc
@@ -3808,13 +3848,13 @@
No match
\x{1100}\x{2e80}\x{3041}\x{1101} Hangul Han Hiragana Hangul
No match
- \x{0391}\x{09e6}\x{09e7}\x{03a9} Greek Bengali digits Greek
+ \x{0391}\x{09e6}\x{09e7}\x{03a9} Greek Bengali digits Greek
No match
\x{0600}7\x{0669}\x{1eef1} Arabic ascii-digit Arabic-digit Arabic
No match
\x{0600}\x{0669}7\x{1eef1} Arabic Arabic-digit ascii-digit Arabic
No match
- A5\x{ff19}B Latin Common-ascii/notascii-digits Latin
+ A5\x{ff19}B Latin Common-ascii/notascii-digits Latin
No match
\x{0300}cd\x{0391} Inherited Latin Latin Greek
No match
@@ -3826,7 +3866,7 @@
No match
\x{2e80}\x{3105}\x{2e80}\x{30a1} Han Bopomofo Han Katakana
No match
-
+
/^(*sr:.{4}|..)/utf
\x{2e80}\x{3105}\x{2e80}\x{30a1} Han Bopomofo Han Katakana
0: \x{2e80}\x{3105}
@@ -3858,7 +3898,7 @@
/^(*sr:\x{2e80}*)\x{2e80}/utf
\x{2e80}\x{2e80}\x{3105} Han Han Bopomofo
0: \x{2e80}\x{2e80}
-
+
/^(*sr:.*)Test/utf
Test script run on an empty string
0: Test
@@ -3876,7 +3916,7 @@
\= Expect no match
\x{1100}\x{2e80}\x{3041}\x{1101} Hangul Han Hiragana Hangul
No match
-
+
/^(*sr:\S*)/utf
\x{1cf4}\x{20f0}\x{900}\x{11305} [Dev,Gran,Kan] [Dev,Gran,Lat] Dev Gran
0: \x{1cf4}\x{20f0}\x{900}
@@ -3890,7 +3930,7 @@
0: \x{20f0}ABC
XYZ\x{20f0}ABC Lat [Dev,Gran,Lat] Lat
0: XYZ\x{20f0}ABC
- \x{a36}\x{a33}\x{900} [Dev,...] [Dev,...] Dev
+ \x{a36}\x{a33}\x{900} [Dev,...] [Dev,...] Dev
0: \x{a36}\x{a33}
\x{3001}\x{2e80}\x{3041}\x{30a1} [Bopo, Han, etc] Han Hira Kata
0: \x{3001}\x{2e80}\x{3041}\x{30a1}
@@ -3960,7 +4000,7 @@
0: \x{102e0}\x{6d4}
\x{102e0}\x{06d4}\x{10d30} [Arabic Coptic] [Arab Rohingya] Rohingya
0: \x{102e0}\x{6d4}
-
+
# Test loop breaking for empty string match
/^(*sr:A|)*BCD/utf
@@ -3968,16 +4008,16 @@
0: AABCD
ABCD
0: ABCD
- BCD
+ BCD
0: BCD
-
-# The use of (*ACCEPT) breaks script run checking
+
+# The use of (*ACCEPT) breaks script run checking
/^(*sr:.*(*ACCEPT)ZZ)/utf
\x{1100}\x{2e80}\x{3041}\x{1101} Hangul Han Hiragana Hangul
0: \x{1100}\x{2e80}\x{3041}\x{1101} Hangul Han Hiragana Hangul
-# -------
+# -------
# Test group names containing non-ASCII letters and digits
@@ -4021,15 +4061,408 @@
0: \xf3aaa\xe4\xea\xeb\xfea
/Я/i,utf
- \x{42f}
+ \x{42f}
0: \x{42f}
- \x{44f}
+ \x{44f}
0: \x{44f}
/(?=Я)/i,utf
- \x{42f}
+ \x{42f}
0:
- \x{44f}
+ \x{44f}
0:
+# -----------------------------------------------------------------------------
+# Tests for bidi control and bidi class properties.
+
+/\p{ bidi_control }/utf
+ -->\x{202c}<--
+ 0: \x{202c}
+
+/\p{bidicontrol}+/utf
+ -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: \x{61c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}
+ -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: \x{2066}\x{2067}\x{2068}\x{2069}
+
+/\p{bidic}+?/utf
+ -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: \x{61c}
+ -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: \x{2066}
+
+/\p{bidi_control}++/utf
+ -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: \x{61c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}
+ -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: \x{2066}\x{2067}\x{2068}\x{2069}
+
+/[\p{bidi_c}]/utf
+ -->\x{202c}<--
+ 0: \x{202c}
+
+/[\p{bidicontrol}]+/utf
+ -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: \x{61c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}
+ -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: \x{2066}\x{2067}\x{2068}\x{2069}
+
+/[\p{bidicontrol}]+?/utf
+ -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: \x{61c}
+ -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: \x{2066}
+
+/[\p{bidicontrol}]++/utf
+ -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: \x{61c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}
+ -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: \x{2066}\x{2067}\x{2068}\x{2069}
+
+/[\p{bidicontrol}<>]+/utf
+ -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: >\x{61c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<
+ -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: >\x{2066}\x{2067}\x{2068}\x{2069}<
+
+/\P{bidicontrol}+/g,utf
+ -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: -->
+ 0: <--
+ -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: -->
+ 0: <--
+
+/\p{^bidicontrol}+/g,utf
+ -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: -->
+ 0: <--
+ -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: -->
+ 0: <--
+
+/\p{bidi class = al}/utf
+ -->\x{061D}<--
+ 0: \x{61d}
+
+/\p{bc = al}+/utf
+ -->\x{061D}\x{061e}\x{061f}<--
+ 0: \x{61d}\x{61e}\x{61f}
+
+/\p{bidi_class : AL}+?/utf
+ -->\x{061D}\x{061e}\x{061f}<--
+ 0: \x{61d}
+
+/\p{Bidi_Class : AL}++/utf
+ -->\x{061D}\x{061e}\x{061f}<--
+ 0: \x{61d}\x{61e}\x{61f}
+
+/\p{b_c = aN}+/utf
+ -->\x{061D}\x{0602}\x{0604}\x{061f}<--
+ 0: \x{602}\x{604}
+
+/\p{bidi class = B}+/utf
+ -->\x{0a}\x{0d}\x{01c}\x{01e}\x{085}\x{2029}<--
+ 0: \x{0a}\x{0d}\x{1c}\x{1e}\x{85}\x{2029}
+
+/\p{bidi class:BN}+/utf
+ -->\x{0}\x{08}\x{200c}\x{fffe}\x{dfffe}\x{10ffff}<--
+ 0: \x{00}\x{08}\x{200c}\x{fffe}\x{dfffe}\x{10ffff}
+
+/\p{bidiclass:cs}+/utf
+ -->,.\x{060c}\x{ff1a}<--
+ 0: ,.\x{60c}\x{ff1a}
+
+/\p{bidiclass:En}+/utf
+ -->09\x{b2}\x{2074}\x{1fbf9}<--
+ 0: 09\x{b2}\x{2074}\x{1fbf9}
+
+/\p{bidiclass:es}+/utf
+ ==>+-\x{207a}\x{ff0d}<==
+ 0: +-\x{207a}\x{ff0d}
+
+/\p{bidiclass:et}+/utf
+ -->#\{24}%\x{a2}\x{A838}\x{1e2ff}<--
+ 0: #
+
+/\p{bidiclass:FSI}+/utf
+ -->\x{2068}<--
+ 0: \x{2068}
+
+/\p{bidi class:L}+/utf
+ -->ABC<--
+ 0: ABC
+
+/\P{bidi class:L}+/utf
+ -->ABC<--
+ 0: -->
+
+/\p{bidi class:LRE}+\p{bidiclass=lri}*\p{bidiclass:lro}/utf
+ -->\x{202a}\x{2066}\x{202d}<--
+ 0: \x{202a}\x{2066}\x{202d}
+
+/\p{bidi class:NSM}+/utf
+ -->\x{9bc}\x{a71}\x{e31}<--
+ 0: \x{9bc}\x{a71}\x{e31}
+
+/\p{bidi class:ON}+/utf
+ -->\x{21}'()*;@\x{384}\x{2039}<=-
+ 0: >!'()*;@\x{384}\x{2039}<=
+
+/\p{bidiclass:pdf}\p{bidiclass:pdi}/utf
+ -->\x{202c}\x{2069}<--
+ 0: \x{202c}\x{2069}
+
+/\p{bidi class:R}+/utf
+ -->\x{590}\x{5c6}\x{200f}\x{10805}<--
+ 0: \x{590}\x{5c6}\x{200f}\x{10805}
+
+/\p{bidi class:RLE}+\p{bidi class:RLI}*\p{bidi class:RLO}+/utf
+ -->\x{202b}\x{2067}\x{202e}<--
+ 0: \x{202b}\x{2067}\x{202e}
+
+/\p{bidi class:S}+\p{bidiclass:WS}+/utf
+ -->\x{9}\x{b}\x{1f} \x{c} \x{2000} \x{3000}<--
+ 0: \x{09}\x{0b}\x{1f} \x{0c} \x{2000} \x{3000}
+
+# -----------------------------------------------------------------------------
+
+/[\p{taml}\p{sc:ugar}]+/utf
+ \x{0b82}\x{10380}
+ 0: \x{b82}\x{10380}
+
+/^[\p{sc:Arabic}]/utf
+\= Expect no match
+ \x{650}
+No match
+ \x{651}
+No match
+ \x{652}
+No match
+ \x{653}
+No match
+ \x{654}
+No match
+ \x{655}
+No match
+
+# -----------------------------------------------------------------------------
+# Tests for newly-added Boolean Properties
+
+/\p{ahex}\p{asciihexdigit}/utf
+ >4F<
+ 0: 4F
+
+/\p{alpha}\p{alphabetic}/g,utf
+ >AB<>\x{148}\x{1234}
+ 0: AB
+ 0: \x{148}\x{1234}
+
+/\p{ascii}\p{ascii}/g,utf
+ >AB<>\x{148}\x{1234}
+ 0: >A
+ 0: B<
+
+/\p{Bidi_C}\p{bidicontrol}/g,utf
+ >\x{202d}\x{2069}<
+ 0: \x{202d}\x{2069}
+
+/\p{Bidi_M}\p{bidimirrored}/g,utf
+ >\x{202d}\x{2069}<>\x{298b}\x{bb}<
+ 0: <>
+ 0: \x{298b}\x{bb}
+
+/\p{cased}\p{cased}/g,utf
+ >AN<>\x{149}\x{120}<
+ 0: AN
+ 0: \x{149}\x{120}
+
+/\p{caseignorable}\p{ci}/g,utf
+ >AN<>\x{60}\x{859}<
+ 0: `\x{859}
+
+/\p{changeswhencasefolded}\p{cwcf}/g,utf
+ >AN<>\x{149}\x{120}<
+ 0: AN
+ 0: \x{149}\x{120}
+
+/\p{changeswhencasemapped}\p{cwcm}/g,utf
+ >AN<>\x{149}\x{120}<
+ 0: AN
+ 0: \x{149}\x{120}
+
+/\p{changeswhenlowercased}\p{cwl}/g,utf
+ >AN<>\x{149}\x{120}<>yz<
+ 0: AN
+
+/\p{changeswhenuppercased}\p{cwu}/g,utf
+ >AN<>\x{149}\x{120}<>yz<
+ 0: yz
+
+/\p{changeswhentitlecased}\p{cwt}/g,utf
+ >AN<>\x{149}\x{120}<>yz<
+ 0: yz
+
+/\p{dash}\p{dash}/g,utf
+ >\x{2d}\x{1400}<>yz<
+ 0: -\x{1400}
+
+/\p{defaultignorablecodepoint}\p{di}/g,utf
+ >AN<>\x{ad}\x{e0fff}<>yz<
+ 0: \x{ad}\x{e0fff}
+
+/\p{deprecated}\p{dep}/g,utf
+ >AN<>\x{149}\x{e0001}<>yz<
+ 0: \x{149}\x{e0001}
+
+/\p{diacritic}\p{dia}/g,utf
+ >AN<>\x{f84}\x{5e}<>yz<
+ 0: \x{f84}^
+
+/\p{emojicomponent}\p{ecomp}/g,utf
+ >AN<>\x{200d}\x{e007f}<>yz<
+ 0: \x{200d}\x{e007f}
+
+/\p{emojimodifier}\p{emod}/g,utf
+ >AN<>\x{1f3fb}\x{1f3ff}<>yz<
+ 0: \x{1f3fb}\x{1f3ff}
+
+/\p{emojipresentation}\p{epres}/g,utf
+ >AN<>\x{2653}\x{1f6d2}<>yz<
+ 0: \x{2653}\x{1f6d2}
+
+/\p{extender}\p{ext}/g,utf
+ >AN<>\x{1e944}\x{b7}<>yz<
+ 0: \x{1e944}\x{b7}
+
+/\p{extendedpictographic}\p{extpict}/g,utf
+ >AN<>\x{26cf}\x{ae}<>yz<
+ 0: \x{26cf}\x{ae}
+
+/\p{graphemebase}\p{grbase}/g,utf
+ >AN<>\x{10f}\x{60}<>yz<
+ 0: >A
+ 0: N<
+ 0: >\x{10f}
+ 0: `<
+ 0: >y
+ 0: z<
+
+/\p{graphemeextend}\p{grext}/g,utf
+ >AN<>\x{300}\x{b44}<>yz<
+ 0: \x{300}\x{b44}
+
+/\p{hexdigit}\p{hex}/g,utf
+ >AF23<>\x{ff46}\x{ff10}<>yz<
+ 0: AF
+ 0: 23
+ 0: \x{ff46}\x{ff10}
+
+/\p{idcontinue}\p{idc}/g,utf
+ >AF23<>\x{146}\x{7a}<>yz<
+ 0: AF
+ 0: 23
+ 0: \x{146}z
+ 0: yz
+
+/\p{ideographic}\p{ideo}/g,utf
+ >AF23<>\x{30000}\x{3006}<>yz<
+ 0: \x{30000}\x{3006}
+
+/\p{idstart}\p{ids}/g,utf
+ >AF23<>\x{146}\x{7a}<>yz<
+ 0: AF
+ 0: \x{146}z
+ 0: yz
+
+/\p{idsbinaryoperator}\p{idsb}/g,utf
+ >AF23<>\x{2ff0}\x{2ffb}<>yz<\x{2ff2}\x{2ff1}
+ 0: \x{2ff0}\x{2ffb}
+
+/\p{idstrinaryoperator}\p{idst}/g,utf
+ >AF23<>\x{2ff2}\x{2ff3}<>yz<
+ 0: \x{2ff2}\x{2ff3}
+
+/\p{Join Control}\p{joinc}/g,utf
+ >AF23<>\x{200c}\x{200d}<>yz<
+ 0: \x{200c}\x{200d}
+
+/\p{logical_order_exception}\p{loe}/g,utf
+ >AF23<>\x{e40}\x{aabc}<>yz<
+ 0: \x{e40}\x{aabc}
+
+/\p{Lowercase}\p{lower}/g,utf
+ >AF23<>\x{146}\x{7a}<>yz<
+ 0: \x{146}z
+ 0: yz
+
+/\p{math}\p{math}/g,utf
+ >AF23<>\x{2215}\x{2b}<>yz<
+ 0: <>
+ 0: \x{2215}+
+ 0: <>
+
+/\p{Non Character Code Point}\p{nchar}/g,utf
+ >AF23<>\x{10ffff}\x{fdd0}<>yz<
+ 0: \x{10ffff}\x{fdd0}
+
+/\p{patternsyntax}\p{patsyn}/g,utf
+ >AF23<>\x{21cd}\x{21}<>yz<
+ 0: <>
+ 0: \x{21cd}!
+ 0: <>
+
+/\p{patternwhitespace}\p{patws}/g,utf
+ >AF23<>\x{2029}\x{85}<>yz<
+ 0: \x{2029}\x{85}
+
+/\p{prependedconcatenationmark}\p{pcm}/g,utf
+ >AF23<>\x{600}\x{110cd}<>yz<
+ 0: \x{600}\x{110cd}
+
+/\p{quotationmark}\p{qmark}/g,utf
+ >AF23<>\x{ff63}\x{22}<>yz<
+ 0: \x{ff63}"
+
+/\p{radical}\p{radical}/g,utf
+ >AF23<>\x{2fd5}\x{2e80}<>yz<
+ 0: \x{2fd5}\x{2e80}
+
+/\p{regionalindicator}\p{ri}/g,utf
+ >AF23<>\x{1f1e6}\x{1f1ff}<>yz<
+ 0: \x{1f1e6}\x{1f1ff}
+
+/=\p{whitespace}\p{space}\p{wspace}=/g,utf
+ >AF23<=\x{d}\x{1680}\x{3000}=>yz<
+ 0: =\x{0d}\x{1680}\x{3000}=
+
+/\p{sentenceterminal}\p{sterm}/g,utf
+ >AF23<>\x{1da88}\x{2e}<>yz<
+ 0: \x{1da88}.
+
+/\p{terminalpunctuation}\p{term}/g,utf
+ >AF23<>\x{1da88}\x{2e}<>yz<
+ 0: \x{1da88}.
+
+/\p{unified ideograph}\p{uideo}/g,utf
+ >AF23<>\x{30000}\x{3400}<>yz<
+ 0: \x{30000}\x{3400}
+
+/\p{UPPERcase}\p{upper}/g,utf
+ >AF23<>\x{146}\x{7a}<>yz<
+ 0: AF
+
+/\p{variationselector}\p{vs}/g,utf
+ >AF23<>\x{180b}\x{e01ef}<>yz<
+ 0: \x{180b}\x{e01ef}
+
+/\p{xidcontinue}\p{xidc}/g,utf
+ >AF23<>\x{146}\x{30}<>yz<
+ 0: AF
+ 0: 23
+ 0: \x{146}0
+ 0: yz
+
+# -----------------------------------------------------------------------------
+
# End of testinput4