summaryrefslogtreecommitdiff
path: root/ext/pcre/pcrelib/testdata
diff options
context:
space:
mode:
Diffstat (limited to 'ext/pcre/pcrelib/testdata')
-rw-r--r--ext/pcre/pcrelib/testdata/grepoutput39
-rw-r--r--ext/pcre/pcrelib/testdata/testinput141
-rw-r--r--ext/pcre/pcrelib/testdata/testinput10308
-rw-r--r--ext/pcre/pcrelib/testdata/testinput241
-rw-r--r--ext/pcre/pcrelib/testdata/testinput6509
-rw-r--r--ext/pcre/pcrelib/testdata/testinput767
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput162
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput10635
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput2124
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput512
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput6771
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput7195
12 files changed, 2751 insertions, 53 deletions
diff --git a/ext/pcre/pcrelib/testdata/grepoutput b/ext/pcre/pcrelib/testdata/grepoutput
index e9072bcd61..733b9d6a3b 100644
--- a/ext/pcre/pcrelib/testdata/grepoutput
+++ b/ext/pcre/pcrelib/testdata/grepoutput
@@ -93,6 +93,7 @@ RC=0
---------------------------- Test 13 -----------------------------
Here is the pattern again.
That time it was on a line by itself.
+seventeen
This line contains pattern not on a line by itself.
RC=0
---------------------------- Test 14 -----------------------------
@@ -370,11 +371,11 @@ RC=2
---------------------------- Test 34 -----------------------------
RC=2
---------------------------- Test 35 -----------------------------
+./testdata/grepinput8
./testdata/grepinputx
RC=0
---------------------------- Test 36 -----------------------------
./testdata/grepinput3
-./testdata/grepinput8
./testdata/grepinputx
RC=0
---------------------------- Test 37 -----------------------------
@@ -643,6 +644,7 @@ testdata/grepinputv:fox jumps
testdata/grepinputx:complete pair
testdata/grepinputx:That was a complete pair
testdata/grepinputx:complete pair
+testdata/grepinput3:triple: t7_txt s1_tag s_txt p_tag p_txt o_tag o_txt
RC=0
---------------------------- Test 85 -----------------------------
./testdata/grepinput3:Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
@@ -668,3 +670,38 @@ RC=0
---------------------------- Test 93 -----------------------------
The quick brown f
RC=0
+---------------------------- Test 94 -----------------------------
+./testdata/grepinput8
+./testdata/grepinputx
+RC=0
+---------------------------- Test 95 -----------------------------
+testdata/grepinputx:complete pair
+testdata/grepinputx:That was a complete pair
+testdata/grepinputx:complete pair
+RC=0
+---------------------------- Test 96 -----------------------------
+./testdata/grepinput3
+./testdata/grepinput8
+./testdata/grepinputx
+RC=0
+---------------------------- Test 97 -----------------------------
+./testdata/grepinput3
+./testdata/grepinputx
+RC=0
+---------------------------- Test 98 -----------------------------
+./testdata/grepinputx
+RC=0
+---------------------------- Test 99 -----------------------------
+./testdata/grepinput3
+./testdata/grepinputx
+RC=0
+---------------------------- Test 100 ------------------------------
+./testdata/grepinput:zerothe.
+./testdata/grepinput:zeroa
+./testdata/grepinput:zerothe.
+RC=0
+---------------------------- Test 101 ------------------------------
+./testdata/grepinput:.|zero|the|.
+./testdata/grepinput:zero|a
+./testdata/grepinput:.|zero|the|.
+RC=0
diff --git a/ext/pcre/pcrelib/testdata/testinput1 b/ext/pcre/pcrelib/testdata/testinput1
index 1ec7689a1c..e6d048ad8c 100644
--- a/ext/pcre/pcrelib/testdata/testinput1
+++ b/ext/pcre/pcrelib/testdata/testinput1
@@ -5262,4 +5262,45 @@ name were given. ---/
/((?>a?)*)*c/
aac
+/(?>.*?a)(?<=ba)/
+ aba
+
+/(?:.*?a)(?<=ba)/
+ aba
+
+/.*?a(*PRUNE)b/
+ aab
+
+/.*?a(*PRUNE)b/s
+ aab
+
+/^a(*PRUNE)b/s
+ aab
+
+/.*?a(*SKIP)b/
+ aab
+
+/(?>.*?a)b/s
+ aab
+
+/(?>.*?a)b/
+ aab
+
+/(?>^a)b/s
+ aab
+
+/(?>.*?)(?<=(abcd)|(wxyz))/
+ alphabetabcd
+ endingwxyz
+
+/(?>.*)(?<=(abcd)|(wxyz))/
+ alphabetabcd
+ endingwxyz
+
+"(?>.*)foo"
+ abcdfooxyz
+
+"(?>.*?)foo"
+ abcdfooxyz
+
/-- End of testinput1 --/
diff --git a/ext/pcre/pcrelib/testdata/testinput10 b/ext/pcre/pcrelib/testdata/testinput10
index 7856518e1a..f20dcb3d18 100644
--- a/ext/pcre/pcrelib/testdata/testinput10
+++ b/ext/pcre/pcrelib/testdata/testinput10
@@ -1026,4 +1026,312 @@
AA\P
AA\P\P
+/-- These are tests for extended grapheme clusters --/
+
+/^\X/8+
+ G\x{34e}\x{34e}X
+ \x{34e}\x{34e}X
+ \x04X
+ \x{1100}X
+ \x{1100}\x{34e}X
+ \x{1b04}\x{1b04}X
+ *These match up to the roman letters
+ \x{1111}\x{1111}L,L
+ \x{1111}\x{1111}\x{1169}L,L,V
+ \x{1111}\x{ae4c}L, LV
+ \x{1111}\x{ad89}L, LVT
+ \x{1111}\x{ae4c}\x{1169}L, LV, V
+ \x{1111}\x{ae4c}\x{1169}\x{1169}L, LV, V, V
+ \x{1111}\x{ae4c}\x{1169}\x{11fe}L, LV, V, T
+ \x{1111}\x{ad89}\x{11fe}L, LVT, T
+ \x{1111}\x{ad89}\x{11fe}\x{11fe}L, LVT, T, T
+ \x{ad89}\x{11fe}\x{11fe}LVT, T, T
+ *These match just the first codepoint (invalid sequence)
+ \x{1111}\x{11fe}L, T
+ \x{ae4c}\x{1111}LV, L
+ \x{ae4c}\x{ae4c}LV, LV
+ \x{ae4c}\x{ad89}LV, LVT
+ \x{1169}\x{1111}V, L
+ \x{1169}\x{ae4c}V, LV
+ \x{1169}\x{ad89}V, LVT
+ \x{ad89}\x{1111}LVT, L
+ \x{ad89}\x{1169}LVT, V
+ \x{ad89}\x{ae4c}LVT, LV
+ \x{ad89}\x{ad89}LVT, LVT
+ \x{11fe}\x{1111}T, L
+ \x{11fe}\x{1169}T, V
+ \x{11fe}\x{ae4c}T, LV
+ \x{11fe}\x{ad89}T, LVT
+ *Test extend and spacing mark
+ \x{1111}\x{ae4c}\x{0711}L, LV, extend
+ \x{1111}\x{ae4c}\x{1b04}L, LV, spacing mark
+ \x{1111}\x{ae4c}\x{1b04}\x{0711}\x{1b04}L, LV, spacing mark, extend, spacing mark
+ *Test CR, LF, and control
+ \x0d\x{0711}CR, extend
+ \x0d\x{1b04}CR, spacingmark
+ \x0a\x{0711}LF, extend
+ \x0a\x{1b04}LF, spacingmark
+ \x0b\x{0711}Control, extend
+ \x09\x{1b04}Control, spacingmark
+ *There are no Prepend characters, so we can't test Prepend, CR
+
+/^(?>\X{2})X/8+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+
+/^\X{2,4}X/8+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+
+/^\X{2,4}?X/8+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+
+/-- --/
+
+/\x{1e9e}+/8i
+ \x{1e9e}\x{00df}
+
+/[z\x{1e9e}]+/8i
+ \x{1e9e}\x{00df}
+
+/\x{00df}+/8i
+ \x{1e9e}\x{00df}
+
+/[z\x{00df}]+/8i
+ \x{1e9e}\x{00df}
+
+/\x{1f88}+/8i
+ \x{1f88}\x{1f80}
+
+/[z\x{1f88}]+/8i
+ \x{1f88}\x{1f80}
+
+/-- Perl matches these --/
+
+/\x{00b5}+/8i
+ \x{00b5}\x{039c}\x{03bc}
+
+/\x{039c}+/8i
+ \x{00b5}\x{039c}\x{03bc}
+
+/\x{03bc}+/8i
+ \x{00b5}\x{039c}\x{03bc}
+
+
+/\x{00c5}+/8i
+ \x{00c5}\x{00e5}\x{212b}
+
+/\x{00e5}+/8i
+ \x{00c5}\x{00e5}\x{212b}
+
+/\x{212b}+/8i
+ \x{00c5}\x{00e5}\x{212b}
+
+
+/\x{01c4}+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+
+/\x{01c5}+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+
+/\x{01c6}+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+
+
+/\x{01c7}+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+
+/\x{01c8}+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+
+/\x{01c9}+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+
+
+/\x{01ca}+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+
+/\x{01cb}+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+
+/\x{01cc}+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+
+
+/\x{01f1}+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+
+/\x{01f2}+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+
+/\x{01f3}+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+
+
+/\x{0345}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+
+/\x{0399}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+
+/\x{03b9}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+
+/\x{1fbe}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+
+
+/\x{0392}+/8i
+ \x{0392}\x{03b2}\x{03d0}
+
+/\x{03b2}+/8i
+ \x{0392}\x{03b2}\x{03d0}
+
+/\x{03d0}+/8i
+ \x{0392}\x{03b2}\x{03d0}
+
+
+/\x{0395}+/8i
+ \x{0395}\x{03b5}\x{03f5}
+
+/\x{03b5}+/8i
+ \x{0395}\x{03b5}\x{03f5}
+
+/\x{03f5}+/8i
+ \x{0395}\x{03b5}\x{03f5}
+
+
+/\x{0398}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+
+/\x{03b8}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+
+/\x{03d1}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+
+/\x{03f4}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+
+
+/\x{039a}+/8i
+ \x{039a}\x{03ba}\x{03f0}
+
+/\x{03ba}+/8i
+ \x{039a}\x{03ba}\x{03f0}
+
+/\x{03f0}+/8i
+ \x{039a}\x{03ba}\x{03f0}
+
+
+/\x{03a0}+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+
+/\x{03c0}+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+
+/\x{03d6}+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+
+
+/\x{03a1}+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+
+/\x{03c1}+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+
+/\x{03f1}+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+
+
+/\x{03a3}+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+
+/\x{03c2}+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+
+/\x{03c3}+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+
+
+/\x{03a6}+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+
+/\x{03c6}+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+
+/\x{03d5}+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+
+
+/\x{03c9}+/8i
+ \x{03c9}\x{03a9}\x{2126}
+
+/\x{03a9}+/8i
+ \x{03c9}\x{03a9}\x{2126}
+
+/\x{2126}+/8i
+ \x{03c9}\x{03a9}\x{2126}
+
+
+/\x{1e60}+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+
+/\x{1e61}+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+
+/\x{1e9b}+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+
+
+/\x{1e9e}+/8i
+ \x{1e9e}\x{00df}
+
+/\x{00df}+/8i
+ \x{1e9e}\x{00df}
+
+
+/\x{1f88}+/8i
+ \x{1f88}\x{1f80}
+
+/\x{1f80}+/8i
+ \x{1f88}\x{1f80}
+
+/\x{004b}+/8i
+ \x{004b}\x{006b}\x{212a}
+
+/\x{006b}+/8i
+ \x{004b}\x{006b}\x{212a}
+
+/\x{212a}+/8i
+ \x{004b}\x{006b}\x{212a}
+
+
+/\x{0053}+/8i
+ \x{0053}\x{0073}\x{017f}
+
+/\x{0073}+/8i
+ \x{0053}\x{0073}\x{017f}
+
+/\x{017f}+/8i
+ \x{0053}\x{0073}\x{017f}
+
+/ist/8i
+ ikt
+
+/is+t/8i
+ iSs\x{17f}t
+ ikt
+
+/is+?t/8i
+ ikt
+
+/is?t/8i
+ ikt
+
+/is{2}t/8i
+ iskt
+
/-- End of testinput10 --/
diff --git a/ext/pcre/pcrelib/testdata/testinput2 b/ext/pcre/pcrelib/testdata/testinput2
index 883d52e63b..9670104e6a 100644
--- a/ext/pcre/pcrelib/testdata/testinput2
+++ b/ext/pcre/pcrelib/testdata/testinput2
@@ -3768,5 +3768,46 @@ assertion, and therefore fails the entire subroutine call. --/
/((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
ac
+
+/-- These are all run as real matches in test 1; here we are just checking the
+settings of the anchored and startline bits. --/
+
+/(?>.*?a)(?<=ba)/I
+
+/(?:.*?a)(?<=ba)/I
+
+/.*?a(*PRUNE)b/I
+
+/.*?a(*PRUNE)b/sI
+
+/^a(*PRUNE)b/sI
+
+/.*?a(*SKIP)b/I
+
+/(?>.*?a)b/sI
+
+/(?>.*?a)b/I
+
+/(?>^a)b/sI
+
+/(?>.*?)(?<=(abcd)|(wxyz))/I
+
+/(?>.*)(?<=(abcd)|(wxyz))/I
+
+"(?>.*)foo"I
+
+"(?>.*?)foo"I
+
+/(?>^abc)/mI
+
+/(?>.*abc)/mI
+
+/(?:.*abc)/mI
+
+/-- Check PCRE_STUDY_EXTRA_NEEDED --/
+
+/.?/S-I
+
+/.?/S!I
/-- End of testinput2 --/
diff --git a/ext/pcre/pcrelib/testdata/testinput6 b/ext/pcre/pcrelib/testdata/testinput6
index 7010a0d2d1..a4bfb3c19b 100644
--- a/ext/pcre/pcrelib/testdata/testinput6
+++ b/ext/pcre/pcrelib/testdata/testinput6
@@ -1,6 +1,5 @@
/-- This set of tests is for Unicode property support. It is compatible with
- Perl >= 5.10, but not 5.8 because it tests some extra properties that are
- not in the earlier release. --/
+ Perl >= 5.15. --/
/^\pC\pL\pM\pN\pP\pS\pZ</8
\x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
@@ -406,7 +405,13 @@
A\x{300}\x{301}B\x{300}C\x{300}\x{301}
A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
-
+
+/^\X/8
+ A
+ A\x{300}BC
+ A\x{300}\x{301}\x{302}BC
+ \x{300}
+
/^\p{Han}+/8
\x{2e81}\x{3007}\x{2f804}\x{31a0}
** Failers
@@ -666,6 +671,7 @@
\x{65c}
\x{65d}
\x{65e}
+ \x{65f}
\x{66a}
\x{6e9}
\x{6ef}
@@ -677,7 +683,6 @@
\x{653}
\x{654}
\x{655}
- \x{65f}
/^\p{Cyrillic}/8
\x{1d2b}
@@ -814,5 +819,501 @@
/Ⱥ/8i
Ⱥ
+
+/-- These are tests for extended grapheme clusters --/
+
+/^\X/8+
+ G\x{34e}\x{34e}X
+ \x{34e}\x{34e}X
+ \x04X
+ \x{1100}X
+ \x{1100}\x{34e}X
+ \x{1b04}\x{1b04}X
+ *These match up to the roman letters
+ \x{1111}\x{1111}L,L
+ \x{1111}\x{1111}\x{1169}L,L,V
+ \x{1111}\x{ae4c}L, LV
+ \x{1111}\x{ad89}L, LVT
+ \x{1111}\x{ae4c}\x{1169}L, LV, V
+ \x{1111}\x{ae4c}\x{1169}\x{1169}L, LV, V, V
+ \x{1111}\x{ae4c}\x{1169}\x{11fe}L, LV, V, T
+ \x{1111}\x{ad89}\x{11fe}L, LVT, T
+ \x{1111}\x{ad89}\x{11fe}\x{11fe}L, LVT, T, T
+ \x{ad89}\x{11fe}\x{11fe}LVT, T, T
+ *These match just the first codepoint (invalid sequence)
+ \x{1111}\x{11fe}L, T
+ \x{ae4c}\x{1111}LV, L
+ \x{ae4c}\x{ae4c}LV, LV
+ \x{ae4c}\x{ad89}LV, LVT
+ \x{1169}\x{1111}V, L
+ \x{1169}\x{ae4c}V, LV
+ \x{1169}\x{ad89}V, LVT
+ \x{ad89}\x{1111}LVT, L
+ \x{ad89}\x{1169}LVT, V
+ \x{ad89}\x{ae4c}LVT, LV
+ \x{ad89}\x{ad89}LVT, LVT
+ \x{11fe}\x{1111}T, L
+ \x{11fe}\x{1169}T, V
+ \x{11fe}\x{ae4c}T, LV
+ \x{11fe}\x{ad89}T, LVT
+ *Test extend and spacing mark
+ \x{1111}\x{ae4c}\x{0711}L, LV, extend
+ \x{1111}\x{ae4c}\x{1b04}L, LV, spacing mark
+ \x{1111}\x{ae4c}\x{1b04}\x{0711}\x{1b04}L, LV, spacing mark, extend, spacing mark
+ *Test CR, LF, and control
+ \x0d\x{0711}CR, extend
+ \x0d\x{1b04}CR, spacingmark
+ \x0a\x{0711}LF, extend
+ \x0a\x{1b04}LF, spacingmark
+ \x0b\x{0711}Control, extend
+ \x09\x{1b04}Control, spacingmark
+ *There are no Prepend characters, so we can't test Prepend, CR
+
+/^(?>\X{2})X/8+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+
+/^\X{2,4}X/8+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+
+/^\X{2,4}?X/8+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+
+/-- --/
+
+/\x{1e9e}+/8i
+ \x{1e9e}\x{00df}
+
+/[z\x{1e9e}]+/8i
+ \x{1e9e}\x{00df}
+
+/\x{00df}+/8i
+ \x{1e9e}\x{00df}
+
+/[z\x{00df}]+/8i
+ \x{1e9e}\x{00df}
+
+/\x{1f88}+/8i
+ \x{1f88}\x{1f80}
+
+/[z\x{1f88}]+/8i
+ \x{1f88}\x{1f80}
+
+/-- Characters with more than one other case; test in classes --/
+
+/[z\x{00b5}]+/8i
+ \x{00b5}\x{039c}\x{03bc}
+
+/[z\x{039c}]+/8i
+ \x{00b5}\x{039c}\x{03bc}
+
+/[z\x{03bc}]+/8i
+ \x{00b5}\x{039c}\x{03bc}
+
+/[z\x{00c5}]+/8i
+ \x{00c5}\x{00e5}\x{212b}
+
+/[z\x{00e5}]+/8i
+ \x{00c5}\x{00e5}\x{212b}
+
+/[z\x{212b}]+/8i
+ \x{00c5}\x{00e5}\x{212b}
+
+/[z\x{01c4}]+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+
+/[z\x{01c5}]+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+
+/[z\x{01c6}]+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+
+/[z\x{01c7}]+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+
+/[z\x{01c8}]+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+
+/[z\x{01c9}]+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+
+/[z\x{01ca}]+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+
+/[z\x{01cb}]+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+
+/[z\x{01cc}]+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+
+/[z\x{01f1}]+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+
+/[z\x{01f2}]+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+
+/[z\x{01f3}]+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+
+/[z\x{0345}]+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+
+/[z\x{0399}]+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+
+/[z\x{03b9}]+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+
+/[z\x{1fbe}]+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+
+/[z\x{0392}]+/8i
+ \x{0392}\x{03b2}\x{03d0}
+
+/[z\x{03b2}]+/8i
+ \x{0392}\x{03b2}\x{03d0}
+
+/[z\x{03d0}]+/8i
+ \x{0392}\x{03b2}\x{03d0}
+
+/[z\x{0395}]+/8i
+ \x{0395}\x{03b5}\x{03f5}
+
+/[z\x{03b5}]+/8i
+ \x{0395}\x{03b5}\x{03f5}
+
+/[z\x{03f5}]+/8i
+ \x{0395}\x{03b5}\x{03f5}
+
+/[z\x{0398}]+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+
+/[z\x{03b8}]+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+
+/[z\x{03d1}]+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+
+/[z\x{03f4}]+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+
+/[z\x{039a}]+/8i
+ \x{039a}\x{03ba}\x{03f0}
+
+/[z\x{03ba}]+/8i
+ \x{039a}\x{03ba}\x{03f0}
+
+/[z\x{03f0}]+/8i
+ \x{039a}\x{03ba}\x{03f0}
+
+/[z\x{03a0}]+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+
+/[z\x{03c0}]+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+
+/[z\x{03d6}]+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+
+/[z\x{03a1}]+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+
+/[z\x{03c1}]+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+
+/[z\x{03f1}]+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+
+/[z\x{03a3}]+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+
+/[z\x{03c2}]+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+
+/[z\x{03c3}]+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+
+/[z\x{03a6}]+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+
+/[z\x{03c6}]+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+
+/[z\x{03d5}]+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+
+/[z\x{03c9}]+/8i
+ \x{03c9}\x{03a9}\x{2126}
+
+/[z\x{03a9}]+/8i
+ \x{03c9}\x{03a9}\x{2126}
+
+/[z\x{2126}]+/8i
+ \x{03c9}\x{03a9}\x{2126}
+
+/[z\x{1e60}]+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+
+/[z\x{1e61}]+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+
+/[z\x{1e9b}]+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+
+/-- Perl 5.12.4 gets these wrong, but 5.15.3 is OK --/
+
+/[z\x{004b}]+/8i
+ \x{004b}\x{006b}\x{212a}
+
+/[z\x{006b}]+/8i
+ \x{004b}\x{006b}\x{212a}
+
+/[z\x{212a}]+/8i
+ \x{004b}\x{006b}\x{212a}
+
+/[z\x{0053}]+/8i
+ \x{0053}\x{0073}\x{017f}
+
+/[z\x{0073}]+/8i
+ \x{0053}\x{0073}\x{017f}
+
+/[z\x{017f}]+/8i
+ \x{0053}\x{0073}\x{017f}
+
+/-- --/
+
+/(ΣΆΜΟΣ) \1/8i
+ ΣΆΜΟΣ ΣΆΜΟΣ
+ ΣΆΜΟΣ σάμος
+ σάμος σάμος
+ σάμος σάμοσ
+ σάμος ΣΆΜΟΣ
+
+/(σάμος) \1/8i
+ ΣΆΜΟΣ ΣΆΜΟΣ
+ ΣΆΜΟΣ σάμος
+ σάμος σάμος
+ σάμος σάμοσ
+ σάμος ΣΆΜΟΣ
+
+/(ΣΆΜΟΣ) \1*/8i
+ ΣΆΜΟΣ\x20
+ ΣΆΜΟΣ ΣΆΜΟΣσάμοςσάμος
+
+/-- Perl matches these --/
+
+/\x{00b5}+/8i
+ \x{00b5}\x{039c}\x{03bc}
+
+/\x{039c}+/8i
+ \x{00b5}\x{039c}\x{03bc}
+
+/\x{03bc}+/8i
+ \x{00b5}\x{039c}\x{03bc}
+
+
+/\x{00c5}+/8i
+ \x{00c5}\x{00e5}\x{212b}
+
+/\x{00e5}+/8i
+ \x{00c5}\x{00e5}\x{212b}
+
+/\x{212b}+/8i
+ \x{00c5}\x{00e5}\x{212b}
+
+
+/\x{01c4}+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+
+/\x{01c5}+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+
+/\x{01c6}+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+
+
+/\x{01c7}+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+
+/\x{01c8}+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+
+/\x{01c9}+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+
+
+/\x{01ca}+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+
+/\x{01cb}+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+
+/\x{01cc}+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+
+
+/\x{01f1}+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+
+/\x{01f2}+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+
+/\x{01f3}+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+
+
+/\x{0345}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+
+/\x{0399}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+
+/\x{03b9}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+
+/\x{1fbe}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+
+
+/\x{0392}+/8i
+ \x{0392}\x{03b2}\x{03d0}
+
+/\x{03b2}+/8i
+ \x{0392}\x{03b2}\x{03d0}
+
+/\x{03d0}+/8i
+ \x{0392}\x{03b2}\x{03d0}
+
+
+/\x{0395}+/8i
+ \x{0395}\x{03b5}\x{03f5}
+
+/\x{03b5}+/8i
+ \x{0395}\x{03b5}\x{03f5}
+
+/\x{03f5}+/8i
+ \x{0395}\x{03b5}\x{03f5}
+
+
+/\x{0398}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+
+/\x{03b8}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+
+/\x{03d1}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+
+/\x{03f4}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+
+
+/\x{039a}+/8i
+ \x{039a}\x{03ba}\x{03f0}
+
+/\x{03ba}+/8i
+ \x{039a}\x{03ba}\x{03f0}
+
+/\x{03f0}+/8i
+ \x{039a}\x{03ba}\x{03f0}
+
+
+/\x{03a0}+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+
+/\x{03c0}+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+
+/\x{03d6}+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+
+
+/\x{03a1}+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+
+/\x{03c1}+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+
+/\x{03f1}+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+
+
+/\x{03a3}+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+
+/\x{03c2}+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+
+/\x{03c3}+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+
+
+/\x{03a6}+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+
+/\x{03c6}+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+
+/\x{03d5}+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+
+
+/\x{03c9}+/8i
+ \x{03c9}\x{03a9}\x{2126}
+
+/\x{03a9}+/8i
+ \x{03c9}\x{03a9}\x{2126}
+
+/\x{2126}+/8i
+ \x{03c9}\x{03a9}\x{2126}
+
+
+/\x{1e60}+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+
+/\x{1e61}+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+
+/\x{1e9b}+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+
+
+/\x{1e9e}+/8i
+ \x{1e9e}\x{00df}
+
+/\x{00df}+/8i
+ \x{1e9e}\x{00df}
+
+
+/\x{1f88}+/8i
+ \x{1f88}\x{1f80}
+
+/\x{1f80}+/8i
+ \x{1f88}\x{1f80}
+
+
+/-- Perl 5.12.4 gets these wrong, but 5.15.3 is OK --/
+
+/\x{004b}+/8i
+ \x{004b}\x{006b}\x{212a}
+
+/\x{006b}+/8i
+ \x{004b}\x{006b}\x{212a}
+
+/\x{212a}+/8i
+ \x{004b}\x{006b}\x{212a}
+
+
+/\x{0053}+/8i
+ \x{0053}\x{0073}\x{017f}
+
+/\x{0073}+/8i
+ \x{0053}\x{0073}\x{017f}
+
+/\x{017f}+/8i
+ \x{0053}\x{0073}\x{017f}
/-- End of testinput6 --/
diff --git a/ext/pcre/pcrelib/testdata/testinput7 b/ext/pcre/pcrelib/testdata/testinput7
index 6ef9230313..b265f1f9ac 100644
--- a/ext/pcre/pcrelib/testdata/testinput7
+++ b/ext/pcre/pcrelib/testdata/testinput7
@@ -89,7 +89,7 @@
/(\p{Yi}{0,3}+\277)*/
/\p{Zl}{2,3}+/8BZ
- \xe2\x80\xa8\xe2\x80\xa8
+ 


\x{2028}\x{2028}\x{2028}
/\p{Zl}/8BZ
@@ -195,15 +195,6 @@ of case for anything other than the ASCII letters. --/
\x{c0}
\x{e0}
-/-- This should be Perl-compatible but Perl 5.11 gets \x{300} wrong. --/8
-
-/^\X/8
- A
- A\x{300}BC
- A\x{300}\x{301}\x{302}BC
- *** Failers
- \x{300}
-
/-- These are PCRE's extra properties to help with Unicodizing \d etc. --/
/^\p{Xan}/8
@@ -622,4 +613,60 @@ of case for anything other than the ASCII letters. --/
AA\P
AA\P\P
+/A\x{3a3}B/8iDZ
+
+/\x{3a3}B/8iDZ
+
+/[\x{3a3}]/8iBZ
+
+/[^\x{3a3}]/8iBZ
+
+/[\x{3a3}]+/8iBZ
+
+/[^\x{3a3}]+/8iBZ
+
+/a*\x{3a3}/8iBZ
+
+/\x{3a3}+a/8iBZ
+
+/\x{3a3}*\x{3c2}/8iBZ
+
+/\x{3a3}{3}/8i+
+ \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
+
+/\x{3a3}{2,4}/8i+
+ \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
+
+/\x{3a3}{2,4}?/8i+
+ \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
+
+/\x{3a3}+./8i+
+ \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
+
+/\x{3a3}++./8i+
+ ** Failers
+ \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
+
+/\x{3a3}*\x{3c2}/8iBZ
+
+/[^\x{3a3}]*\x{3c2}/8iBZ
+
+/[^a]*\x{3c2}/8iBZ
+
+/ist/8iBZ
+ ikt
+
+/is+t/8i
+ iSs\x{17f}t
+ ikt
+
+/is+?t/8i
+ ikt
+
+/is?t/8i
+ ikt
+
+/is{2}t/8i
+ iskt
+
/-- End of testinput7 --/
diff --git a/ext/pcre/pcrelib/testdata/testoutput1 b/ext/pcre/pcrelib/testdata/testoutput1
index 99c0ebbc3c..8310e94618 100644
--- a/ext/pcre/pcrelib/testdata/testoutput1
+++ b/ext/pcre/pcrelib/testdata/testoutput1
@@ -8733,4 +8733,66 @@ No match
0: aac
1:
+/(?>.*?a)(?<=ba)/
+ aba
+ 0: ba
+
+/(?:.*?a)(?<=ba)/
+ aba
+ 0: aba
+
+/.*?a(*PRUNE)b/
+ aab
+ 0: ab
+
+/.*?a(*PRUNE)b/s
+ aab
+ 0: ab
+
+/^a(*PRUNE)b/s
+ aab
+No match
+
+/.*?a(*SKIP)b/
+ aab
+ 0: ab
+
+/(?>.*?a)b/s
+ aab
+ 0: ab
+
+/(?>.*?a)b/
+ aab
+ 0: ab
+
+/(?>^a)b/s
+ aab
+No match
+
+/(?>.*?)(?<=(abcd)|(wxyz))/
+ alphabetabcd
+ 0:
+ 1: abcd
+ endingwxyz
+ 0:
+ 1: <unset>
+ 2: wxyz
+
+/(?>.*)(?<=(abcd)|(wxyz))/
+ alphabetabcd
+ 0: alphabetabcd
+ 1: abcd
+ endingwxyz
+ 0: endingwxyz
+ 1: <unset>
+ 2: wxyz
+
+"(?>.*)foo"
+ abcdfooxyz
+No match
+
+"(?>.*?)foo"
+ abcdfooxyz
+ 0: foo
+
/-- End of testinput1 --/
diff --git a/ext/pcre/pcrelib/testdata/testoutput10 b/ext/pcre/pcrelib/testdata/testoutput10
index 5009d5dfe2..049d446314 100644
--- a/ext/pcre/pcrelib/testdata/testoutput10
+++ b/ext/pcre/pcrelib/testdata/testoutput10
@@ -90,7 +90,7 @@ No match
9: **
10: *
\x{300}\x{301}\x{302}
-No match
+ 0: \x{300}\x{301}\x{302}
/\X?abc/8
abc
@@ -100,7 +100,7 @@ No match
A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
0: A\x{300}abc
\x{300}abc
- 0: abc
+ 0: \x{300}abc
*** Failers
No match
@@ -114,7 +114,7 @@ No match
A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
No match
\x{300}abc
-No match
+ 0: \x{300}abc
/\X*abc/8
abc
@@ -124,7 +124,7 @@ No match
A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
0: A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abc
\x{300}abc
- 0: abc
+ 0: \x{300}abc
*** Failers
No match
@@ -138,7 +138,7 @@ No match
*** Failers
No match
\x{300}abc
-No match
+ 0: \x{300}abc
/^\pL?=./8
A=b
@@ -1133,7 +1133,7 @@ No match
*** Failers
0: *
\x{300}
-No match
+ 0: \x{300}
/^[\X]/8
X123
@@ -2100,4 +2100,627 @@ Partial match: AA
AA\P\P
Partial match: AA
+/-- These are tests for extended grapheme clusters --/
+
+/^\X/8+
+ G\x{34e}\x{34e}X
+ 0: G\x{34e}\x{34e}
+ 0+ X
+ \x{34e}\x{34e}X
+ 0: \x{34e}\x{34e}
+ 0+ X
+ \x04X
+ 0: \x{04}
+ 0+ X
+ \x{1100}X
+ 0: \x{1100}
+ 0+ X
+ \x{1100}\x{34e}X
+ 0: \x{1100}\x{34e}
+ 0+ X
+ \x{1b04}\x{1b04}X
+ 0: \x{1b04}\x{1b04}
+ 0+ X
+ *These match up to the roman letters
+ 0: *
+ 0+ These match up to the roman letters
+ \x{1111}\x{1111}L,L
+ 0: \x{1111}\x{1111}
+ 0+ L,L
+ \x{1111}\x{1111}\x{1169}L,L,V
+ 0: \x{1111}\x{1111}\x{1169}
+ 0+ L,L,V
+ \x{1111}\x{ae4c}L, LV
+ 0: \x{1111}\x{ae4c}
+ 0+ L, LV
+ \x{1111}\x{ad89}L, LVT
+ 0: \x{1111}\x{ad89}
+ 0+ L, LVT
+ \x{1111}\x{ae4c}\x{1169}L, LV, V
+ 0: \x{1111}\x{ae4c}\x{1169}
+ 0+ L, LV, V
+ \x{1111}\x{ae4c}\x{1169}\x{1169}L, LV, V, V
+ 0: \x{1111}\x{ae4c}\x{1169}\x{1169}
+ 0+ L, LV, V, V
+ \x{1111}\x{ae4c}\x{1169}\x{11fe}L, LV, V, T
+ 0: \x{1111}\x{ae4c}\x{1169}\x{11fe}
+ 0+ L, LV, V, T
+ \x{1111}\x{ad89}\x{11fe}L, LVT, T
+ 0: \x{1111}\x{ad89}\x{11fe}
+ 0+ L, LVT, T
+ \x{1111}\x{ad89}\x{11fe}\x{11fe}L, LVT, T, T
+ 0: \x{1111}\x{ad89}\x{11fe}\x{11fe}
+ 0+ L, LVT, T, T
+ \x{ad89}\x{11fe}\x{11fe}LVT, T, T
+ 0: \x{ad89}\x{11fe}\x{11fe}
+ 0+ LVT, T, T
+ *These match just the first codepoint (invalid sequence)
+ 0: *
+ 0+ These match just the first codepoint (invalid sequence)
+ \x{1111}\x{11fe}L, T
+ 0: \x{1111}
+ 0+ \x{11fe}L, T
+ \x{ae4c}\x{1111}LV, L
+ 0: \x{ae4c}
+ 0+ \x{1111}LV, L
+ \x{ae4c}\x{ae4c}LV, LV
+ 0: \x{ae4c}
+ 0+ \x{ae4c}LV, LV
+ \x{ae4c}\x{ad89}LV, LVT
+ 0: \x{ae4c}
+ 0+ \x{ad89}LV, LVT
+ \x{1169}\x{1111}V, L
+ 0: \x{1169}
+ 0+ \x{1111}V, L
+ \x{1169}\x{ae4c}V, LV
+ 0: \x{1169}
+ 0+ \x{ae4c}V, LV
+ \x{1169}\x{ad89}V, LVT
+ 0: \x{1169}
+ 0+ \x{ad89}V, LVT
+ \x{ad89}\x{1111}LVT, L
+ 0: \x{ad89}
+ 0+ \x{1111}LVT, L
+ \x{ad89}\x{1169}LVT, V
+ 0: \x{ad89}
+ 0+ \x{1169}LVT, V
+ \x{ad89}\x{ae4c}LVT, LV
+ 0: \x{ad89}
+ 0+ \x{ae4c}LVT, LV
+ \x{ad89}\x{ad89}LVT, LVT
+ 0: \x{ad89}
+ 0+ \x{ad89}LVT, LVT
+ \x{11fe}\x{1111}T, L
+ 0: \x{11fe}
+ 0+ \x{1111}T, L
+ \x{11fe}\x{1169}T, V
+ 0: \x{11fe}
+ 0+ \x{1169}T, V
+ \x{11fe}\x{ae4c}T, LV
+ 0: \x{11fe}
+ 0+ \x{ae4c}T, LV
+ \x{11fe}\x{ad89}T, LVT
+ 0: \x{11fe}
+ 0+ \x{ad89}T, LVT
+ *Test extend and spacing mark
+ 0: *
+ 0+ Test extend and spacing mark
+ \x{1111}\x{ae4c}\x{0711}L, LV, extend
+ 0: \x{1111}\x{ae4c}\x{711}
+ 0+ L, LV, extend
+ \x{1111}\x{ae4c}\x{1b04}L, LV, spacing mark
+ 0: \x{1111}\x{ae4c}\x{1b04}
+ 0+ L, LV, spacing mark
+ \x{1111}\x{ae4c}\x{1b04}\x{0711}\x{1b04}L, LV, spacing mark, extend, spacing mark
+ 0: \x{1111}\x{ae4c}\x{1b04}\x{711}\x{1b04}
+ 0+ L, LV, spacing mark, extend, spacing mark
+ *Test CR, LF, and control
+ 0: *
+ 0+ Test CR, LF, and control
+ \x0d\x{0711}CR, extend
+ 0: \x{0d}
+ 0+ \x{711}CR, extend
+ \x0d\x{1b04}CR, spacingmark
+ 0: \x{0d}
+ 0+ \x{1b04}CR, spacingmark
+ \x0a\x{0711}LF, extend
+ 0: \x{0a}
+ 0+ \x{711}LF, extend
+ \x0a\x{1b04}LF, spacingmark
+ 0: \x{0a}
+ 0+ \x{1b04}LF, spacingmark
+ \x0b\x{0711}Control, extend
+ 0: \x{0b}
+ 0+ \x{711}Control, extend
+ \x09\x{1b04}Control, spacingmark
+ 0: \x{09}
+ 0+ \x{1b04}Control, spacingmark
+ *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/8+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0+
+
+/^\X{2,4}X/8+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0+
+
+/^\X{2,4}?X/8+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0+
+
+/-- --/
+
+/\x{1e9e}+/8i
+ \x{1e9e}\x{00df}
+ 0: \x{1e9e}\x{df}
+ 1: \x{1e9e}
+
+/[z\x{1e9e}]+/8i
+ \x{1e9e}\x{00df}
+ 0: \x{1e9e}\x{df}
+ 1: \x{1e9e}
+
+/\x{00df}+/8i
+ \x{1e9e}\x{00df}
+ 0: \x{1e9e}\x{df}
+ 1: \x{1e9e}
+
+/[z\x{00df}]+/8i
+ \x{1e9e}\x{00df}
+ 0: \x{1e9e}\x{df}
+ 1: \x{1e9e}
+
+/\x{1f88}+/8i
+ \x{1f88}\x{1f80}
+ 0: \x{1f88}\x{1f80}
+ 1: \x{1f88}
+
+/[z\x{1f88}]+/8i
+ \x{1f88}\x{1f80}
+ 0: \x{1f88}\x{1f80}
+ 1: \x{1f88}
+
+/-- Perl matches these --/
+
+/\x{00b5}+/8i
+ \x{00b5}\x{039c}\x{03bc}
+ 0: \x{b5}\x{39c}\x{3bc}
+ 1: \x{b5}\x{39c}
+ 2: \x{b5}
+
+/\x{039c}+/8i
+ \x{00b5}\x{039c}\x{03bc}
+ 0: \x{b5}\x{39c}\x{3bc}
+ 1: \x{b5}\x{39c}
+ 2: \x{b5}
+
+/\x{03bc}+/8i
+ \x{00b5}\x{039c}\x{03bc}
+ 0: \x{b5}\x{39c}\x{3bc}
+ 1: \x{b5}\x{39c}
+ 2: \x{b5}
+
+
+/\x{00c5}+/8i
+ \x{00c5}\x{00e5}\x{212b}
+ 0: \x{c5}\x{e5}\x{212b}
+ 1: \x{c5}\x{e5}
+ 2: \x{c5}
+
+/\x{00e5}+/8i
+ \x{00c5}\x{00e5}\x{212b}
+ 0: \x{c5}\x{e5}\x{212b}
+ 1: \x{c5}\x{e5}
+ 2: \x{c5}
+
+/\x{212b}+/8i
+ \x{00c5}\x{00e5}\x{212b}
+ 0: \x{c5}\x{e5}\x{212b}
+ 1: \x{c5}\x{e5}
+ 2: \x{c5}
+
+
+/\x{01c4}+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+ 0: \x{1c4}\x{1c5}\x{1c6}
+ 1: \x{1c4}\x{1c5}
+ 2: \x{1c4}
+
+/\x{01c5}+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+ 0: \x{1c4}\x{1c5}\x{1c6}
+ 1: \x{1c4}\x{1c5}
+ 2: \x{1c4}
+
+/\x{01c6}+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+ 0: \x{1c4}\x{1c5}\x{1c6}
+ 1: \x{1c4}\x{1c5}
+ 2: \x{1c4}
+
+
+/\x{01c7}+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+ 0: \x{1c7}\x{1c8}\x{1c9}
+ 1: \x{1c7}\x{1c8}
+ 2: \x{1c7}
+
+/\x{01c8}+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+ 0: \x{1c7}\x{1c8}\x{1c9}
+ 1: \x{1c7}\x{1c8}
+ 2: \x{1c7}
+
+/\x{01c9}+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+ 0: \x{1c7}\x{1c8}\x{1c9}
+ 1: \x{1c7}\x{1c8}
+ 2: \x{1c7}
+
+
+/\x{01ca}+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+ 0: \x{1ca}\x{1cb}\x{1cc}
+ 1: \x{1ca}\x{1cb}
+ 2: \x{1ca}
+
+/\x{01cb}+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+ 0: \x{1ca}\x{1cb}\x{1cc}
+ 1: \x{1ca}\x{1cb}
+ 2: \x{1ca}
+
+/\x{01cc}+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+ 0: \x{1ca}\x{1cb}\x{1cc}
+ 1: \x{1ca}\x{1cb}
+ 2: \x{1ca}
+
+
+/\x{01f1}+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+ 0: \x{1f1}\x{1f2}\x{1f3}
+ 1: \x{1f1}\x{1f2}
+ 2: \x{1f1}
+
+/\x{01f2}+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+ 0: \x{1f1}\x{1f2}\x{1f3}
+ 1: \x{1f1}\x{1f2}
+ 2: \x{1f1}
+
+/\x{01f3}+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+ 0: \x{1f1}\x{1f2}\x{1f3}
+ 1: \x{1f1}\x{1f2}
+ 2: \x{1f1}
+
+
+/\x{0345}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+ 0: \x{345}\x{399}\x{3b9}\x{1fbe}
+ 1: \x{345}\x{399}\x{3b9}
+ 2: \x{345}\x{399}
+ 3: \x{345}
+
+/\x{0399}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+ 0: \x{345}\x{399}\x{3b9}\x{1fbe}
+ 1: \x{345}\x{399}\x{3b9}
+ 2: \x{345}\x{399}
+ 3: \x{345}
+
+/\x{03b9}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+ 0: \x{345}\x{399}\x{3b9}\x{1fbe}
+ 1: \x{345}\x{399}\x{3b9}
+ 2: \x{345}\x{399}
+ 3: \x{345}
+
+/\x{1fbe}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+ 0: \x{345}\x{399}\x{3b9}\x{1fbe}
+ 1: \x{345}\x{399}\x{3b9}
+ 2: \x{345}\x{399}
+ 3: \x{345}
+
+
+/\x{0392}+/8i
+ \x{0392}\x{03b2}\x{03d0}
+ 0: \x{392}\x{3b2}\x{3d0}
+ 1: \x{392}\x{3b2}
+ 2: \x{392}
+
+/\x{03b2}+/8i
+ \x{0392}\x{03b2}\x{03d0}
+ 0: \x{392}\x{3b2}\x{3d0}
+ 1: \x{392}\x{3b2}
+ 2: \x{392}
+
+/\x{03d0}+/8i
+ \x{0392}\x{03b2}\x{03d0}
+ 0: \x{392}\x{3b2}\x{3d0}
+ 1: \x{392}\x{3b2}
+ 2: \x{392}
+
+
+/\x{0395}+/8i
+ \x{0395}\x{03b5}\x{03f5}
+ 0: \x{395}\x{3b5}\x{3f5}
+ 1: \x{395}\x{3b5}
+ 2: \x{395}
+
+/\x{03b5}+/8i
+ \x{0395}\x{03b5}\x{03f5}
+ 0: \x{395}\x{3b5}\x{3f5}
+ 1: \x{395}\x{3b5}
+ 2: \x{395}
+
+/\x{03f5}+/8i
+ \x{0395}\x{03b5}\x{03f5}
+ 0: \x{395}\x{3b5}\x{3f5}
+ 1: \x{395}\x{3b5}
+ 2: \x{395}
+
+
+/\x{0398}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+ 0: \x{398}\x{3b8}\x{3d1}\x{3f4}
+ 1: \x{398}\x{3b8}\x{3d1}
+ 2: \x{398}\x{3b8}
+ 3: \x{398}
+
+/\x{03b8}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+ 0: \x{398}\x{3b8}\x{3d1}\x{3f4}
+ 1: \x{398}\x{3b8}\x{3d1}
+ 2: \x{398}\x{3b8}
+ 3: \x{398}
+
+/\x{03d1}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+ 0: \x{398}\x{3b8}\x{3d1}\x{3f4}
+ 1: \x{398}\x{3b8}\x{3d1}
+ 2: \x{398}\x{3b8}
+ 3: \x{398}
+
+/\x{03f4}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+ 0: \x{398}\x{3b8}\x{3d1}\x{3f4}
+ 1: \x{398}\x{3b8}\x{3d1}
+ 2: \x{398}\x{3b8}
+ 3: \x{398}
+
+
+/\x{039a}+/8i
+ \x{039a}\x{03ba}\x{03f0}
+ 0: \x{39a}\x{3ba}\x{3f0}
+ 1: \x{39a}\x{3ba}
+ 2: \x{39a}
+
+/\x{03ba}+/8i
+ \x{039a}\x{03ba}\x{03f0}
+ 0: \x{39a}\x{3ba}\x{3f0}
+ 1: \x{39a}\x{3ba}
+ 2: \x{39a}
+
+/\x{03f0}+/8i
+ \x{039a}\x{03ba}\x{03f0}
+ 0: \x{39a}\x{3ba}\x{3f0}
+ 1: \x{39a}\x{3ba}
+ 2: \x{39a}
+
+
+/\x{03a0}+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+ 0: \x{3a0}\x{3c0}\x{3d6}
+ 1: \x{3a0}\x{3c0}
+ 2: \x{3a0}
+
+/\x{03c0}+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+ 0: \x{3a0}\x{3c0}\x{3d6}
+ 1: \x{3a0}\x{3c0}
+ 2: \x{3a0}
+
+/\x{03d6}+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+ 0: \x{3a0}\x{3c0}\x{3d6}
+ 1: \x{3a0}\x{3c0}
+ 2: \x{3a0}
+
+
+/\x{03a1}+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+ 0: \x{3a1}\x{3c1}\x{3f1}
+ 1: \x{3a1}\x{3c1}
+ 2: \x{3a1}
+
+/\x{03c1}+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+ 0: \x{3a1}\x{3c1}\x{3f1}
+ 1: \x{3a1}\x{3c1}
+ 2: \x{3a1}
+
+/\x{03f1}+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+ 0: \x{3a1}\x{3c1}\x{3f1}
+ 1: \x{3a1}\x{3c1}
+ 2: \x{3a1}
+
+
+/\x{03a3}+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+ 0: \x{3a3}\x{3c2}\x{3c3}
+ 1: \x{3a3}\x{3c2}
+ 2: \x{3a3}
+
+/\x{03c2}+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+ 0: \x{3a3}\x{3c2}\x{3c3}
+ 1: \x{3a3}\x{3c2}
+ 2: \x{3a3}
+
+/\x{03c3}+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+ 0: \x{3a3}\x{3c2}\x{3c3}
+ 1: \x{3a3}\x{3c2}
+ 2: \x{3a3}
+
+
+/\x{03a6}+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+ 0: \x{3a6}\x{3c6}\x{3d5}
+ 1: \x{3a6}\x{3c6}
+ 2: \x{3a6}
+
+/\x{03c6}+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+ 0: \x{3a6}\x{3c6}\x{3d5}
+ 1: \x{3a6}\x{3c6}
+ 2: \x{3a6}
+
+/\x{03d5}+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+ 0: \x{3a6}\x{3c6}\x{3d5}
+ 1: \x{3a6}\x{3c6}
+ 2: \x{3a6}
+
+
+/\x{03c9}+/8i
+ \x{03c9}\x{03a9}\x{2126}
+ 0: \x{3c9}\x{3a9}\x{2126}
+ 1: \x{3c9}\x{3a9}
+ 2: \x{3c9}
+
+/\x{03a9}+/8i
+ \x{03c9}\x{03a9}\x{2126}
+ 0: \x{3c9}\x{3a9}\x{2126}
+ 1: \x{3c9}\x{3a9}
+ 2: \x{3c9}
+
+/\x{2126}+/8i
+ \x{03c9}\x{03a9}\x{2126}
+ 0: \x{3c9}\x{3a9}\x{2126}
+ 1: \x{3c9}\x{3a9}
+ 2: \x{3c9}
+
+
+/\x{1e60}+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+ 0: \x{1e60}\x{1e61}\x{1e9b}
+ 1: \x{1e60}\x{1e61}
+ 2: \x{1e60}
+
+/\x{1e61}+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+ 0: \x{1e60}\x{1e61}\x{1e9b}
+ 1: \x{1e60}\x{1e61}
+ 2: \x{1e60}
+
+/\x{1e9b}+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+ 0: \x{1e60}\x{1e61}\x{1e9b}
+ 1: \x{1e60}\x{1e61}
+ 2: \x{1e60}
+
+
+/\x{1e9e}+/8i
+ \x{1e9e}\x{00df}
+ 0: \x{1e9e}\x{df}
+ 1: \x{1e9e}
+
+/\x{00df}+/8i
+ \x{1e9e}\x{00df}
+ 0: \x{1e9e}\x{df}
+ 1: \x{1e9e}
+
+
+/\x{1f88}+/8i
+ \x{1f88}\x{1f80}
+ 0: \x{1f88}\x{1f80}
+ 1: \x{1f88}
+
+/\x{1f80}+/8i
+ \x{1f88}\x{1f80}
+ 0: \x{1f88}\x{1f80}
+ 1: \x{1f88}
+
+/\x{004b}+/8i
+ \x{004b}\x{006b}\x{212a}
+ 0: Kk\x{212a}
+ 1: Kk
+ 2: K
+
+/\x{006b}+/8i
+ \x{004b}\x{006b}\x{212a}
+ 0: Kk\x{212a}
+ 1: Kk
+ 2: K
+
+/\x{212a}+/8i
+ \x{004b}\x{006b}\x{212a}
+ 0: Kk\x{212a}
+ 1: Kk
+ 2: K
+
+
+/\x{0053}+/8i
+ \x{0053}\x{0073}\x{017f}
+ 0: Ss\x{17f}
+ 1: Ss
+ 2: S
+
+/\x{0073}+/8i
+ \x{0053}\x{0073}\x{017f}
+ 0: Ss\x{17f}
+ 1: Ss
+ 2: S
+
+/\x{017f}+/8i
+ \x{0053}\x{0073}\x{017f}
+ 0: Ss\x{17f}
+ 1: Ss
+ 2: S
+
+/ist/8i
+ ikt
+No match
+
+/is+t/8i
+ iSs\x{17f}t
+ 0: iSs\x{17f}t
+ ikt
+No match
+
+/is+?t/8i
+ ikt
+No match
+
+/is?t/8i
+ ikt
+No match
+
+/is{2}t/8i
+ iskt
+No match
+
/-- End of testinput10 --/
diff --git a/ext/pcre/pcrelib/testdata/testoutput2 b/ext/pcre/pcrelib/testdata/testoutput2
index 77b108c809..e9cddf80d1 100644
--- a/ext/pcre/pcrelib/testdata/testoutput2
+++ b/ext/pcre/pcrelib/testdata/testoutput2
@@ -768,7 +768,7 @@ Max lookbehind = 3
/(?>.*)(?<=(abcd)|(xyz))/I
Capturing subpattern count = 2
No options
-First char at start or follows newline
+No first char
No need char
Max lookbehind = 4
alphabetabcd
@@ -10110,7 +10110,7 @@ No set of starting bytes
"(?>.*/)foo"SI
Capturing subpattern count = 0
No options
-First char at start or follows newline
+No first char
Need char = 'o'
Subject length lower bound = 4
No set of starting bytes
@@ -12360,5 +12360,125 @@ assertion, and therefore fails the entire subroutine call. --/
/((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
ac
0: ac
+
+/-- These are all run as real matches in test 1; here we are just checking the
+settings of the anchored and startline bits. --/
+
+/(?>.*?a)(?<=ba)/I
+Capturing subpattern count = 0
+No options
+No first char
+Need char = 'a'
+Max lookbehind = 2
+
+/(?:.*?a)(?<=ba)/I
+Capturing subpattern count = 0
+No options
+First char at start or follows newline
+Need char = 'a'
+Max lookbehind = 2
+
+/.*?a(*PRUNE)b/I
+Capturing subpattern count = 0
+No options
+No first char
+Need char = 'b'
+
+/.*?a(*PRUNE)b/sI
+Capturing subpattern count = 0
+Options: dotall
+No first char
+Need char = 'b'
+
+/^a(*PRUNE)b/sI
+Capturing subpattern count = 0
+Options: anchored dotall
+No first char
+No need char
+
+/.*?a(*SKIP)b/I
+Capturing subpattern count = 0
+No options
+No first char
+Need char = 'b'
+
+/(?>.*?a)b/sI
+Capturing subpattern count = 0
+Options: dotall
+No first char
+Need char = 'b'
+
+/(?>.*?a)b/I
+Capturing subpattern count = 0
+No options
+No first char
+Need char = 'b'
+
+/(?>^a)b/sI
+Capturing subpattern count = 0
+Options: anchored dotall
+No first char
+No need char
+
+/(?>.*?)(?<=(abcd)|(wxyz))/I
+Capturing subpattern count = 2
+No options
+No first char
+No need char
+Max lookbehind = 4
+
+/(?>.*)(?<=(abcd)|(wxyz))/I
+Capturing subpattern count = 2
+No options
+No first char
+No need char
+Max lookbehind = 4
+
+"(?>.*)foo"I
+Capturing subpattern count = 0
+No options
+No first char
+Need char = 'o'
+
+"(?>.*?)foo"I
+Capturing subpattern count = 0
+No options
+No first char
+Need char = 'o'
+
+/(?>^abc)/mI
+Capturing subpattern count = 0
+Options: multiline
+First char at start or follows newline
+Need char = 'c'
+
+/(?>.*abc)/mI
+Capturing subpattern count = 0
+Options: multiline
+No first char
+Need char = 'c'
+
+/(?:.*abc)/mI
+Capturing subpattern count = 0
+Options: multiline
+First char at start or follows newline
+Need char = 'c'
+
+/-- Check PCRE_STUDY_EXTRA_NEEDED --/
+
+/.?/S-I
+Capturing subpattern count = 0
+No options
+No first char
+No need char
+Study returned NULL
+
+/.?/S!I
+Capturing subpattern count = 0
+No options
+No first char
+No need char
+Subject length lower bound = -1
+No set of starting bytes
/-- End of testinput2 --/
diff --git a/ext/pcre/pcrelib/testdata/testoutput5 b/ext/pcre/pcrelib/testdata/testoutput5
index c4f9a0c9a7..0e840540c4 100644
--- a/ext/pcre/pcrelib/testdata/testoutput5
+++ b/ext/pcre/pcrelib/testdata/testoutput5
@@ -276,7 +276,7 @@ No need char
/[\xFF]/DZ
------------------------------------------------------------------
Bra
- \xff
+ \x{ff}
Ket
End
------------------------------------------------------------------
@@ -290,7 +290,7 @@ No need char
/[^\xFF]/DZ
------------------------------------------------------------------
Bra
- [^\xff]
+ [^\x{ff}]
Ket
End
------------------------------------------------------------------
@@ -786,7 +786,7 @@ No match
/[\H]/8BZ
------------------------------------------------------------------
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}]
+ [\x00-\x08\x0a-\x1f!-\x9f\x{a1}-\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
------------------------------------------------------------------
@@ -794,7 +794,7 @@ No match
/[\V]/8BZ
------------------------------------------------------------------
Bra
- [\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{202a}-\x{10ffff}]
+ [\x00-\x09\x0e-\x84\x{86}-\x{2027}\x{202a}-\x{10ffff}]
Ket
End
------------------------------------------------------------------
@@ -1594,7 +1594,7 @@ Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 7
/[\H\x{d7ff}]+/8BZ
------------------------------------------------------------------
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}\x{d7ff}]+
+ [\x00-\x08\x0a-\x1f!-\x9f\x{a1}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{10ffff}\x{d7ff}]+
Ket
End
------------------------------------------------------------------
@@ -1634,7 +1634,7 @@ Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 7
/[\V\x{d7ff}]+/8BZ
------------------------------------------------------------------
Bra
- [\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{202a}-\x{10ffff}\x{d7ff}]+
+ [\x00-\x09\x0e-\x84\x{86}-\x{2027}\x{202a}-\x{10ffff}\x{d7ff}]+
Ket
End
------------------------------------------------------------------
diff --git a/ext/pcre/pcrelib/testdata/testoutput6 b/ext/pcre/pcrelib/testdata/testoutput6
index e88fc091b7..0182746168 100644
--- a/ext/pcre/pcrelib/testdata/testoutput6
+++ b/ext/pcre/pcrelib/testdata/testoutput6
@@ -1,6 +1,5 @@
/-- This set of tests is for Unicode property support. It is compatible with
- Perl >= 5.10, but not 5.8 because it tests some extra properties that are
- not in the earlier release. --/
+ Perl >= 5.15. --/
/^\pC\pL\pM\pN\pP\pS\pZ</8
\x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
@@ -696,7 +695,17 @@ No match
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
1: C
-
+
+/^\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}
+ \x{300}
+ 0: \x{300}
+
/^\p{Han}+/8
\x{2e81}\x{3007}\x{2f804}\x{31a0}
0: \x{2e81}\x{3007}\x{2f804}
@@ -1136,6 +1145,8 @@ No match
0: \x{65d}
\x{65e}
0: \x{65e}
+ \x{65f}
+ 0: \x{65f}
\x{66a}
0: \x{66a}
\x{6e9}
@@ -1158,8 +1169,6 @@ No match
No match
\x{655}
No match
- \x{65f}
-No match
/^\p{Cyrillic}/8
\x{1d2b}
@@ -1372,5 +1381,757 @@ No match
0: \x{23a}
0: \x{2c65}
+
+/-- These are tests for extended grapheme clusters --/
+
+/^\X/8+
+ G\x{34e}\x{34e}X
+ 0: G\x{34e}\x{34e}
+ 0+ X
+ \x{34e}\x{34e}X
+ 0: \x{34e}\x{34e}
+ 0+ X
+ \x04X
+ 0: \x{04}
+ 0+ X
+ \x{1100}X
+ 0: \x{1100}
+ 0+ X
+ \x{1100}\x{34e}X
+ 0: \x{1100}\x{34e}
+ 0+ X
+ \x{1b04}\x{1b04}X
+ 0: \x{1b04}\x{1b04}
+ 0+ X
+ *These match up to the roman letters
+ 0: *
+ 0+ These match up to the roman letters
+ \x{1111}\x{1111}L,L
+ 0: \x{1111}\x{1111}
+ 0+ L,L
+ \x{1111}\x{1111}\x{1169}L,L,V
+ 0: \x{1111}\x{1111}\x{1169}
+ 0+ L,L,V
+ \x{1111}\x{ae4c}L, LV
+ 0: \x{1111}\x{ae4c}
+ 0+ L, LV
+ \x{1111}\x{ad89}L, LVT
+ 0: \x{1111}\x{ad89}
+ 0+ L, LVT
+ \x{1111}\x{ae4c}\x{1169}L, LV, V
+ 0: \x{1111}\x{ae4c}\x{1169}
+ 0+ L, LV, V
+ \x{1111}\x{ae4c}\x{1169}\x{1169}L, LV, V, V
+ 0: \x{1111}\x{ae4c}\x{1169}\x{1169}
+ 0+ L, LV, V, V
+ \x{1111}\x{ae4c}\x{1169}\x{11fe}L, LV, V, T
+ 0: \x{1111}\x{ae4c}\x{1169}\x{11fe}
+ 0+ L, LV, V, T
+ \x{1111}\x{ad89}\x{11fe}L, LVT, T
+ 0: \x{1111}\x{ad89}\x{11fe}
+ 0+ L, LVT, T
+ \x{1111}\x{ad89}\x{11fe}\x{11fe}L, LVT, T, T
+ 0: \x{1111}\x{ad89}\x{11fe}\x{11fe}
+ 0+ L, LVT, T, T
+ \x{ad89}\x{11fe}\x{11fe}LVT, T, T
+ 0: \x{ad89}\x{11fe}\x{11fe}
+ 0+ LVT, T, T
+ *These match just the first codepoint (invalid sequence)
+ 0: *
+ 0+ These match just the first codepoint (invalid sequence)
+ \x{1111}\x{11fe}L, T
+ 0: \x{1111}
+ 0+ \x{11fe}L, T
+ \x{ae4c}\x{1111}LV, L
+ 0: \x{ae4c}
+ 0+ \x{1111}LV, L
+ \x{ae4c}\x{ae4c}LV, LV
+ 0: \x{ae4c}
+ 0+ \x{ae4c}LV, LV
+ \x{ae4c}\x{ad89}LV, LVT
+ 0: \x{ae4c}
+ 0+ \x{ad89}LV, LVT
+ \x{1169}\x{1111}V, L
+ 0: \x{1169}
+ 0+ \x{1111}V, L
+ \x{1169}\x{ae4c}V, LV
+ 0: \x{1169}
+ 0+ \x{ae4c}V, LV
+ \x{1169}\x{ad89}V, LVT
+ 0: \x{1169}
+ 0+ \x{ad89}V, LVT
+ \x{ad89}\x{1111}LVT, L
+ 0: \x{ad89}
+ 0+ \x{1111}LVT, L
+ \x{ad89}\x{1169}LVT, V
+ 0: \x{ad89}
+ 0+ \x{1169}LVT, V
+ \x{ad89}\x{ae4c}LVT, LV
+ 0: \x{ad89}
+ 0+ \x{ae4c}LVT, LV
+ \x{ad89}\x{ad89}LVT, LVT
+ 0: \x{ad89}
+ 0+ \x{ad89}LVT, LVT
+ \x{11fe}\x{1111}T, L
+ 0: \x{11fe}
+ 0+ \x{1111}T, L
+ \x{11fe}\x{1169}T, V
+ 0: \x{11fe}
+ 0+ \x{1169}T, V
+ \x{11fe}\x{ae4c}T, LV
+ 0: \x{11fe}
+ 0+ \x{ae4c}T, LV
+ \x{11fe}\x{ad89}T, LVT
+ 0: \x{11fe}
+ 0+ \x{ad89}T, LVT
+ *Test extend and spacing mark
+ 0: *
+ 0+ Test extend and spacing mark
+ \x{1111}\x{ae4c}\x{0711}L, LV, extend
+ 0: \x{1111}\x{ae4c}\x{711}
+ 0+ L, LV, extend
+ \x{1111}\x{ae4c}\x{1b04}L, LV, spacing mark
+ 0: \x{1111}\x{ae4c}\x{1b04}
+ 0+ L, LV, spacing mark
+ \x{1111}\x{ae4c}\x{1b04}\x{0711}\x{1b04}L, LV, spacing mark, extend, spacing mark
+ 0: \x{1111}\x{ae4c}\x{1b04}\x{711}\x{1b04}
+ 0+ L, LV, spacing mark, extend, spacing mark
+ *Test CR, LF, and control
+ 0: *
+ 0+ Test CR, LF, and control
+ \x0d\x{0711}CR, extend
+ 0: \x{0d}
+ 0+ \x{711}CR, extend
+ \x0d\x{1b04}CR, spacingmark
+ 0: \x{0d}
+ 0+ \x{1b04}CR, spacingmark
+ \x0a\x{0711}LF, extend
+ 0: \x{0a}
+ 0+ \x{711}LF, extend
+ \x0a\x{1b04}LF, spacingmark
+ 0: \x{0a}
+ 0+ \x{1b04}LF, spacingmark
+ \x0b\x{0711}Control, extend
+ 0: \x{0b}
+ 0+ \x{711}Control, extend
+ \x09\x{1b04}Control, spacingmark
+ 0: \x{09}
+ 0+ \x{1b04}Control, spacingmark
+ *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/8+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0+
+
+/^\X{2,4}X/8+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0+
+
+/^\X{2,4}?X/8+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0+
+ \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
+ 0+
+
+/-- --/
+
+/\x{1e9e}+/8i
+ \x{1e9e}\x{00df}
+ 0: \x{1e9e}\x{df}
+
+/[z\x{1e9e}]+/8i
+ \x{1e9e}\x{00df}
+ 0: \x{1e9e}\x{df}
+
+/\x{00df}+/8i
+ \x{1e9e}\x{00df}
+ 0: \x{1e9e}\x{df}
+
+/[z\x{00df}]+/8i
+ \x{1e9e}\x{00df}
+ 0: \x{1e9e}\x{df}
+
+/\x{1f88}+/8i
+ \x{1f88}\x{1f80}
+ 0: \x{1f88}\x{1f80}
+
+/[z\x{1f88}]+/8i
+ \x{1f88}\x{1f80}
+ 0: \x{1f88}\x{1f80}
+
+/-- Characters with more than one other case; test in classes --/
+
+/[z\x{00b5}]+/8i
+ \x{00b5}\x{039c}\x{03bc}
+ 0: \x{b5}\x{39c}\x{3bc}
+
+/[z\x{039c}]+/8i
+ \x{00b5}\x{039c}\x{03bc}
+ 0: \x{b5}\x{39c}\x{3bc}
+
+/[z\x{03bc}]+/8i
+ \x{00b5}\x{039c}\x{03bc}
+ 0: \x{b5}\x{39c}\x{3bc}
+
+/[z\x{00c5}]+/8i
+ \x{00c5}\x{00e5}\x{212b}
+ 0: \x{c5}\x{e5}\x{212b}
+
+/[z\x{00e5}]+/8i
+ \x{00c5}\x{00e5}\x{212b}
+ 0: \x{c5}\x{e5}\x{212b}
+
+/[z\x{212b}]+/8i
+ \x{00c5}\x{00e5}\x{212b}
+ 0: \x{c5}\x{e5}\x{212b}
+
+/[z\x{01c4}]+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+ 0: \x{1c4}\x{1c5}\x{1c6}
+
+/[z\x{01c5}]+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+ 0: \x{1c4}\x{1c5}\x{1c6}
+
+/[z\x{01c6}]+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+ 0: \x{1c4}\x{1c5}\x{1c6}
+
+/[z\x{01c7}]+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+ 0: \x{1c7}\x{1c8}\x{1c9}
+
+/[z\x{01c8}]+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+ 0: \x{1c7}\x{1c8}\x{1c9}
+
+/[z\x{01c9}]+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+ 0: \x{1c7}\x{1c8}\x{1c9}
+
+/[z\x{01ca}]+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+ 0: \x{1ca}\x{1cb}\x{1cc}
+
+/[z\x{01cb}]+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+ 0: \x{1ca}\x{1cb}\x{1cc}
+
+/[z\x{01cc}]+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+ 0: \x{1ca}\x{1cb}\x{1cc}
+
+/[z\x{01f1}]+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+ 0: \x{1f1}\x{1f2}\x{1f3}
+
+/[z\x{01f2}]+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+ 0: \x{1f1}\x{1f2}\x{1f3}
+
+/[z\x{01f3}]+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+ 0: \x{1f1}\x{1f2}\x{1f3}
+
+/[z\x{0345}]+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+ 0: \x{345}\x{399}\x{3b9}\x{1fbe}
+
+/[z\x{0399}]+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+ 0: \x{345}\x{399}\x{3b9}\x{1fbe}
+
+/[z\x{03b9}]+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+ 0: \x{345}\x{399}\x{3b9}\x{1fbe}
+
+/[z\x{1fbe}]+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+ 0: \x{345}\x{399}\x{3b9}\x{1fbe}
+
+/[z\x{0392}]+/8i
+ \x{0392}\x{03b2}\x{03d0}
+ 0: \x{392}\x{3b2}\x{3d0}
+
+/[z\x{03b2}]+/8i
+ \x{0392}\x{03b2}\x{03d0}
+ 0: \x{392}\x{3b2}\x{3d0}
+
+/[z\x{03d0}]+/8i
+ \x{0392}\x{03b2}\x{03d0}
+ 0: \x{392}\x{3b2}\x{3d0}
+
+/[z\x{0395}]+/8i
+ \x{0395}\x{03b5}\x{03f5}
+ 0: \x{395}\x{3b5}\x{3f5}
+
+/[z\x{03b5}]+/8i
+ \x{0395}\x{03b5}\x{03f5}
+ 0: \x{395}\x{3b5}\x{3f5}
+
+/[z\x{03f5}]+/8i
+ \x{0395}\x{03b5}\x{03f5}
+ 0: \x{395}\x{3b5}\x{3f5}
+
+/[z\x{0398}]+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+ 0: \x{398}\x{3b8}\x{3d1}\x{3f4}
+
+/[z\x{03b8}]+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+ 0: \x{398}\x{3b8}\x{3d1}\x{3f4}
+
+/[z\x{03d1}]+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+ 0: \x{398}\x{3b8}\x{3d1}\x{3f4}
+
+/[z\x{03f4}]+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+ 0: \x{398}\x{3b8}\x{3d1}\x{3f4}
+
+/[z\x{039a}]+/8i
+ \x{039a}\x{03ba}\x{03f0}
+ 0: \x{39a}\x{3ba}\x{3f0}
+
+/[z\x{03ba}]+/8i
+ \x{039a}\x{03ba}\x{03f0}
+ 0: \x{39a}\x{3ba}\x{3f0}
+
+/[z\x{03f0}]+/8i
+ \x{039a}\x{03ba}\x{03f0}
+ 0: \x{39a}\x{3ba}\x{3f0}
+
+/[z\x{03a0}]+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+ 0: \x{3a0}\x{3c0}\x{3d6}
+
+/[z\x{03c0}]+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+ 0: \x{3a0}\x{3c0}\x{3d6}
+
+/[z\x{03d6}]+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+ 0: \x{3a0}\x{3c0}\x{3d6}
+
+/[z\x{03a1}]+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+ 0: \x{3a1}\x{3c1}\x{3f1}
+
+/[z\x{03c1}]+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+ 0: \x{3a1}\x{3c1}\x{3f1}
+
+/[z\x{03f1}]+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+ 0: \x{3a1}\x{3c1}\x{3f1}
+
+/[z\x{03a3}]+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+ 0: \x{3a3}\x{3c2}\x{3c3}
+
+/[z\x{03c2}]+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+ 0: \x{3a3}\x{3c2}\x{3c3}
+
+/[z\x{03c3}]+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+ 0: \x{3a3}\x{3c2}\x{3c3}
+
+/[z\x{03a6}]+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+ 0: \x{3a6}\x{3c6}\x{3d5}
+
+/[z\x{03c6}]+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+ 0: \x{3a6}\x{3c6}\x{3d5}
+
+/[z\x{03d5}]+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+ 0: \x{3a6}\x{3c6}\x{3d5}
+
+/[z\x{03c9}]+/8i
+ \x{03c9}\x{03a9}\x{2126}
+ 0: \x{3c9}\x{3a9}\x{2126}
+
+/[z\x{03a9}]+/8i
+ \x{03c9}\x{03a9}\x{2126}
+ 0: \x{3c9}\x{3a9}\x{2126}
+
+/[z\x{2126}]+/8i
+ \x{03c9}\x{03a9}\x{2126}
+ 0: \x{3c9}\x{3a9}\x{2126}
+
+/[z\x{1e60}]+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+ 0: \x{1e60}\x{1e61}\x{1e9b}
+
+/[z\x{1e61}]+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+ 0: \x{1e60}\x{1e61}\x{1e9b}
+
+/[z\x{1e9b}]+/8i
+ \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 --/
+
+/[z\x{004b}]+/8i
+ \x{004b}\x{006b}\x{212a}
+ 0: Kk\x{212a}
+
+/[z\x{006b}]+/8i
+ \x{004b}\x{006b}\x{212a}
+ 0: Kk\x{212a}
+
+/[z\x{212a}]+/8i
+ \x{004b}\x{006b}\x{212a}
+ 0: Kk\x{212a}
+
+/[z\x{0053}]+/8i
+ \x{0053}\x{0073}\x{017f}
+ 0: Ss\x{17f}
+
+/[z\x{0073}]+/8i
+ \x{0053}\x{0073}\x{017f}
+ 0: Ss\x{17f}
+
+/[z\x{017f}]+/8i
+ \x{0053}\x{0073}\x{017f}
+ 0: Ss\x{17f}
+
+/-- --/
+
+/(ΣΆΜΟΣ) \1/8i
+ ΣΆΜΟΣ ΣΆΜΟΣ
+ 0: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3} \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
+ 1: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
+ ΣΆΜΟΣ σάμος
+ 0: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3} \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
+ 1: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
+ σάμος σάμος
+ 0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
+ 1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
+ σάμος σάμοσ
+ 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}
+
+/(σάμος) \1/8i
+ ΣΆΜΟΣ ΣΆΜΟΣ
+ 0: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3} \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
+ 1: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
+ ΣΆΜΟΣ σάμος
+ 0: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3} \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
+ 1: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
+ σάμος σάμος
+ 0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
+ 1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
+ σάμος σάμοσ
+ 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}
+
+/(ΣΆΜΟΣ) \1*/8i
+ ΣΆΜΟΣ\x20
+ 0: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
+ 1: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
+ ΣΆΜΟΣ ΣΆΜΟΣσάμοςσάμος
+ 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 --/
+
+/\x{00b5}+/8i
+ \x{00b5}\x{039c}\x{03bc}
+ 0: \x{b5}\x{39c}\x{3bc}
+
+/\x{039c}+/8i
+ \x{00b5}\x{039c}\x{03bc}
+ 0: \x{b5}\x{39c}\x{3bc}
+
+/\x{03bc}+/8i
+ \x{00b5}\x{039c}\x{03bc}
+ 0: \x{b5}\x{39c}\x{3bc}
+
+
+/\x{00c5}+/8i
+ \x{00c5}\x{00e5}\x{212b}
+ 0: \x{c5}\x{e5}\x{212b}
+
+/\x{00e5}+/8i
+ \x{00c5}\x{00e5}\x{212b}
+ 0: \x{c5}\x{e5}\x{212b}
+
+/\x{212b}+/8i
+ \x{00c5}\x{00e5}\x{212b}
+ 0: \x{c5}\x{e5}\x{212b}
+
+
+/\x{01c4}+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+ 0: \x{1c4}\x{1c5}\x{1c6}
+
+/\x{01c5}+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+ 0: \x{1c4}\x{1c5}\x{1c6}
+
+/\x{01c6}+/8i
+ \x{01c4}\x{01c5}\x{01c6}
+ 0: \x{1c4}\x{1c5}\x{1c6}
+
+
+/\x{01c7}+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+ 0: \x{1c7}\x{1c8}\x{1c9}
+
+/\x{01c8}+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+ 0: \x{1c7}\x{1c8}\x{1c9}
+
+/\x{01c9}+/8i
+ \x{01c7}\x{01c8}\x{01c9}
+ 0: \x{1c7}\x{1c8}\x{1c9}
+
+
+/\x{01ca}+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+ 0: \x{1ca}\x{1cb}\x{1cc}
+
+/\x{01cb}+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+ 0: \x{1ca}\x{1cb}\x{1cc}
+
+/\x{01cc}+/8i
+ \x{01ca}\x{01cb}\x{01cc}
+ 0: \x{1ca}\x{1cb}\x{1cc}
+
+
+/\x{01f1}+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+ 0: \x{1f1}\x{1f2}\x{1f3}
+
+/\x{01f2}+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+ 0: \x{1f1}\x{1f2}\x{1f3}
+
+/\x{01f3}+/8i
+ \x{01f1}\x{01f2}\x{01f3}
+ 0: \x{1f1}\x{1f2}\x{1f3}
+
+
+/\x{0345}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+ 0: \x{345}\x{399}\x{3b9}\x{1fbe}
+
+/\x{0399}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+ 0: \x{345}\x{399}\x{3b9}\x{1fbe}
+
+/\x{03b9}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+ 0: \x{345}\x{399}\x{3b9}\x{1fbe}
+
+/\x{1fbe}+/8i
+ \x{0345}\x{0399}\x{03b9}\x{1fbe}
+ 0: \x{345}\x{399}\x{3b9}\x{1fbe}
+
+
+/\x{0392}+/8i
+ \x{0392}\x{03b2}\x{03d0}
+ 0: \x{392}\x{3b2}\x{3d0}
+
+/\x{03b2}+/8i
+ \x{0392}\x{03b2}\x{03d0}
+ 0: \x{392}\x{3b2}\x{3d0}
+
+/\x{03d0}+/8i
+ \x{0392}\x{03b2}\x{03d0}
+ 0: \x{392}\x{3b2}\x{3d0}
+
+
+/\x{0395}+/8i
+ \x{0395}\x{03b5}\x{03f5}
+ 0: \x{395}\x{3b5}\x{3f5}
+
+/\x{03b5}+/8i
+ \x{0395}\x{03b5}\x{03f5}
+ 0: \x{395}\x{3b5}\x{3f5}
+
+/\x{03f5}+/8i
+ \x{0395}\x{03b5}\x{03f5}
+ 0: \x{395}\x{3b5}\x{3f5}
+
+
+/\x{0398}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+ 0: \x{398}\x{3b8}\x{3d1}\x{3f4}
+
+/\x{03b8}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+ 0: \x{398}\x{3b8}\x{3d1}\x{3f4}
+
+/\x{03d1}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+ 0: \x{398}\x{3b8}\x{3d1}\x{3f4}
+
+/\x{03f4}+/8i
+ \x{0398}\x{03b8}\x{03d1}\x{03f4}
+ 0: \x{398}\x{3b8}\x{3d1}\x{3f4}
+
+
+/\x{039a}+/8i
+ \x{039a}\x{03ba}\x{03f0}
+ 0: \x{39a}\x{3ba}\x{3f0}
+
+/\x{03ba}+/8i
+ \x{039a}\x{03ba}\x{03f0}
+ 0: \x{39a}\x{3ba}\x{3f0}
+
+/\x{03f0}+/8i
+ \x{039a}\x{03ba}\x{03f0}
+ 0: \x{39a}\x{3ba}\x{3f0}
+
+
+/\x{03a0}+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+ 0: \x{3a0}\x{3c0}\x{3d6}
+
+/\x{03c0}+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+ 0: \x{3a0}\x{3c0}\x{3d6}
+
+/\x{03d6}+/8i
+ \x{03a0}\x{03c0}\x{03d6}
+ 0: \x{3a0}\x{3c0}\x{3d6}
+
+
+/\x{03a1}+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+ 0: \x{3a1}\x{3c1}\x{3f1}
+
+/\x{03c1}+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+ 0: \x{3a1}\x{3c1}\x{3f1}
+
+/\x{03f1}+/8i
+ \x{03a1}\x{03c1}\x{03f1}
+ 0: \x{3a1}\x{3c1}\x{3f1}
+
+
+/\x{03a3}+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+ 0: \x{3a3}\x{3c2}\x{3c3}
+
+/\x{03c2}+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+ 0: \x{3a3}\x{3c2}\x{3c3}
+
+/\x{03c3}+/8i
+ \x{03A3}\x{03C2}\x{03C3}
+ 0: \x{3a3}\x{3c2}\x{3c3}
+
+
+/\x{03a6}+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+ 0: \x{3a6}\x{3c6}\x{3d5}
+
+/\x{03c6}+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+ 0: \x{3a6}\x{3c6}\x{3d5}
+
+/\x{03d5}+/8i
+ \x{03a6}\x{03c6}\x{03d5}
+ 0: \x{3a6}\x{3c6}\x{3d5}
+
+
+/\x{03c9}+/8i
+ \x{03c9}\x{03a9}\x{2126}
+ 0: \x{3c9}\x{3a9}\x{2126}
+
+/\x{03a9}+/8i
+ \x{03c9}\x{03a9}\x{2126}
+ 0: \x{3c9}\x{3a9}\x{2126}
+
+/\x{2126}+/8i
+ \x{03c9}\x{03a9}\x{2126}
+ 0: \x{3c9}\x{3a9}\x{2126}
+
+
+/\x{1e60}+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+ 0: \x{1e60}\x{1e61}\x{1e9b}
+
+/\x{1e61}+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+ 0: \x{1e60}\x{1e61}\x{1e9b}
+
+/\x{1e9b}+/8i
+ \x{1e60}\x{1e61}\x{1e9b}
+ 0: \x{1e60}\x{1e61}\x{1e9b}
+
+
+/\x{1e9e}+/8i
+ \x{1e9e}\x{00df}
+ 0: \x{1e9e}\x{df}
+
+/\x{00df}+/8i
+ \x{1e9e}\x{00df}
+ 0: \x{1e9e}\x{df}
+
+
+/\x{1f88}+/8i
+ \x{1f88}\x{1f80}
+ 0: \x{1f88}\x{1f80}
+
+/\x{1f80}+/8i
+ \x{1f88}\x{1f80}
+ 0: \x{1f88}\x{1f80}
+
+
+/-- Perl 5.12.4 gets these wrong, but 5.15.3 is OK --/
+
+/\x{004b}+/8i
+ \x{004b}\x{006b}\x{212a}
+ 0: Kk\x{212a}
+
+/\x{006b}+/8i
+ \x{004b}\x{006b}\x{212a}
+ 0: Kk\x{212a}
+
+/\x{212a}+/8i
+ \x{004b}\x{006b}\x{212a}
+ 0: Kk\x{212a}
+
+
+/\x{0053}+/8i
+ \x{0053}\x{0073}\x{017f}
+ 0: Ss\x{17f}
+
+/\x{0073}+/8i
+ \x{0053}\x{0073}\x{017f}
+ 0: Ss\x{17f}
+
+/\x{017f}+/8i
+ \x{0053}\x{0073}\x{017f}
+ 0: Ss\x{17f}
/-- End of testinput6 --/
diff --git a/ext/pcre/pcrelib/testdata/testoutput7 b/ext/pcre/pcrelib/testdata/testoutput7
index ccfdad965c..4f8b7b9bf3 100644
--- a/ext/pcre/pcrelib/testdata/testoutput7
+++ b/ext/pcre/pcrelib/testdata/testoutput7
@@ -124,7 +124,7 @@ No match
/[z-\x{100}]/8iDZ
------------------------------------------------------------------
Bra
- [Z\x{39c}\x{178}z-\x{101}]
+ [Z\x{39c}\x{3bc}\x{1e9e}\x{178}z-\x{101}]
Ket
End
------------------------------------------------------------------
@@ -162,7 +162,7 @@ No match
/[z-\x{100}]/8DZi
------------------------------------------------------------------
Bra
- [Z\x{39c}\x{178}z-\x{101}]
+ [Z\x{39c}\x{3bc}\x{1e9e}\x{178}z-\x{101}]
Ket
End
------------------------------------------------------------------
@@ -233,7 +233,7 @@ No need char
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}
@@ -423,20 +423,6 @@ of case for anything other than the ASCII letters. --/
\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
@@ -1194,11 +1180,13 @@ No match
/^S(\X*)e(\X*)$/8
Stéréo
-No match
+ 0: Ste\x{301}re\x{301}o
+ 1: te\x{301}r
+ 2: \x{301}o
/^\X/8
́réo
-No match
+ 0: \x{301}
/^a\X41z/<JS>
aX41z
@@ -1313,4 +1301,173 @@ Partial match: AA
AA\P\P
Partial match: AA
+/A\x{3a3}B/8iDZ
+------------------------------------------------------------------
+ Bra
+ /i A
+ clist 03a3 03c2 03c3
+ /i B
+ Ket
+ End
+------------------------------------------------------------------
+Capturing subpattern count = 0
+Options: caseless utf
+First char = 'A' (caseless)
+Need char = 'B' (caseless)
+
+/\x{3a3}B/8iDZ
+------------------------------------------------------------------
+ Bra
+ clist 03a3 03c2 03c3
+ /i B
+ Ket
+ End
+------------------------------------------------------------------
+Capturing subpattern count = 0
+Options: caseless utf
+No first char
+Need char = 'B' (caseless)
+
+/[\x{3a3}]/8iBZ
+------------------------------------------------------------------
+ Bra
+ clist 03a3 03c2 03c3
+ Ket
+ End
+------------------------------------------------------------------
+
+/[^\x{3a3}]/8iBZ
+------------------------------------------------------------------
+ Bra
+ not clist 03a3 03c2 03c3
+ Ket
+ End
+------------------------------------------------------------------
+
+/[\x{3a3}]+/8iBZ
+------------------------------------------------------------------
+ Bra
+ clist 03a3 03c2 03c3 +
+ Ket
+ End
+------------------------------------------------------------------
+
+/[^\x{3a3}]+/8iBZ
+------------------------------------------------------------------
+ Bra
+ not clist 03a3 03c2 03c3 +
+ Ket
+ End
+------------------------------------------------------------------
+
+/a*\x{3a3}/8iBZ
+------------------------------------------------------------------
+ Bra
+ /i a*+
+ clist 03a3 03c2 03c3
+ Ket
+ End
+------------------------------------------------------------------
+
+/\x{3a3}+a/8iBZ
+------------------------------------------------------------------
+ Bra
+ clist 03a3 03c2 03c3 ++
+ /i a
+ Ket
+ End
+------------------------------------------------------------------
+
+/\x{3a3}*\x{3c2}/8iBZ
+------------------------------------------------------------------
+ Bra
+ clist 03a3 03c2 03c3 *
+ clist 03a3 03c2 03c3
+ Ket
+ End
+------------------------------------------------------------------
+
+/\x{3a3}{3}/8i+
+ \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}/8i+
+ \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}?/8i+
+ \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}+./8i+
+ \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}++./8i+
+ ** Failers
+No match
+ \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
+No match
+
+/\x{3a3}*\x{3c2}/8iBZ
+------------------------------------------------------------------
+ Bra
+ clist 03a3 03c2 03c3 *
+ clist 03a3 03c2 03c3
+ Ket
+ End
+------------------------------------------------------------------
+
+/[^\x{3a3}]*\x{3c2}/8iBZ
+------------------------------------------------------------------
+ Bra
+ not clist 03a3 03c2 03c3 *+
+ clist 03a3 03c2 03c3
+ Ket
+ End
+------------------------------------------------------------------
+
+/[^a]*\x{3c2}/8iBZ
+------------------------------------------------------------------
+ Bra
+ /i [^a]*
+ clist 03a3 03c2 03c3
+ Ket
+ End
+------------------------------------------------------------------
+
+/ist/8iBZ
+------------------------------------------------------------------
+ Bra
+ /i i
+ clist 0053 0073 017f
+ /i t
+ Ket
+ End
+------------------------------------------------------------------
+ ikt
+No match
+
+/is+t/8i
+ iSs\x{17f}t
+ 0: iSs\x{17f}t
+ ikt
+No match
+
+/is+?t/8i
+ ikt
+No match
+
+/is?t/8i
+ ikt
+No match
+
+/is{2}t/8i
+ iskt
+No match
+
/-- End of testinput7 --/