summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/tests/regexp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/tests/regexp')
-rw-r--r--Source/JavaScriptCore/tests/regexp/RegExpTest.data1040
1 files changed, 1040 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/tests/regexp/RegExpTest.data b/Source/JavaScriptCore/tests/regexp/RegExpTest.data
new file mode 100644
index 000000000..3a77e0b27
--- /dev/null
+++ b/Source/JavaScriptCore/tests/regexp/RegExpTest.data
@@ -0,0 +1,1040 @@
+# Test data file for JavaScriptCore::RegExp functional test.
+# The format of this file is:
+# # comment line
+# /{pattern}/{flags}
+# "{string}", {offset}, {return-value}, {match-offset-vector}
+# Both the pattern and string accept backslash escapes.
+#
+/A/
+ "A", 0, 0, (0, 1)
+ "A2", 0, 0, (0, 1)
+/A2/
+ "A2", 0, 0, (0, 2)
+/\\u0041/
+ "A", 0, 0, (0, 1)
+/\\u00412/
+ "A2", 0, 0, (0, 2)
+/abc/
+ "abc", 0, 0, (0, 3)
+ "xabcy", 0, 1, (1, 4)
+ "ababc", 0, 2, (2, 5)
+ "xbc", 0, -1, (-1, -1)
+ "axc", 0, -1, (-1, -1)
+ "abx", 0, -1, (-1, -1)
+ "b", 0, -1, (-1, -1)
+/a|ab/
+ "abc", 0, 0, (0, 1)
+/(a|d|q|)x/i
+ "bcaDxqy", 0, 3, (3, 5, 3, 4)
+/(a|(e|q))(x|y)/
+ "bcaddxqy", 0, 6, (6, 8, 6, 7, 6, 7, 7, 8)
+/a*b/
+ "aaadaabaaa", 0, 4, (4, 7)
+ "xxx", 0, -1, (4, 4)
+/[^abc]def[abc]+/
+ "abxdefbb", 0, 2, (2, 8)
+/(a*)baa/
+ "ccdaaabaxaabaa", 0, 9, (9, 14, 9, 11)
+ "aabaa", 0, 0, (0, 5, 0, 2)
+/q(a|b)*q/
+ "xxqababqyy", 0, 2, (2, 8, 6, 7)
+/(a(.|[^d])c)*/
+ "adcaxc", 0, 0, (0, 6, 3, 6, 4, 5)
+/(a*)b\\1/
+ "abaaaxaabaayy", 0, 0, (0, 3, 0, 1)
+ "cccdaaabaxaabaayy", 0, 6, (6, 9, 6, 7)
+ "cccdaaabqxaabaayy", 0, 7, (7, 8, 7, 7)
+/x1g/
+ "x1g", 0, 0, (0, 3)
+/^x/
+ "x412", 0, 0, (0, 1)
+/\\u001g/
+ "u001g", 0, 0, (0, 5)
+/34/g
+ "343443444", 0, 0, (0, 2)
+ "343443444", 2, 2, (2, 4)
+ "343443444", 4, 5, (5, 7)
+ "343443444", 7, -1, (-1, -1)
+/\\d{1}/g
+ "123456abcde7890", 0, 0, (0, 1)
+ "123456abcde7890", 1, 1, (1, 2)
+ "123456abcde7890", 2, 2, (2, 3)
+ "123456abcde7890", 3, 3, (3, 4)
+ "123456abcde7890", 4, 4, (4, 5)
+ "123456abcde7890", 5, 5, (5, 6)
+ "123456abcde7890", 6, 11, (11, 12)
+ "123456abcde7890", 12, 12, (12, 13)
+ "123456abcde7890", 13, 13, (13, 14)
+ "123456abcde7890", 14, 14, (14, 15)
+ "123456abcde7890", 15, -1, (-1, -1)
+/\\d{2}/g
+ "123456abcde7890", 0, 0, (0, 2)
+ "123456abcde7890", 2, 2, (2, 4)
+ "123456abcde7890", 4, 4, (4, 6)
+ "123456abcde7890", 6, 11, (11, 13)
+ "123456abcde7890", 13, 13, (13, 15)
+ "123456abcde7890", 15, -1, (-1, -1)
+/\\D{2}/g
+ "123456abcde7890", 0, 6, (6, 8)
+ "123456abcde7890", 8, 8, (8, 10)
+ "123456abcde7890", 10, -1, (-1, -1)
+/([\\d]{5})([-\\ ]?[\\d]{4})?$/
+ "Boston, Mass. 02134", 0, 14, (14, 19, 14, 19, -1, -1)
+/l/
+ "hello", 0, 2, (2, 3)
+ "hello", 3, 3, (3, 4)
+ "hello", 4, -1, (-1, -1)
+/\\s/g
+ "x, x, x, x", 0, 2, (2, 3)
+ "x, x, x, x", 3, 5, (5, 6)
+ "x, x, x, x", 6, 8, (8, 9)
+ "x, x, x, x", 9, -1, (-1, -1)
+/((a)|(ab))((c)|(bc))/
+ "abc", 0, 0, (0, 3, 0, 1, 0, 1, -1, -1, 1, 3, -1, -1, 1, 3)
+/a[a-z]{2,4}/
+ "abcdefghi", 0, 0, (0, 5)
+/a[a-z]{2,4}?/
+ "abcdefghi", 0, 0, (0, 3)
+/(aa|aabaac|ba|b|c)*/
+ "aabaac", 0, 0, (0, 4, 2, 4)
+/^(a+)\\1*,\\1+$/
+ "aaaaaaaaaa,aaaaaaaaaaaaaaa", 0, 0, (0, 26, 0, 5)
+/(z)((a+)?(b+)?(c))*/
+ "zaacbbbcac", 0, 0, (0, 10, 0, 1, 8, 10, 8, 9, -1, -1, 9, 10)
+/(a*)*/
+ "b", 0, 0, (0, 0, -1, -1)
+ "ab", 0, 0, (0, 1, 0, 1)
+/(a*)b\\1+/
+ "baaaac", 0, 0, (0, 1, 0, 0)
+/(?=(a+))/
+ "baaabac", 0, 1, (1, 1, 1, 4)
+/(?=(a+))a*b\\1/
+ "baaabac", 0, 3, (3, 6, 3, 4)
+/(.*?)a(?!(a+)b\\2c)\\2(.*)/
+ "baaabaac", 0, 0, (0, 8, 0, 2, -1, -1, 3, 8)
+/\\w\\s\\w/g
+ "a b c d e", 0, 0, (0, 3)
+ "a b c d e", 3, 4, (4, 7)
+ "a b c d e", 7, -1, (-1, -1)
+/\\d\\d\\d/g
+ "12345678", 0, 0, (0, 3)
+ "12345678", 3, 3, (3, 6)
+ "12345678", 6, -1, (-1, -1)
+/abc/gi
+ "AbcaBcabC", 0, 0, (0, 3)
+ "AbcaBcabC", 3, 3, (3, 6)
+ "AbcaBcabC", 6, 6, (6, 9)
+ "AbcaBcabC", 9, -1, (-1, -1)
+/abc/i
+ "AbcaBcabC", 0, 0, (0, 3)
+ "ABC", 0, 0, (0, 3)
+ "XABCY", 0, 1, (1, 4)
+ "ABABC", 0, 2, (2, 5)
+ "XBC", 0, -1, (-1, -1)
+ "AXC", 0, -1, (-1, -1)
+ "ABX", 0, -1, (-1, -1)
+ "aaxabxbaxbbx", 0, -1, (-1, -1)
+/ab*c/
+ "abc", 0, 0, (0, 3)
+/ab*bc/
+ "abc", 0, 0, (0, 3)
+ "abbc", 0, 0, (0, 4)
+ "abbbbc", 0, 0, (0, 6)
+/.{1}/
+ "abbbbc", 0, 0, (0, 1)
+/.{3,4}/
+ "abbbbc", 0, 0, (0, 4)
+/ab{0,}bc/
+ "abbbbc", 0, 0, (0, 6)
+/ab+bc/
+ "abbc", 0, 0, (0, 4)
+ "abbbbc", 0, 0, (0, 6)
+ "abc", 0, -1, (0, 9)
+ "abq", 0, -1, (0, 9)
+ "abc", 0, -1, (0, -1)
+ "abq", 0, -1, (0, -1)
+/ab{1,}bc/
+ "abbbbc", 0, 0, (0, 6)
+ "abq", 0, -1, (0, 9)
+/ab{1,3}bc/
+ "abbbbc", 0, 0, (0, 6)
+ "abbbc", 0, 0, (0, 5)
+ "abbc", 0, 0, (0, 4)
+ "abc", 0, -1, (0, -1)
+ "abbbbbc", 0, -1, (4, -1)
+/ab{3,4}bc/
+ "abbbbc", 0, 0, (0, 6)
+/ab?bc/
+ "abbc", 0, 0, (0, 4)
+ "abc", 0, 0, (0, 3)
+ "abbbbc", 0, -1, (4, 9)
+/ab{0,1}bc/
+ "abc", 0, 0, (0, 3)
+/ab?c/
+ "abc", 0, 0, (0, 3)
+/ab{0,1}c/
+ "abc", 0, 0, (0, 3)
+/^abc$/
+ "abc", 0, 0, (0, 3)
+ "abcc", 0, -1, (-1, -1)
+ "aabc", 0, -1, (-1, -1)
+ "abbbbc", 0, -1, (-1, -1)
+ "qqq\nabc", 0, -1, (-1, -1)
+ "abc\nzzz", 0, -1, (-1, -1)
+ "qqq\nabc\nzzz", 0, -1, (-1, -1)
+/^abc/
+ "abcc", 0, 0, (0, 3)
+ "abcdefghi", 0, 0, (0, 3)
+ "abc", 0, 0, (0, 3)
+ "xyzabc", 0, -1, (-1, -1)
+/abc$/
+ "aabc", 0, 1, (1, 4)
+ "aabcd", 0, -1, (-1, -1)
+ "abc", 0, 0, (0, 3)
+ "abc\n", 0, -1, (-1, -1)
+ "abc\ndef", 0, -1, (-1, -1)
+/^/
+ "abc", 0, 0, (0, 0)
+ "test", 0, 0, (0, 0)
+/$/
+ "abc", 0, 3, (3, 3)
+ "a\nb\n", 0, 4, (4, 4)
+ "b\na\n", 0, 4, (4, 4)
+ "b\na", 0, 3, (3, 3)
+ "xxx", 0, 3, (3, 3)
+ "xxxx", 0, 4, (4, 4)
+/a.c/
+ "abc", 0, 0, (0, 3)
+ "axc", 0, 0, (0, 3)
+/a.*c/
+ "axyzc", 0, 0, (0, 5)
+ "axyzd", 0, -1, (4, 10)
+/a[bc]d/
+ "abd", 0, 0, (0, 3)
+ "abc", 0, -1, (-1, -1)
+ "axyzd", 0, -1, (-1, -1)
+/a[b-d]e/
+ "ace", 0, 0, (0, 3)
+ "abd", 0, -1, (-1, -1)
+/a[b-d]/
+ "aac", 0, 1, (1, 3)
+/a[-b]/
+ "a-", 0, 0, (0, 2)
+/a[b-]/
+ "a-", 0, 0, (0, 2)
+/a]/
+ "a]", 0, 0, (0, 2)
+/a[^bc]d/
+ "aed", 0, 0, (0, 3)
+ "abd", 0, -1, (-1, -1)
+/a[^-b]c/
+ "adc", 0, 0, (0, 3)
+ "a-c", 0, -1, (-1, -1)
+/\\ba\\b/
+ "a-", 0, 0, (0, 1)
+ "-a", 0, 1, (1, 2)
+ "-a-", 0, 1, (1, 2)
+/\\By\\b/
+ "xy", 0, 1, (1, 2)
+/\\by\\B/
+ "yz", 0, 0, (0, 1)
+/\\By\\B/
+ "xyz", 0, 1, (1, 2)
+/a\\Sb/
+ "a-b", 0, 0, (0, 3)
+ "a\tb a b a-b", 0, 8, (8, 11)
+ "a b", 0, -1, (-1, -1)
+/\\d/
+ "1", 0, 0, (0, 1)
+ "-", 0, -1, (-1, -1)
+ "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\f\n\r\t\v~`!@#$%^&*()-+={[}]|\\:;'<,>./? \"", 0, -1, (-1, -1)
+ "ab1cd", 0, 2, (2, 3)
+ "ab2cd", 0, 2, (2, 3)
+ "ab3cd", 0, 2, (2, 3)
+ "ab4cd", 0, 2, (2, 3)
+ "ab5cd", 0, 2, (2, 3)
+ "ab6cd", 0, 2, (2, 3)
+ "ab7cd", 0, 2, (2, 3)
+ "ab8cd", 0, 2, (2, 3)
+ "ab9cd", 0, 2, (2, 3)
+ "ab0cd", 0, 2, (2, 3)
+ "\u01003", 0, 1, (1, 2)
+/\\D/
+ "-", 0, 0, (0, 1)
+ "1", 0, -1, (-1, -1)
+ "1234567890", 0, -1, (-1, -1)
+ "12_34", 0, 2, (2, 3)
+ "12a34", 0, 2, (2, 3)
+ "12b34", 0, 2, (2, 3)
+ "1X2", 0, 1, (1, 2)
+ "1\u01002", 0, 1, (1, 2)
+/[\\w]/
+ "a", 0, 0, (0, 1)
+ "-", 0, -1, (-1, -1)
+/[\\W]/
+ "-", 0, 0, (0, 1)
+ "a", 0, -1, (-1, -1)
+/a[\\S]b/
+ "a-b", 0, 0, (0, 3)
+ "a b", 0, -1, (-1, -1)
+/[\\d]/
+ "1", 0, 0, (0, 1)
+ "-", 0, -1, (-1, -1)
+/[\\D]/
+ "-", 0, 0, (0, 1)
+ "1", 0, -1, (-1, -1)
+/ab|cd/
+ "abc", 0, 0, (0, 2)
+ "abcd", 0, 0, (0, 2)
+/()ef/
+ "def", 0, 1, (1, 3, 1, 1)
+/a\\(b/
+ "a(b", 0, 0, (0, 3)
+/a\\(*b/
+ "ab", 0, 0, (0, 2)
+ "a((b", 0, 0, (0, 4)
+/a\\\\b/
+ "a\\b", 0, 0, (0, 3)
+ "a\b", 0, -1, (-1, -1)
+/((a))/
+ "abc", 0, 0, (0, 1, 0, 1, 0, 1)
+/(a)b(c)/
+ "abc", 0, 0, (0, 3, 0, 1, 2, 3)
+/a+b+c/
+ "aabbabc", 0, 4, (4, 7)
+/a{1,}b{1,}c/
+ "aabbabc", 0, 4, (4, 7)
+/a.+?c/
+ "abcabc", 0, 0, (0, 3)
+/(a+|b)*/
+ "ab", 0, 0, (0, 2, 1, 2)
+/(a+|b){0,}/
+ "ab", 0, 0, (0, 2, 1, 2)
+/(a+|b)+/
+ "ab", 0, 0, (0, 2, 1, 2)
+/(a+|b){1,}/
+ "ab", 0, 0, (0, 2, 1, 2)
+/(a+|b)?/
+ "ab", 0, 0, (0, 1, 0, 1)
+/(a+|b){0,1}/
+ "ab", 0, 0, (0, 1, 0, 1)
+/[^ab]*/
+ "cde", 0, 0, (0, 3)
+/([abc])*d/
+ "abbbcd", 0, 0, (0, 6, 4, 5)
+/([abc])*bcd/
+ "abcd", 0, 0, (0, 4, 0, 1)
+/a|b|c|d|e/
+ "e", 0, 0, (0, 1)
+/(a|b|c|d|e)f/
+ "ef", 0, 0, (0, 2, 0, 1)
+/abcd*efg/
+ "abcdefg", 0, 0, (0, 7)
+/ab*/
+ "xabyabbbz", 0, 1, (1, 3)
+ "xayabbbz", 0, 1, (1, 2)
+/(ab|cd)e/
+ "abcde", 0, 2, (2, 5, 2, 4)
+/[abhgefdc]ij/
+ "hij", 0, 0, (0, 3)
+/(abc|)ef/
+ "abcdef", 0, 4, (4, 6, 4, 4)
+/(a|b)c*d/
+ "abcd", 0, 1, (1, 4, 1, 2)
+/(ab|ab*)bc/
+ "abc", 0, 0, (0, 3, 0, 1)
+/a([bc]*)c*/
+ "abc", 0, 0, (0, 3, 1, 3)
+/a([bc]*)(c*d)/
+ "abcd", 0, 0, (0, 4, 1, 3, 3, 4)
+/a([bc]+)(c*d)/
+ "abcd", 0, 0, (0, 4, 1, 3, 3, 4)
+/a([bc]*)(c+d)/
+ "abcd", 0, 0, (0, 4, 1, 2, 2, 4)
+/a[bcd]*dcdcde/
+ "adcdcde", 0, 0, (0, 7)
+/(ab|a)b*c/
+ "abc", 0, 0, (0, 3, 0, 2)
+/((a)(b)c)(d)/
+ "abcd", 0, 0, (0, 4, 0, 3, 0, 1, 1, 2, 3, 4)
+/[a-zA-Z_][a-zA-Z0-9_]*/
+ "alpha", 0, 0, (0, 5)
+/^a(bc+|b[eh])g|.h$/
+ "abh", 0, 1, (1, 3, -1, -1)
+/(bc+d$|ef*g.|h?i(j|k))/
+ "effgz", 0, 0, (0, 5, 0, 5, -1, -1)
+ "ij", 0, 0, (0, 2, 0, 2, 1, 2)
+ "reffgz", 0, 1, (1, 6, 1, 6, -1, -1)
+ "effg", 0, -1, (3, 10, -1, -1, -1, -1)
+ "bcdd", 0, -1, (3, 10, -1, -1, -1, -1)
+ "effg", 0, -1, (3, -1, -1, -1, -1, -1)
+ "bcdd", 0, -1, (3, -1, -1, -1, -1, -1)
+/((((((((((a))))))))))/
+ "a", 0, 0, (0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1)
+ "a!", 0, 0, (0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1)
+/((((((((((a))))))))))\\10/
+ "aa", 0, 0, (0, 2, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1)
+/(((((((((a)))))))))/
+ "a", 0, 0, (0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1)
+/(.*)c(.*)/
+ "abcde", 0, 0, (0, 5, 0, 2, 3, 5)
+/abcd/
+ "abcd", 0, 0, (0, 4)
+/a(bc)d/
+ "abcd", 0, 0, (0, 4, 1, 3)
+/a[-]?c/
+ "ac", 0, 0, (0, 2)
+/(abc)\\1/
+ "abcabc", 0, 0, (0, 6, 0, 3)
+/([a-c]*)\\1/
+ "abcabc", 0, 0, (0, 6, 0, 3)
+/(a)|\\1/
+ "a", 0, 0, (0, 1, 0, 1)
+ "x", 0, 0, (0, 0, -1, -1)
+ "ab", 0, 0, (0, 1, 0, 1)
+/(([a-c])b*?\\2)*/
+ "ababbbcbc", 0, 0, (0, 5, 3, 5, 3, 4)
+/(([a-c])b*?\\2){3}/
+ "ababbbcbc", 0, 0, (0, 9, 6, 9, 6, 7)
+/ab*c/i
+ "ABC", 0, 0, (0, 3)
+/ab*bc/i
+ "ABC", 0, 0, (0, 3)
+ "ABBC", 0, 0, (0, 4)
+/ab*?bc/i
+ "ABBBBC", 0, 0, (0, 6)
+/ab{0,}?bc/i
+ "ABBBBC", 0, 0, (0, 6)
+/ab+?bc/i
+ "ABBC", 0, 0, (0, 4)
+/ab+bc/i
+ "ABBBBC", 0, 0, (0, 6)
+ "ABC", 0, -1, (0, 10)
+ "ABQ", 0, -1, (0, 10)
+ "ABC", 0, -1, (0, -1)
+ "ABQ", 0, -1, (0, -1)
+/ab{1,}?bc/i
+ "ABBBBC", 0, 0, (0, 6)
+/ab{1,3}?bc/i
+ "ABBBBC", 0, 0, (0, 6)
+/ab{3,4}?bc/i
+ "ABBBBC", 0, 0, (0, 6)
+/ab??bc/i
+ "ABBC", 0, 0, (0, 4)
+ "ABC", 0, 0, (0, 3)
+ "ABBBBC", 0, -1, (4, 10)
+/ab{0,1}?bc/i
+ "ABC", 0, 0, (0, 3)
+/ab??c/i
+ "ABC", 0, 0, (0, 3)
+/ab{0,1}?c/i
+ "ABC", 0, 0, (0, 3)
+/^abc$/i
+ "ABC", 0, 0, (0, 3)
+ "ABCC", 0, -1, (-1, -1)
+ "AABC", 0, -1, (-1, -1)
+ "ABBBBC", 0, -1, (-1, -1)
+/^abc/i
+ "ABCC", 0, 0, (0, 3)
+/abc$/i
+ "AABC", 0, 1, (1, 4)
+/^/i
+ "ABC", 0, 0, (0, 0)
+/$/i
+ "ABC", 0, 3, (3, 3)
+/a.c/i
+ "ABC", 0, 0, (0, 3)
+ "AXC", 0, 0, (0, 3)
+/a.*?c/i
+ "AXYZC", 0, 0, (0, 5)
+ "ABCABC", 0, 0, (0, 3)
+/a[bc]d/i
+ "ABD", 0, 0, (0, 3)
+ "ABC", 0, -1, (-1, -1)
+/a[b-d]e/i
+ "ACE", 0, 0, (0, 3)
+ "ABD", 0, -1, (-1, -1)
+ "ABC", 0, -1, (-1, -1)
+/a[b-d]/i
+ "AAC", 0, 1, (1, 3)
+/a[-b]/i
+ "A-", 0, 0, (0, 2)
+/a[b-]/i
+ "A-", 0, 0, (0, 2)
+/a]/i
+ "A]", 0, 0, (0, 2)
+/a[^bc]d/i
+ "AED", 0, 0, (0, 3)
+ "ABD", 0, -1, (-1, -1)
+/a[^-b]c/i
+ "ADC", 0, 0, (0, 3)
+ "A-C", 0, -1, (-1, -1)
+ "ABD", 0, -1, (-1, -1)
+/ab|cd/i
+ "ABC", 0, 0, (0, 2)
+ "ABCD", 0, 0, (0, 2)
+/()ef/i
+ "DEF", 0, 1, (1, 3, 1, 1)
+/a\\(b/i
+ "A(B", 0, 0, (0, 3)
+/a\\(*b/i
+ "AB", 0, 0, (0, 2)
+ "A((B", 0, 0, (0, 4)
+/a\\\\b/i
+ "A\\B", 0, 0, (0, 3)
+ "AB", 0, -1, (-1, -1)
+/((a))/i
+ "ABC", 0, 0, (0, 1, 0, 1, 0, 1)
+/(a)b(c)/i
+ "ABC", 0, 0, (0, 3, 0, 1, 2, 3)
+/a+b+c/i
+ "AABBABC", 0, 4, (4, 7)
+/a{1,}b{1,}c/i
+ "AABBABC", 0, 4, (4, 7)
+/a.+?c/i
+ "ABCABC", 0, 0, (0, 3)
+/a.{0,5}?c/i
+ "ABCABC", 0, 0, (0, 3)
+/(a+|b)*/i
+ "AB", 0, 0, (0, 2, 1, 2)
+/(a+|b){0,}/i
+ "AB", 0, 0, (0, 2, 1, 2)
+/(a+|b)+/i
+ "AB", 0, 0, (0, 2, 1, 2)
+/(a+|b){1,}/i
+ "AB", 0, 0, (0, 2, 1, 2)
+/(a+|b)?/i
+ "AB", 0, 0, (0, 1, 0, 1)
+/(a+|b){0,1}/i
+ "AB", 0, 0, (0, 1, 0, 1)
+/(a+|b){0,1}?/i
+ "AB", 0, 0, (0, 0, -1, -1)
+/[^ab]*/i
+ "CDE", 0, 0, (0, 3)
+/([abc])*d/i
+ "ABBBCD", 0, 0, (0, 6, 4, 5)
+/([abc])*bcd/i
+ "ABCD", 0, 0, (0, 4, 0, 1)
+/a|b|c|d|e/i
+ "E", 0, 0, (0, 1)
+/(a|b|c|d|e)f/i
+ "EF", 0, 0, (0, 2, 0, 1)
+/abcd*efg/i
+ "ABCDEFG", 0, 0, (0, 7)
+/ab*/i
+ "XABYABBBZ", 0, 1, (1, 3)
+ "XAYABBBZ", 0, 1, (1, 2)
+/(ab|cd)e/i
+ "ABCDE", 0, 2, (2, 5, 2, 4)
+/[abhgefdc]ij/i
+ "HIJ", 0, 0, (0, 3)
+/(abc|)ef/i
+ "ABCDEF", 0, 4, (4, 6, 4, 4)
+/(a|b)c*d/i
+ "ABCD", 0, 1, (1, 4, 1, 2)
+/(ab|ab*)bc/i
+ "ABC", 0, 0, (0, 3, 0, 1)
+/a([bc]*)c*/i
+ "ABC", 0, 0, (0, 3, 1, 3)
+/a([bc]*)(c*d)/i
+ "ABCD", 0, 0, (0, 4, 1, 3, 3, 4)
+/a([bc]+)(c*d)/i
+ "ABCD", 0, 0, (0, 4, 1, 3, 3, 4)
+/a([bc]*)(c+d)/i
+ "ABCD", 0, 0, (0, 4, 1, 2, 2, 4)
+/a[bcd]*dcdcde/i
+ "ADCDCDE", 0, 0, (0, 7)
+/(ab|a)b*c/i
+ "ABC", 0, 0, (0, 3, 0, 2)
+/((a)(b)c)(d)/i
+ "ABCD", 0, 0, (0, 4, 0, 3, 0, 1, 1, 2, 3, 4)
+/[a-zA-Z_][a-zA-Z0-9_]*/i
+ "ALPHA", 0, 0, (0, 5)
+/^a(bc+|b[eh])g|.h$/i
+ "ABH", 0, 1, (1, 3, -1, -1)
+/(bc+d$|ef*g.|h?i(j|k))/i
+ "EFFGZ", 0, 0, (0, 5, 0, 5, -1, -1)
+ "IJ", 0, 0, (0, 2, 0, 2, 1, 2)
+ "REFFGZ", 0, 1, (1, 6, 1, 6, -1, -1)
+ "EFFG", 0, -1, (3, 10, -1, -1, -1, -1)
+ "BCDD", 0, -1, (3, 10, -1, -1, -1, -1)
+ "ADCDCDE", 0, -1, (6, -1, -1, -1, -1, -1)
+ "EFFG", 0, -1, (3, -1, -1, -1, -1, -1)
+ "BCDD", 0, -1, (3, -1, -1, -1, -1, -1)
+/((((((((((a))))))))))/i
+ "A", 0, 0, (0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1)
+ "A!", 0, 0, (0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1)
+/((((((((((a))))))))))\\10/i
+ "AA", 0, 0, (0, 2, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1)
+/(((((((((a)))))))))/i
+ "A", 0, 0, (0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1)
+/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
+ "A", 0, 0, (0, 1, 0, 1)
+/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
+ "C", 0, 0, (0, 1, 0, 1)
+/(.*)c(.*)/i
+ "ABCDE", 0, 0, (0, 5, 0, 2, 3, 5)
+/abcd/i
+ "ABCD", 0, 0, (0, 4)
+/a(bc)d/i
+ "ABCD", 0, 0, (0, 4, 1, 3)
+/a[-]?c/i
+ "AC", 0, 0, (0, 2)
+/(abc)\\1/i
+ "ABCABC", 0, 0, (0, 6, 0, 3)
+ "abcabc", 0, 0, (0, 6, 0, 3)
+ "ABCabc", 0, 0, (0, 6, 0, 3)
+ "abcABC", 0, 0, (0, 6, 0, 3)
+/([a-c]*)\\1/i
+ "ABCABC", 0, 0, (0, 6, 0, 3)
+/a(?!b)./
+ "abad", 0, 2, (2, 4)
+/a(?=d)./
+ "abad", 0, 2, (2, 4)
+/a(?=c|d)./
+ "abad", 0, 2, (2, 4)
+/a(?:b|c|d)(.)/
+ "ace", 0, 0, (0, 3, 2, 3)
+/a(?:b|c|d)*(.)/
+ "ace", 0, 0, (0, 3, 2, 3)
+/a(?:b|c|d)+?(.)/
+ "ace", 0, 0, (0, 3, 2, 3)
+ "acdbcdbe", 0, 0, (0, 3, 2, 3)
+/a(?:b|c|d)+(.)/
+ "acdbcdbe", 0, 0, (0, 8, 7, 8)
+/a(?:b|c|d){2}(.)/
+ "acdbcdbe", 0, 0, (0, 4, 3, 4)
+/a(?:b|c|d){4,5}(.)/
+ "acdbcdbe", 0, 0, (0, 7, 6, 7)
+/a(?:b|c|d){4,5}?(.)/
+ "acdbcdbe", 0, 0, (0, 6, 5, 6)
+/((foo)|(bar))*/
+ "foobar", 0, 0, (0, 6, 3, 6, -1, -1, 3, 6)
+/a(?:b|c|d){6,7}(.)/
+ "acdbcdbe", 0, 0, (0, 8, 7, 8)
+/a(?:b|c|d){6,7}?(.)/
+ "acdbcdbe", 0, 0, (0, 8, 7, 8)
+/a(?:b|c|d){5,6}(.)/
+ "acdbcdbe", 0, 0, (0, 8, 7, 8)
+/a(?:b|c|d){5,6}?(.)/
+ "acdbcdbe", 0, 0, (0, 7, 6, 7)
+/a(?:b|c|d){5,7}(.)/
+ "acdbcdbe", 0, 0, (0, 8, 7, 8)
+/a(?:b|c|d){5,7}?(.)/
+ "acdbcdbe", 0, 0, (0, 7, 6, 7)
+/a(?:b|(c|e){1,2}?|d)+?(.)/
+ "ace", 0, 0, (0, 3, 1, 2, 2, 3)
+/^(.+)?B/
+ "AB", 0, 0, (0, 2, 0, 1)
+/^([^a-z])|(\\^)$/
+ ".", 0, 0, (0, 1, 0, 1, -1, -1)
+/^[<>]&/
+ "<&OUT", 0, 0, (0, 2)
+/((a{4})+)/
+ "aaaaaaaaa", 0, 0, (0, 8, 0, 8, 4, 8)
+/(((aa){2})+)/
+ "aaaaaaaaaa", 0, 0, (0, 8, 0, 8, 4, 8, 6, 8)
+/(((a{2}){2})+)/
+ "aaaaaaaaaa", 0, 0, (0, 8, 0, 8, 4, 8, 6, 8)
+/(?:(f)(o)(o)|(b)(a)(r))*/
+ "foobar", 0, 0, (0, 6, -1, -1, -1, -1, -1, -1, 3, 4, 4, 5, 5, 6)
+/(?:..)*a/
+ "aba", 0, 0, (0, 3)
+/(?:..)*?a/
+ "aba", 0, 0, (0, 1)
+/^(?:b|a(?=(.)))*\\1/
+ "abc", 0, 0, (0, 2, -1, -1)
+/^(){3,5}/
+ "abc", 0, 0, (0, 0, 0, 0)
+/^(a+)*ax/
+ "aax", 0, 0, (0, 3, 0, 1)
+/^((a|b)+)*ax/
+ "aax", 0, 0, (0, 3, 0, 1, 0, 1)
+/^((a|bc)+)*ax/
+ "aax", 0, 0, (0, 3, 0, 1, 0, 1)
+/(a|x)*ab/
+ "cab", 0, 1, (1, 3, -1, -1)
+/(a)*ab/
+ "cab", 0, 1, (1, 3, -1, -1)
+/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
+ "cabbbb", 0, 0, (0, 6)
+/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
+ "caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", 0, 0, (0, 41)
+/(ab)\\d\\1/i
+ "Ab4ab", 0, 0, (0, 5, 0, 2)
+ "ab4Ab", 0, 0, (0, 5, 0, 2)
+/foo\\w*\\d{4}baz/
+ "foobar1234baz", 0, 0, (0, 13)
+/x(~~)*(?:(?:F)?)?/
+ "x~~", 0, 0, (0, 3, 1, 3)
+/(?=(a+?))(\\1ab)/
+ "aaab", 0, 1, (1, 4, 1, 2, 1, 4)
+/(\\w+:)+/
+ "one:", 0, 0, (0, 4, 0, 4)
+/([\\w:]+::)?(\\w+)$/
+ "abcd", 0, 0, (0, 4, -1, -1, 0, 4)
+ "xy:z:::abcd", 0, 0, (0, 11, 0, 7, 7, 11)
+ "abcd:", 0, -1, (6, 11, -1, -1, -1, -1)
+ "abcd:", 0, -1, (6, -1, -1, -1, -1, -1)
+/^[^bcd]*(c+)/
+ "aexycd", 0, 0, (0, 5, 4, 5)
+/(a*)b+/
+ "caab", 0, 1, (1, 4, 1, 3)
+/([[:]+)/
+ "a:[b]:", 0, 1, (1, 3, 1, 3)
+/([[=]+)/
+ "a=[b]=", 0, 1, (1, 3, 1, 3)
+/([[.]+)/
+ "a.[b].", 0, 1, (1, 3, 1, 3)
+/$/m
+ "a\nb\n", 0, 1, (1, 1)
+ "b\na\n", 0, 1, (1, 1)
+ "b\na", 0, 1, (1, 1)
+/a$/
+ "b\na", 0, 2, (2, 3)
+ "a\nb\n", 0, -1, (-1, -1)
+ "aaab", 0, -1, (-1, -1)
+/a$/m
+ "a\nb\n", 0, 0, (0, 1)
+ "b\na\n", 0, 2, (2, 3)
+ "b\na", 0, 2, (2, 3)
+/aa$/
+ "b\naa", 0, 2, (2, 4)
+ "aa\nb\n", 0, -1, (-1, -1)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/aa$/m
+ "aa\nb\n", 0, 0, (0, 2)
+ "b\naa\n", 0, 2, (2, 4)
+ "b\naa", 0, 2, (2, 4)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/ab$/
+ "b\nab", 0, 2, (2, 4)
+ "ab\nb\n", 0, -1, (-1, -1)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/ab$/m
+ "ab\nb\n", 0, 0, (0, 2)
+ "b\nab\n", 0, 2, (2, 4)
+ "b\nab", 0, 2, (2, 4)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/abb$/
+ "b\nabb", 0, 2, (2, 5)
+ "abb\nb\n", 0, -1, (-1, -1)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/abb$/m
+ "abb\nb\n", 0, 0, (0, 3)
+ "b\nabb\n", 0, 2, (2, 5)
+ "b\nabb", 0, 2, (2, 5)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/(^|x)(c)/
+ "ca", 0, 0, (0, 1, 0, 0, 0, 1)
+/foo.bart/
+ "foo.bart", 0, 0, (0, 8)
+/^d[x][x][x]/m
+ "abcd\ndxxx", 0, 5, (5, 9)
+/tt+$/
+ "xxxtt", 0, 3, (3, 5)
+/(\\d+\\.\\d+)/
+ "3.1415926", 0, 0, (0, 9, 0, 9)
+/\\.c(pp|xx|c)?$/i
+ "IO.c", 0, 2, (2, 4, -1, -1)
+ "Changes", 0, -1, (6, 11, -1, -1)
+/(\\.c(pp|xx|c)?$)/i
+ "IO.c", 0, 2, (2, 4, 2, 4, -1, -1)
+/(^|a)b/
+ "ab", 0, 0, (0, 2, 0, 1)
+/^([ab]*?)(b)?(c)$/
+ "abac", 0, 0, (0, 4, 0, 3, -1, -1, 3, 4)
+/^(?:.,){2}c/i
+ "a,b,c", 0, 0, (0, 5)
+/^(.,){2}c/i
+ "a,b,c", 0, 0, (0, 5, 2, 4)
+/^(?:[^,]*,){2}c/
+ "a,b,c", 0, 0, (0, 5)
+/^([^,]*,){2}c/
+ "a,b,c", 0, 0, (0, 5, 2, 4)
+/^([^,]*,){3}d/
+ "aaa,b,c,d", 0, 0, (0, 9, 6, 8)
+/^([^,]*,){3,}d/
+ "aaa,b,c,d", 0, 0, (0, 9, 6, 8)
+/^([^,]*,){0,3}d/
+ "aaa,b,c,d", 0, 0, (0, 9, 6, 8)
+/^([^,]{1,3},){3}d/i
+ "aaa,b,c,d", 0, 0, (0, 9, 6, 8)
+/^([^,]{1,3},){3,}d/
+ "aaa,b,c,d", 0, 0, (0, 9, 6, 8)
+/^([^,]{1,3},){0,3}d/
+ "aaa,b,c,d", 0, 0, (0, 9, 6, 8)
+/^([^,]{1,},){3}d/
+ "aaa,b,c,d", 0, 0, (0, 9, 6, 8)
+/^([^,]{1,},){3,}d/
+ "aaa,b,c,d", 0, 0, (0, 9, 6, 8)
+/^([^,]{1,},){0,3}d/
+ "aaa,b,c,d", 0, 0, (0, 9, 6, 8)
+/^([^,]{0,3},){3}d/i
+ "aaa,b,c,d", 0, 0, (0, 9, 6, 8)
+/^([^,]{0,3},){3,}d/
+ "aaa,b,c,d", 0, 0, (0, 9, 6, 8)
+/^([^,]{0,3},){0,3}d/
+ "aaa,b,c,d", 0, 0, (0, 9, 6, 8)
+/^(a(b)?)+$/
+ "aba", 0, 0, (0, 3, 2, 3, -1, -1)
+/^(aa(bb)?)+$/
+ "aabbaa", 0, 0, (0, 6, 4, 6, -1, -1)
+/^.{9}abc.*\\n/m
+ "123\nabcabcabcabc\n", 0, 4, (4, 17)
+/^(a)?a$/
+ "a", 0, 0, (0, 1, -1, -1)
+/^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$/
+ "aaaaaa", 0, 0, (0, 6, 0, 1, 1, 3, 3, 4, 4, 6)
+ "a", 0, -1, (-1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
+ "aa", 0, -1, (-1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
+ "aaa", 0, -1, (-1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
+ "aaaa", 0, 0, (0, 4, 0, 1, 1, 2, 2, 3, 3, 4)
+ "aaaaa", 0, 0, (0, 5, 0, 1, 1, 3, 3, 4, 4, 5)
+ "aaaaaaa", 0, 0, (0, 7, 0, 1, 1, 3, 3, 6, 6, 7)
+ "aaaaaaaa", 0, -1, (-1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
+ "aaaaaaaaa", 0, -1, (-1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
+ "aaaaaaaaaa", 0, 0, (0, 10, 0, 1, 1, 3, 3, 6, 6, 10)
+ "aaaaaaaaaaa", 0, -1, (-1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
+ "aaaaaaaaaaaa", 0, -1, (-1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
+ "aaaaaaaaaaaaa", 0, -1, (-1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
+ "aaaaaaaaaaaaaa", 0, -1, (-1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
+ "aaaaaaaaaaaaaaa", 0, -1, (-1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
+ "aaaaaaaaaaaaaaaa", 0, -1, (-1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
+/^(0+)?(?:x(1))?/
+ "x1", 0, 0, (0, 2, -1, -1, 1, 2)
+/^([0-9a-fA-F]+)(?:x([0-9a-fA-F]+)?)(?:x([0-9a-fA-F]+))?/
+ "012cxx0190", 0, 0, (0, 10, 0, 4, -1, -1, 6, 10)
+/^(b+?|a){1,2}c/
+ "bbbac", 0, 0, (0, 5, 3, 4)
+ "bbbbac", 0, 0, (0, 6, 4, 5)
+/((?:aaaa|bbbb)cccc)?/
+ "aaaacccc", 0, 0, (0, 8, 0, 8)
+ "bbbbcccc", 0, 0, (0, 8, 0, 8)
+/ab{4,5}bc/
+ "abbbbc", 0, -1, (0, 9)
+ "abq", 0, -1, (0, -1)
+ "abbbbc", 0, -1, (0, -1)
+/a[^]b]c/
+ "a]c", 0, -1, (-1, -1)
+/\\by\\b/
+ "xy", 0, -1, (-1, -1)
+ "yz", 0, -1, (-1, -1)
+ "xyz", 0, -1, (-1, -1)
+/\\Ba\\B/
+ "a-", 0, -1, (-1, -1)
+ "-a", 0, -1, (-1, -1)
+ "-a-", 0, -1, (-1, -1)
+/a\\sb/
+ "a-b", 0, -1, (-1, -1)
+ "a b", 0, 0, (0, 3)
+/a[\\s]b/
+ "a-b", 0, -1, (-1, -1)
+ "a b", 0, 0, (0, 3)
+/$b/
+ "b", 0, -1, (-1, -1)
+/^(ab|cd)e/
+ "abcde", 0, -1, (0, 10, -1, -1)
+/a[bcd]+dcdcde/
+ "adcdcde", 0, -1, (0, 10)
+ "abcde", 0, -1, (0, -1)
+ "adcdcde", 0, -1, (0, -1)
+/[k]/
+ "ab", 0, -1, (-1, -1)
+/((\\3|b)\\2(a)x)+/
+ "aaxabxbaxbbx", 0, 1, (1, 3, 1, 3, 1, 1, 1, 2)
+ "aaaxabaxbaaxbbax", 0, 2, (2, 4, 2, 4, 2, 2, 2, 3)
+/ab{1,}bc/i
+ "ABQ", 0, -1, (0, 10)
+/ab{4,5}?bc/i
+ "ABBBBC", 0, -1, (0, 10)
+ "ABQ", 0, -1, (0, -1)
+ "ABBBBC", 0, -1, (0, -1)
+/a.*c/i
+ "AXYZD", 0, -1, (4, 10)
+ "AABC", 0, 0, (0, 4)
+ "AXYZD", 0, -1, (4, -1)
+/a[^]b]c/i
+ "A]C", 0, -1, (-1, -1)
+/$b/i
+ "B", 0, -1, (-1, -1)
+ "A]C", 0, -1, (-1, -1)
+/^(ab|cd)e/i
+ "ABCDE", 0, -1, (0, 10, -1, -1)
+ "ABCDE", 0, -1, (0, -1, -1, -1)
+/a[bcd]+dcdcde/i
+ "ADCDCDE", 0, -1, (0, 10)
+/[k]/i
+ "AB", 0, -1, (-1, -1)
+/^(a\\1?){4}$/
+ "aaaaaaaaa", 0, -1, (-1, -1, -1, -1)
+ "aaaaaaaaaaa", 0, -1, (-1, -1, -1, -1)
+ "a", 0, -1, (-1, -1, -1, -1)
+ "aa", 0, -1, (-1, -1, -1, -1)
+ "aaa", 0, -1, (-1, -1, -1, -1)
+ "aaaa", 0, 0, (0, 4, 3, 4)
+ "aaaaa", 0, -1, (-1, -1, -1, -1)
+ "aaaaaaa", 0, -1, (-1, -1, -1, -1)
+ "aaaaaaaa", 0, -1, (-1, -1, -1, -1)
+ "aaaaaaaaaa", 0, -1, (-1, -1, -1, -1)
+ "aaaaaaaaaaaa", 0, -1, (-1, -1, -1, -1)
+ "aaaaaaaaaaaaa", 0, -1, (-1, -1, -1, -1)
+ "aaaaaaaaaaaaaa", 0, -1, (-1, -1, -1, -1)
+ "aaaaaaaaaaaaaaa", 0, -1, (-1, -1, -1, -1)
+ "aaaaaaaaaaaaaaaa", 0, -1, (-1, -1, -1, -1)
+ "AB", 0, -1, (-1, -1, -1, -1)
+/^(?:a?b?)*$/
+ "a--", 0, -1, (-1, -1)
+ "", 0, 0, (0, 0)
+ "a", 0, 0, (0, 1)
+ "ab", 0, 0, (0, 2)
+ "aaa", 0, 0, (0, 3)
+ "dbcb", 0, -1, (-1, -1)
+ "aa--", 0, -1, (-1, -1)
+/^b/
+ "a\nb\nc\n", 0, -1, (-1, -1)
+/()^b/
+ "a\nb\nc\n", 0, -1, (7, 10, -1, -1)
+ "a\nb\nc\n", 0, -1, (7, -1, -1, -1)
+/^(?=(a+?))\\1ab/
+ "aaab", 0, -1, (-1, -1, 0, 1)
+/(>a+)ab/
+ "aaab", 0, -1, (1, 11, -1, -1)
+/a\\Z/
+ "a\nb\n", 0, -1, (-1, -1)
+/a\\z/
+ "a\nb\n", 0, -1, (-1, -1)
+ "b\na\n", 0, -1, (-1, -1)
+ "az", 0, 0, (0, 2)
+/a\\z/m
+ "a\nb\n", 0, -1, (-1, -1)
+ "b\na\n", 0, -1, (-1, -1)
+/aa\\Z/
+ "aa\nb\n", 0, -1, (-1, -1)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/aa\\z/
+ "aa\nb\n", 0, -1, (-1, -1)
+ "b\naa\n", 0, -1, (-1, -1)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/aa\\z/m
+ "aa\nb\n", 0, -1, (-1, -1)
+ "b\naa\n", 0, -1, (-1, -1)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/aa\\Z/m
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/ab\\Z/
+ "ab\nb\n", 0, -1, (-1, -1)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/ab\\z/
+ "ab\nb\n", 0, -1, (-1, -1)
+ "b\nab\n", 0, -1, (-1, -1)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/ab\\z/m
+ "ab\nb\n", 0, -1, (-1, -1)
+ "b\nab\n", 0, -1, (-1, -1)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/ab\\Z/m
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/abb\\Z/
+ "abb\nb\n", 0, -1, (-1, -1)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/abb\\z/
+ "abb\nb\n", 0, -1, (-1, -1)
+ "b\nabb\n", 0, -1, (-1, -1)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/abb\\z/m
+ "abb\nb\n", 0, -1, (-1, -1)
+ "b\nabb\n", 0, -1, (-1, -1)
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)
+/abb\\Z/m
+ "ac\nb\n", 0, -1, (-1, -1)
+ "b\nac\n", 0, -1, (-1, -1)
+ "b\nac", 0, -1, (-1, -1)
+ "ca\nb\n", 0, -1, (-1, -1)
+ "b\nca\n", 0, -1, (-1, -1)
+ "b\nca", 0, -1, (-1, -1)