1package regexp2 2 3import ( 4 "fmt" 5 "testing" 6) 7 8// Permission is hereby granted, free of charge, to any person obtaining 9// a copy of this software and associated documentation files (the 10// "Software"), to deal in the Software without restriction, including 11// without limitation the rights to use, copy, modify, merge, publish, 12// distribute, sublicense, and/or sell copies of the Software, and to 13// permit persons to whom the Software is furnished to do so, subject to 14// the following conditions: 15// 16// The above copyright notice and this permission notice shall be 17// included in all copies or substantial portions of the Software. 18// 19// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 23// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 24// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 25// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 27// https://github.com/mono/mono/blob/master/mcs/class/System/Test/System.Text.RegularExpressions/PerlTrials.cs 28// ported from perl-5.6.1/t/op/re_tests 29 30func TestMono_Basics(t *testing.T) { 31 runRegexTrial(t, `abc`, 0, "abc", "Pass. Group[0]=(0,3)") 32 runRegexTrial(t, `abc`, 0, "xbc", "Fail.") 33 runRegexTrial(t, `abc`, 0, "axc", "Fail.") 34 runRegexTrial(t, `abc`, 0, "abx", "Fail.") 35 runRegexTrial(t, `abc`, 0, "xabcy", "Pass. Group[0]=(1,3)") 36 runRegexTrial(t, `abc`, 0, "ababc", "Pass. Group[0]=(2,3)") 37 runRegexTrial(t, `ab*c`, 0, "abc", "Pass. Group[0]=(0,3)") 38 runRegexTrial(t, `ab*bc`, 0, "abc", "Pass. Group[0]=(0,3)") 39 runRegexTrial(t, `ab*bc`, 0, "abbc", "Pass. Group[0]=(0,4)") 40 runRegexTrial(t, `ab*bc`, 0, "abbbbc", "Pass. Group[0]=(0,6)") 41 runRegexTrial(t, `.{1}`, 0, "abbbbc", "Pass. Group[0]=(0,1)") 42 runRegexTrial(t, `.{3,4}`, 0, "abbbbc", "Pass. Group[0]=(0,4)") 43 runRegexTrial(t, `ab{0,}bc`, 0, "abbbbc", "Pass. Group[0]=(0,6)") 44 runRegexTrial(t, `ab+bc`, 0, "abbc", "Pass. Group[0]=(0,4)") 45 runRegexTrial(t, `ab+bc`, 0, "abc", "Fail.") 46 runRegexTrial(t, `ab+bc`, 0, "abq", "Fail.") 47 runRegexTrial(t, `ab{1,}bc`, 0, "abq", "Fail.") 48 runRegexTrial(t, `ab+bc`, 0, "abbbbc", "Pass. Group[0]=(0,6)") 49 runRegexTrial(t, `ab{1,}bc`, 0, "abbbbc", "Pass. Group[0]=(0,6)") 50 runRegexTrial(t, `ab{1,3}bc`, 0, "abbbbc", "Pass. Group[0]=(0,6)") 51 runRegexTrial(t, `ab{3,4}bc`, 0, "abbbbc", "Pass. Group[0]=(0,6)") 52 runRegexTrial(t, `ab{4,5}bc`, 0, "abbbbc", "Fail.") 53 runRegexTrial(t, `ab?bc`, 0, "abbc", "Pass. Group[0]=(0,4)") 54 runRegexTrial(t, `ab?bc`, 0, "abc", "Pass. Group[0]=(0,3)") 55 runRegexTrial(t, `ab{0,1}bc`, 0, "abc", "Pass. Group[0]=(0,3)") 56 runRegexTrial(t, `ab?bc`, 0, "abbbbc", "Fail.") 57 runRegexTrial(t, `ab?c`, 0, "abc", "Pass. Group[0]=(0,3)") 58 runRegexTrial(t, `ab{0,1}c`, 0, "abc", "Pass. Group[0]=(0,3)") 59 runRegexTrial(t, `^abc$`, 0, "abc", "Pass. Group[0]=(0,3)") 60 runRegexTrial(t, `^abc$`, 0, "abcc", "Fail.") 61 runRegexTrial(t, `^abc`, 0, "abcc", "Pass. Group[0]=(0,3)") 62 runRegexTrial(t, `^abc$`, 0, "aabc", "Fail.") 63 runRegexTrial(t, `abc$`, 0, "aabc", "Pass. Group[0]=(1,3)") 64 runRegexTrial(t, `abc$`, 0, "aabcd", "Fail.") 65 runRegexTrial(t, `^`, 0, "abc", "Pass. Group[0]=(0,0)") 66 runRegexTrial(t, `$`, 0, "abc", "Pass. Group[0]=(3,0)") 67 runRegexTrial(t, `a.c`, 0, "abc", "Pass. Group[0]=(0,3)") 68 runRegexTrial(t, `a.c`, 0, "axc", "Pass. Group[0]=(0,3)") 69 runRegexTrial(t, `a.*c`, 0, "axyzc", "Pass. Group[0]=(0,5)") 70 runRegexTrial(t, `a.*c`, 0, "axyzd", "Fail.") 71 runRegexTrial(t, `a[bc]d`, 0, "abc", "Fail.") 72 runRegexTrial(t, `a[bc]d`, 0, "abd", "Pass. Group[0]=(0,3)") 73 runRegexTrial(t, `a[b-d]e`, 0, "abd", "Fail.") 74 runRegexTrial(t, `a[b-d]e`, 0, "ace", "Pass. Group[0]=(0,3)") 75 runRegexTrial(t, `a[b-d]`, 0, "aac", "Pass. Group[0]=(1,2)") 76 runRegexTrial(t, `a[-b]`, 0, "a-", "Pass. Group[0]=(0,2)") 77 runRegexTrial(t, `a[b-]`, 0, "a-", "Pass. Group[0]=(0,2)") 78 runRegexTrial(t, `a[b-a]`, 0, "-", "Error.") 79 runRegexTrial(t, `a[]b`, 0, "-", "Error.") 80 runRegexTrial(t, `a[`, 0, "-", "Error.") 81 runRegexTrial(t, `a]`, 0, "a]", "Pass. Group[0]=(0,2)") 82 runRegexTrial(t, `a[]]b`, 0, "a]b", "Pass. Group[0]=(0,3)") 83 runRegexTrial(t, `a[^bc]d`, 0, "aed", "Pass. Group[0]=(0,3)") 84 runRegexTrial(t, `a[^bc]d`, 0, "abd", "Fail.") 85 runRegexTrial(t, `a[^-b]c`, 0, "adc", "Pass. Group[0]=(0,3)") 86 runRegexTrial(t, `a[^-b]c`, 0, "a-c", "Fail.") 87 runRegexTrial(t, `a[^]b]c`, 0, "a]c", "Fail.") 88 runRegexTrial(t, `a[^]b]c`, 0, "adc", "Pass. Group[0]=(0,3)") 89 runRegexTrial(t, `\ba\b`, 0, "a-", "Pass. Group[0]=(0,1)") 90 runRegexTrial(t, `\ba\b`, 0, "-a", "Pass. Group[0]=(1,1)") 91 runRegexTrial(t, `\ba\b`, 0, "-a-", "Pass. Group[0]=(1,1)") 92 runRegexTrial(t, `\by\b`, 0, "xy", "Fail.") 93 runRegexTrial(t, `\by\b`, 0, "yz", "Fail.") 94 runRegexTrial(t, `\by\b`, 0, "xyz", "Fail.") 95 runRegexTrial(t, `\Ba\B`, 0, "a-", "Fail.") 96 runRegexTrial(t, `\Ba\B`, 0, "-a", "Fail.") 97 runRegexTrial(t, `\Ba\B`, 0, "-a-", "Fail.") 98 runRegexTrial(t, `\By\b`, 0, "xy", "Pass. Group[0]=(1,1)") 99 runRegexTrial(t, `\by\B`, 0, "yz", "Pass. Group[0]=(0,1)") 100 runRegexTrial(t, `\By\B`, 0, "xyz", "Pass. Group[0]=(1,1)") 101 runRegexTrial(t, `\w`, 0, "a", "Pass. Group[0]=(0,1)") 102 runRegexTrial(t, `\w`, 0, "-", "Fail.") 103 runRegexTrial(t, `\W`, 0, "a", "Fail.") 104 runRegexTrial(t, `\W`, 0, "-", "Pass. Group[0]=(0,1)") 105 runRegexTrial(t, `a\sb`, 0, "a b", "Pass. Group[0]=(0,3)") 106 runRegexTrial(t, `a\sb`, 0, "a-b", "Fail.") 107 runRegexTrial(t, `a\Sb`, 0, "a b", "Fail.") 108 runRegexTrial(t, `a\Sb`, 0, "a-b", "Pass. Group[0]=(0,3)") 109 runRegexTrial(t, `\d`, 0, "1", "Pass. Group[0]=(0,1)") 110 runRegexTrial(t, `\d`, 0, "-", "Fail.") 111 runRegexTrial(t, `\D`, 0, "1", "Fail.") 112 runRegexTrial(t, `\D`, 0, "-", "Pass. Group[0]=(0,1)") 113 runRegexTrial(t, `[\w]`, 0, "a", "Pass. Group[0]=(0,1)") 114 runRegexTrial(t, `[\w]`, 0, "-", "Fail.") 115 runRegexTrial(t, `[\W]`, 0, "a", "Fail.") 116 runRegexTrial(t, `[\W]`, 0, "-", "Pass. Group[0]=(0,1)") 117 runRegexTrial(t, `a[\s]b`, 0, "a b", "Pass. Group[0]=(0,3)") 118 runRegexTrial(t, `a[\s]b`, 0, "a-b", "Fail.") 119 runRegexTrial(t, `a[\S]b`, 0, "a b", "Fail.") 120 runRegexTrial(t, `a[\S]b`, 0, "a-b", "Pass. Group[0]=(0,3)") 121 runRegexTrial(t, `[\d]`, 0, "1", "Pass. Group[0]=(0,1)") 122 runRegexTrial(t, `[\d]`, 0, "-", "Fail.") 123 runRegexTrial(t, `[\D]`, 0, "1", "Fail.") 124 runRegexTrial(t, `[\D]`, 0, "-", "Pass. Group[0]=(0,1)") 125 runRegexTrial(t, `ab|cd`, 0, "abc", "Pass. Group[0]=(0,2)") 126 runRegexTrial(t, `ab|cd`, 0, "abcd", "Pass. Group[0]=(0,2)") 127 runRegexTrial(t, `()ef`, 0, "def", "Pass. Group[0]=(1,2) Group[1]=(1,0)") 128 runRegexTrial(t, `*a`, 0, "-", "Error.") 129 runRegexTrial(t, `(*)b`, 0, "-", "Error.") 130 runRegexTrial(t, `$b`, 0, "b", "Fail.") 131 runRegexTrial(t, `a\`, 0, "-", "Error.") 132 runRegexTrial(t, `a\(b`, 0, "a(b", "Pass. Group[0]=(0,3)") 133 runRegexTrial(t, `a\(*b`, 0, "ab", "Pass. Group[0]=(0,2)") 134 runRegexTrial(t, `a\(*b`, 0, "a((b", "Pass. Group[0]=(0,4)") 135 runRegexTrial(t, `a\\b`, 0, "a\\b", "Pass. Group[0]=(0,3)") 136 runRegexTrial(t, `abc)`, 0, "-", "Error.") 137 runRegexTrial(t, `(abc`, 0, "-", "Error.") 138 runRegexTrial(t, `((a))`, 0, "abc", "Pass. Group[0]=(0,1) Group[1]=(0,1) Group[2]=(0,1)") 139 runRegexTrial(t, `(a)b(c)`, 0, "abc", "Pass. Group[0]=(0,3) Group[1]=(0,1) Group[2]=(2,1)") 140 runRegexTrial(t, `a+b+c`, 0, "aabbabc", "Pass. Group[0]=(4,3)") 141 runRegexTrial(t, `a{1,}b{1,}c`, 0, "aabbabc", "Pass. Group[0]=(4,3)") 142 runRegexTrial(t, `a**`, 0, "-", "Error.") 143 runRegexTrial(t, `a.+?c`, 0, "abcabc", "Pass. Group[0]=(0,3)") 144 runRegexTrial(t, `(a+|b)*`, 0, "ab", "Pass. Group[0]=(0,2) Group[1]=(0,1)(1,1)") 145 runRegexTrial(t, `(a+|b){0,}`, 0, "ab", "Pass. Group[0]=(0,2) Group[1]=(0,1)(1,1)") 146 runRegexTrial(t, `(a+|b)+`, 0, "ab", "Pass. Group[0]=(0,2) Group[1]=(0,1)(1,1)") 147 runRegexTrial(t, `(a+|b){1,}`, 0, "ab", "Pass. Group[0]=(0,2) Group[1]=(0,1)(1,1)") 148 runRegexTrial(t, `(a+|b)?`, 0, "ab", "Pass. Group[0]=(0,1) Group[1]=(0,1)") 149 runRegexTrial(t, `(a+|b){0,1}`, 0, "ab", "Pass. Group[0]=(0,1) Group[1]=(0,1)") 150 runRegexTrial(t, `)(`, 0, "-", "Error.") 151 runRegexTrial(t, `[^ab]*`, 0, "cde", "Pass. Group[0]=(0,3)") 152 runRegexTrial(t, `abc`, 0, "", "Fail.") 153 runRegexTrial(t, `a*`, 0, "", "Pass. Group[0]=(0,0)") 154 runRegexTrial(t, `([abc])*d`, 0, "abbbcd", "Pass. Group[0]=(0,6) Group[1]=(0,1)(1,1)(2,1)(3,1)(4,1)") 155 runRegexTrial(t, `([abc])*bcd`, 0, "abcd", "Pass. Group[0]=(0,4) Group[1]=(0,1)") 156 runRegexTrial(t, `a|b|c|d|e`, 0, "e", "Pass. Group[0]=(0,1)") 157 runRegexTrial(t, `(a|b|c|d|e)f`, 0, "ef", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 158 runRegexTrial(t, `abcd*efg`, 0, "abcdefg", "Pass. Group[0]=(0,7)") 159 runRegexTrial(t, `ab*`, 0, "xabyabbbz", "Pass. Group[0]=(1,2)") 160 runRegexTrial(t, `ab*`, 0, "xayabbbz", "Pass. Group[0]=(1,1)") 161 runRegexTrial(t, `(ab|cd)e`, 0, "abcde", "Pass. Group[0]=(2,3) Group[1]=(2,2)") 162 runRegexTrial(t, `[abhgefdc]ij`, 0, "hij", "Pass. Group[0]=(0,3)") 163 runRegexTrial(t, `^(ab|cd)e`, 0, "abcde", "Fail.") 164 runRegexTrial(t, `(abc|)ef`, 0, "abcdef", "Pass. Group[0]=(4,2) Group[1]=(4,0)") 165 runRegexTrial(t, `(a|b)c*d`, 0, "abcd", "Pass. Group[0]=(1,3) Group[1]=(1,1)") 166 runRegexTrial(t, `(ab|ab*)bc`, 0, "abc", "Pass. Group[0]=(0,3) Group[1]=(0,1)") 167 runRegexTrial(t, `a([bc]*)c*`, 0, "abc", "Pass. Group[0]=(0,3) Group[1]=(1,2)") 168 runRegexTrial(t, `a([bc]*)(c*d)`, 0, "abcd", "Pass. Group[0]=(0,4) Group[1]=(1,2) Group[2]=(3,1)") 169 runRegexTrial(t, `a([bc]+)(c*d)`, 0, "abcd", "Pass. Group[0]=(0,4) Group[1]=(1,2) Group[2]=(3,1)") 170 runRegexTrial(t, `a([bc]*)(c+d)`, 0, "abcd", "Pass. Group[0]=(0,4) Group[1]=(1,1) Group[2]=(2,2)") 171 runRegexTrial(t, `a[bcd]*dcdcde`, 0, "adcdcde", "Pass. Group[0]=(0,7)") 172 runRegexTrial(t, `a[bcd]+dcdcde`, 0, "adcdcde", "Fail.") 173 runRegexTrial(t, `(ab|a)b*c`, 0, "abc", "Pass. Group[0]=(0,3) Group[1]=(0,2)") 174 runRegexTrial(t, `((a)(b)c)(d)`, 0, "abcd", "Pass. Group[0]=(0,4) Group[1]=(0,3) Group[2]=(0,1) Group[3]=(1,1) Group[4]=(3,1)") 175 runRegexTrial(t, `[a-zA-Z_][a-zA-Z0-9_]*`, 0, "alpha", "Pass. Group[0]=(0,5)") 176 runRegexTrial(t, `^a(bc+|b[eh])g|.h$`, 0, "abh", "Pass. Group[0]=(1,2) Group[1]=") 177 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, 0, "effgz", "Pass. Group[0]=(0,5) Group[1]=(0,5) Group[2]=") 178 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, 0, "ij", "Pass. Group[0]=(0,2) Group[1]=(0,2) Group[2]=(1,1)") 179 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, 0, "effg", "Fail.") 180 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, 0, "bcdd", "Fail.") 181 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, 0, "reffgz", "Pass. Group[0]=(1,5) Group[1]=(1,5) Group[2]=") 182 runRegexTrial(t, `((((((((((a))))))))))`, 0, "a", "Pass. Group[0]=(0,1) Group[1]=(0,1) Group[2]=(0,1) Group[3]=(0,1) Group[4]=(0,1) Group[5]=(0,1) Group[6]=(0,1) Group[7]=(0,1) Group[8]=(0,1) Group[9]=(0,1) Group[10]=(0,1)") 183 runRegexTrial(t, `((((((((((a))))))))))\10`, 0, "aa", "Pass. Group[0]=(0,2) Group[1]=(0,1) Group[2]=(0,1) Group[3]=(0,1) Group[4]=(0,1) Group[5]=(0,1) Group[6]=(0,1) Group[7]=(0,1) Group[8]=(0,1) Group[9]=(0,1) Group[10]=(0,1)") 184 runRegexTrial(t, `((((((((((a))))))))))!`, 0, "aa", "Fail.") 185 runRegexTrial(t, `((((((((((a))))))))))!`, 0, "a!", "Pass. Group[0]=(0,2) Group[1]=(0,1) Group[2]=(0,1) Group[3]=(0,1) Group[4]=(0,1) Group[5]=(0,1) Group[6]=(0,1) Group[7]=(0,1) Group[8]=(0,1) Group[9]=(0,1) Group[10]=(0,1)") 186 runRegexTrial(t, `(((((((((a)))))))))`, 0, "a", "Pass. Group[0]=(0,1) Group[1]=(0,1) Group[2]=(0,1) Group[3]=(0,1) Group[4]=(0,1) Group[5]=(0,1) Group[6]=(0,1) Group[7]=(0,1) Group[8]=(0,1) Group[9]=(0,1)") 187 runRegexTrial(t, `multiple words of text`, 0, "uh-uh", "Fail.") 188 runRegexTrial(t, `multiple words`, 0, "multiple words, yeah", "Pass. Group[0]=(0,14)") 189 runRegexTrial(t, `(.*)c(.*)`, 0, "abcde", "Pass. Group[0]=(0,5) Group[1]=(0,2) Group[2]=(3,2)") 190 runRegexTrial(t, `\((.*), (.*)\)`, 0, "(a, b)", "Pass. Group[0]=(0,6) Group[1]=(1,1) Group[2]=(4,1)") 191 runRegexTrial(t, `[k]`, 0, "ab", "Fail.") 192 runRegexTrial(t, `abcd`, 0, "abcd", "Pass. Group[0]=(0,4)") 193 runRegexTrial(t, `a(bc)d`, 0, "abcd", "Pass. Group[0]=(0,4) Group[1]=(1,2)") 194 runRegexTrial(t, `a[-]?c`, 0, "ac", "Pass. Group[0]=(0,2)") 195 runRegexTrial(t, `(abc)\1`, 0, "abcabc", "Pass. Group[0]=(0,6) Group[1]=(0,3)") 196 runRegexTrial(t, `([a-c]*)\1`, 0, "abcabc", "Pass. Group[0]=(0,6) Group[1]=(0,3)") 197 runRegexTrial(t, `\1`, 0, "-", "Error.") 198 runRegexTrial(t, `\2`, 0, "-", "Error.") 199 runRegexTrial(t, `(a)|\1`, 0, "a", "Pass. Group[0]=(0,1) Group[1]=(0,1)") 200 runRegexTrial(t, `(a)|\1`, 0, "x", "Fail.") 201 runRegexTrial(t, `(a)|\2`, 0, "-", "Error.") 202 runRegexTrial(t, `(([a-c])b*?\2)*`, 0, "ababbbcbc", "Pass. Group[0]=(0,5) Group[1]=(0,3)(3,2) Group[2]=(0,1)(3,1)") 203 runRegexTrial(t, `(([a-c])b*?\2){3}`, 0, "ababbbcbc", "Pass. Group[0]=(0,9) Group[1]=(0,3)(3,3)(6,3) Group[2]=(0,1)(3,1)(6,1)") 204 runRegexTrial(t, `((\3|b)\2(a)x)+`, 0, "aaxabxbaxbbx", "Fail.") 205 runRegexTrial(t, `((\3|b)\2(a)x)+`, 0, "aaaxabaxbaaxbbax", "Pass. Group[0]=(12,4) Group[1]=(12,4) Group[2]=(12,1) Group[3]=(14,1)") 206 runRegexTrial(t, `((\3|b)\2(a)){2,}`, 0, "bbaababbabaaaaabbaaaabba", "Pass. Group[0]=(15,9) Group[1]=(15,3)(18,3)(21,3) Group[2]=(15,1)(18,1)(21,1) Group[3]=(17,1)(20,1)(23,1)") 207 runRegexTrial(t, `abc`, IgnoreCase, "ABC", "Pass. Group[0]=(0,3)") 208 runRegexTrial(t, `abc`, IgnoreCase, "XBC", "Fail.") 209 runRegexTrial(t, `abc`, IgnoreCase, "AXC", "Fail.") 210 runRegexTrial(t, `abc`, IgnoreCase, "ABX", "Fail.") 211 runRegexTrial(t, `abc`, IgnoreCase, "XABCY", "Pass. Group[0]=(1,3)") 212 runRegexTrial(t, `abc`, IgnoreCase, "ABABC", "Pass. Group[0]=(2,3)") 213 runRegexTrial(t, `ab*c`, IgnoreCase, "ABC", "Pass. Group[0]=(0,3)") 214 runRegexTrial(t, `ab*bc`, IgnoreCase, "ABC", "Pass. Group[0]=(0,3)") 215 runRegexTrial(t, `ab*bc`, IgnoreCase, "ABBC", "Pass. Group[0]=(0,4)") 216 runRegexTrial(t, `ab*?bc`, IgnoreCase, "ABBBBC", "Pass. Group[0]=(0,6)") 217 runRegexTrial(t, `ab{0,}?bc`, IgnoreCase, "ABBBBC", "Pass. Group[0]=(0,6)") 218 runRegexTrial(t, `ab+?bc`, IgnoreCase, "ABBC", "Pass. Group[0]=(0,4)") 219 runRegexTrial(t, `ab+bc`, IgnoreCase, "ABC", "Fail.") 220 runRegexTrial(t, `ab+bc`, IgnoreCase, "ABQ", "Fail.") 221 runRegexTrial(t, `ab{1,}bc`, IgnoreCase, "ABQ", "Fail.") 222 runRegexTrial(t, `ab+bc`, IgnoreCase, "ABBBBC", "Pass. Group[0]=(0,6)") 223 runRegexTrial(t, `ab{1,}?bc`, IgnoreCase, "ABBBBC", "Pass. Group[0]=(0,6)") 224 runRegexTrial(t, `ab{1,3}?bc`, IgnoreCase, "ABBBBC", "Pass. Group[0]=(0,6)") 225 runRegexTrial(t, `ab{3,4}?bc`, IgnoreCase, "ABBBBC", "Pass. Group[0]=(0,6)") 226 runRegexTrial(t, `ab{4,5}?bc`, IgnoreCase, "ABBBBC", "Fail.") 227 runRegexTrial(t, `ab??bc`, IgnoreCase, "ABBC", "Pass. Group[0]=(0,4)") 228 runRegexTrial(t, `ab??bc`, IgnoreCase, "ABC", "Pass. Group[0]=(0,3)") 229 runRegexTrial(t, `ab{0,1}?bc`, IgnoreCase, "ABC", "Pass. Group[0]=(0,3)") 230 runRegexTrial(t, `ab??bc`, IgnoreCase, "ABBBBC", "Fail.") 231 runRegexTrial(t, `ab??c`, IgnoreCase, "ABC", "Pass. Group[0]=(0,3)") 232 runRegexTrial(t, `ab{0,1}?c`, IgnoreCase, "ABC", "Pass. Group[0]=(0,3)") 233 runRegexTrial(t, `^abc$`, IgnoreCase, "ABC", "Pass. Group[0]=(0,3)") 234 runRegexTrial(t, `^abc$`, IgnoreCase, "ABCC", "Fail.") 235 runRegexTrial(t, `^abc`, IgnoreCase, "ABCC", "Pass. Group[0]=(0,3)") 236 runRegexTrial(t, `^abc$`, IgnoreCase, "AABC", "Fail.") 237 runRegexTrial(t, `abc$`, IgnoreCase, "AABC", "Pass. Group[0]=(1,3)") 238 runRegexTrial(t, `^`, IgnoreCase, "ABC", "Pass. Group[0]=(0,0)") 239 runRegexTrial(t, `$`, IgnoreCase, "ABC", "Pass. Group[0]=(3,0)") 240 runRegexTrial(t, `a.c`, IgnoreCase, "ABC", "Pass. Group[0]=(0,3)") 241 runRegexTrial(t, `a.c`, IgnoreCase, "AXC", "Pass. Group[0]=(0,3)") 242 runRegexTrial(t, `a.*?c`, IgnoreCase, "AXYZC", "Pass. Group[0]=(0,5)") 243 runRegexTrial(t, `a.*c`, IgnoreCase, "AXYZD", "Fail.") 244 runRegexTrial(t, `a[bc]d`, IgnoreCase, "ABC", "Fail.") 245 runRegexTrial(t, `a[bc]d`, IgnoreCase, "ABD", "Pass. Group[0]=(0,3)") 246 runRegexTrial(t, `a[b-d]e`, IgnoreCase, "ABD", "Fail.") 247 runRegexTrial(t, `a[b-d]e`, IgnoreCase, "ACE", "Pass. Group[0]=(0,3)") 248 runRegexTrial(t, `a[b-d]`, IgnoreCase, "AAC", "Pass. Group[0]=(1,2)") 249 runRegexTrial(t, `a[-b]`, IgnoreCase, "A-", "Pass. Group[0]=(0,2)") 250 runRegexTrial(t, `a[b-]`, IgnoreCase, "A-", "Pass. Group[0]=(0,2)") 251 runRegexTrial(t, `a[b-a]`, IgnoreCase, "-", "Error.") 252 runRegexTrial(t, `a[]b`, IgnoreCase, "-", "Error.") 253 runRegexTrial(t, `a[`, IgnoreCase, "-", "Error.") 254 runRegexTrial(t, `a]`, IgnoreCase, "A]", "Pass. Group[0]=(0,2)") 255 runRegexTrial(t, `a[]]b`, IgnoreCase, "A]B", "Pass. Group[0]=(0,3)") 256 runRegexTrial(t, `a[^bc]d`, IgnoreCase, "AED", "Pass. Group[0]=(0,3)") 257 runRegexTrial(t, `a[^bc]d`, IgnoreCase, "ABD", "Fail.") 258 runRegexTrial(t, `a[^-b]c`, IgnoreCase, "ADC", "Pass. Group[0]=(0,3)") 259 runRegexTrial(t, `a[^-b]c`, IgnoreCase, "A-C", "Fail.") 260 runRegexTrial(t, `a[^]b]c`, IgnoreCase, "A]C", "Fail.") 261 runRegexTrial(t, `a[^]b]c`, IgnoreCase, "ADC", "Pass. Group[0]=(0,3)") 262 runRegexTrial(t, `ab|cd`, IgnoreCase, "ABC", "Pass. Group[0]=(0,2)") 263 runRegexTrial(t, `ab|cd`, IgnoreCase, "ABCD", "Pass. Group[0]=(0,2)") 264 runRegexTrial(t, `()ef`, IgnoreCase, "DEF", "Pass. Group[0]=(1,2) Group[1]=(1,0)") 265 runRegexTrial(t, `*a`, IgnoreCase, "-", "Error.") 266 runRegexTrial(t, `(*)b`, IgnoreCase, "-", "Error.") 267 runRegexTrial(t, `$b`, IgnoreCase, "B", "Fail.") 268 runRegexTrial(t, `a\`, IgnoreCase, "-", "Error.") 269 runRegexTrial(t, `a\(b`, IgnoreCase, "A(B", "Pass. Group[0]=(0,3)") 270 runRegexTrial(t, `a\(*b`, IgnoreCase, "AB", "Pass. Group[0]=(0,2)") 271 runRegexTrial(t, `a\(*b`, IgnoreCase, "A((B", "Pass. Group[0]=(0,4)") 272 runRegexTrial(t, `a\\b`, IgnoreCase, "A\\B", "Pass. Group[0]=(0,3)") 273 runRegexTrial(t, `abc)`, IgnoreCase, "-", "Error.") 274 runRegexTrial(t, `(abc`, IgnoreCase, "-", "Error.") 275 runRegexTrial(t, `((a))`, IgnoreCase, "ABC", "Pass. Group[0]=(0,1) Group[1]=(0,1) Group[2]=(0,1)") 276 runRegexTrial(t, `(a)b(c)`, IgnoreCase, "ABC", "Pass. Group[0]=(0,3) Group[1]=(0,1) Group[2]=(2,1)") 277 runRegexTrial(t, `a+b+c`, IgnoreCase, "AABBABC", "Pass. Group[0]=(4,3)") 278 runRegexTrial(t, `a{1,}b{1,}c`, IgnoreCase, "AABBABC", "Pass. Group[0]=(4,3)") 279 runRegexTrial(t, `a**`, IgnoreCase, "-", "Error.") 280 runRegexTrial(t, `a.+?c`, IgnoreCase, "ABCABC", "Pass. Group[0]=(0,3)") 281 runRegexTrial(t, `a.*?c`, IgnoreCase, "ABCABC", "Pass. Group[0]=(0,3)") 282 runRegexTrial(t, `a.{0,5}?c`, IgnoreCase, "ABCABC", "Pass. Group[0]=(0,3)") 283 runRegexTrial(t, `(a+|b)*`, IgnoreCase, "AB", "Pass. Group[0]=(0,2) Group[1]=(0,1)(1,1)") 284 runRegexTrial(t, `(a+|b){0,}`, IgnoreCase, "AB", "Pass. Group[0]=(0,2) Group[1]=(0,1)(1,1)") 285 runRegexTrial(t, `(a+|b)+`, IgnoreCase, "AB", "Pass. Group[0]=(0,2) Group[1]=(0,1)(1,1)") 286 runRegexTrial(t, `(a+|b){1,}`, IgnoreCase, "AB", "Pass. Group[0]=(0,2) Group[1]=(0,1)(1,1)") 287 runRegexTrial(t, `(a+|b)?`, IgnoreCase, "AB", "Pass. Group[0]=(0,1) Group[1]=(0,1)") 288 runRegexTrial(t, `(a+|b){0,1}`, IgnoreCase, "AB", "Pass. Group[0]=(0,1) Group[1]=(0,1)") 289 runRegexTrial(t, `(a+|b){0,1}?`, IgnoreCase, "AB", "Pass. Group[0]=(0,0) Group[1]=") 290 runRegexTrial(t, `)(`, IgnoreCase, "-", "Error.") 291 runRegexTrial(t, `[^ab]*`, IgnoreCase, "CDE", "Pass. Group[0]=(0,3)") 292 runRegexTrial(t, `abc`, IgnoreCase, "", "Fail.") 293 runRegexTrial(t, `a*`, IgnoreCase, "", "Pass. Group[0]=(0,0)") 294 runRegexTrial(t, `([abc])*d`, IgnoreCase, "ABBBCD", "Pass. Group[0]=(0,6) Group[1]=(0,1)(1,1)(2,1)(3,1)(4,1)") 295 runRegexTrial(t, `([abc])*bcd`, IgnoreCase, "ABCD", "Pass. Group[0]=(0,4) Group[1]=(0,1)") 296 runRegexTrial(t, `a|b|c|d|e`, IgnoreCase, "E", "Pass. Group[0]=(0,1)") 297 runRegexTrial(t, `(a|b|c|d|e)f`, IgnoreCase, "EF", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 298 runRegexTrial(t, `abcd*efg`, IgnoreCase, "ABCDEFG", "Pass. Group[0]=(0,7)") 299 runRegexTrial(t, `ab*`, IgnoreCase, "XABYABBBZ", "Pass. Group[0]=(1,2)") 300 runRegexTrial(t, `ab*`, IgnoreCase, "XAYABBBZ", "Pass. Group[0]=(1,1)") 301 runRegexTrial(t, `(ab|cd)e`, IgnoreCase, "ABCDE", "Pass. Group[0]=(2,3) Group[1]=(2,2)") 302 runRegexTrial(t, `[abhgefdc]ij`, IgnoreCase, "HIJ", "Pass. Group[0]=(0,3)") 303 runRegexTrial(t, `^(ab|cd)e`, IgnoreCase, "ABCDE", "Fail.") 304 runRegexTrial(t, `(abc|)ef`, IgnoreCase, "ABCDEF", "Pass. Group[0]=(4,2) Group[1]=(4,0)") 305 runRegexTrial(t, `(a|b)c*d`, IgnoreCase, "ABCD", "Pass. Group[0]=(1,3) Group[1]=(1,1)") 306 runRegexTrial(t, `(ab|ab*)bc`, IgnoreCase, "ABC", "Pass. Group[0]=(0,3) Group[1]=(0,1)") 307 runRegexTrial(t, `a([bc]*)c*`, IgnoreCase, "ABC", "Pass. Group[0]=(0,3) Group[1]=(1,2)") 308 runRegexTrial(t, `a([bc]*)(c*d)`, IgnoreCase, "ABCD", "Pass. Group[0]=(0,4) Group[1]=(1,2) Group[2]=(3,1)") 309 runRegexTrial(t, `a([bc]+)(c*d)`, IgnoreCase, "ABCD", "Pass. Group[0]=(0,4) Group[1]=(1,2) Group[2]=(3,1)") 310 runRegexTrial(t, `a([bc]*)(c+d)`, IgnoreCase, "ABCD", "Pass. Group[0]=(0,4) Group[1]=(1,1) Group[2]=(2,2)") 311 runRegexTrial(t, `a[bcd]*dcdcde`, IgnoreCase, "ADCDCDE", "Pass. Group[0]=(0,7)") 312 runRegexTrial(t, `a[bcd]+dcdcde`, IgnoreCase, "ADCDCDE", "Fail.") 313 runRegexTrial(t, `(ab|a)b*c`, IgnoreCase, "ABC", "Pass. Group[0]=(0,3) Group[1]=(0,2)") 314 runRegexTrial(t, `((a)(b)c)(d)`, IgnoreCase, "ABCD", "Pass. Group[0]=(0,4) Group[1]=(0,3) Group[2]=(0,1) Group[3]=(1,1) Group[4]=(3,1)") 315 runRegexTrial(t, `[a-zA-Z_][a-zA-Z0-9_]*`, IgnoreCase, "ALPHA", "Pass. Group[0]=(0,5)") 316 runRegexTrial(t, `^a(bc+|b[eh])g|.h$`, IgnoreCase, "ABH", "Pass. Group[0]=(1,2) Group[1]=") 317 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, IgnoreCase, "EFFGZ", "Pass. Group[0]=(0,5) Group[1]=(0,5) Group[2]=") 318 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, IgnoreCase, "IJ", "Pass. Group[0]=(0,2) Group[1]=(0,2) Group[2]=(1,1)") 319 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, IgnoreCase, "EFFG", "Fail.") 320 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, IgnoreCase, "BCDD", "Fail.") 321 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, IgnoreCase, "REFFGZ", "Pass. Group[0]=(1,5) Group[1]=(1,5) Group[2]=") 322 runRegexTrial(t, `((((((((((a))))))))))`, IgnoreCase, "A", "Pass. Group[0]=(0,1) Group[1]=(0,1) Group[2]=(0,1) Group[3]=(0,1) Group[4]=(0,1) Group[5]=(0,1) Group[6]=(0,1) Group[7]=(0,1) Group[8]=(0,1) Group[9]=(0,1) Group[10]=(0,1)") 323 runRegexTrial(t, `((((((((((a))))))))))\10`, IgnoreCase, "AA", "Pass. Group[0]=(0,2) Group[1]=(0,1) Group[2]=(0,1) Group[3]=(0,1) Group[4]=(0,1) Group[5]=(0,1) Group[6]=(0,1) Group[7]=(0,1) Group[8]=(0,1) Group[9]=(0,1) Group[10]=(0,1)") 324 runRegexTrial(t, `((((((((((a))))))))))!`, IgnoreCase, "AA", "Fail.") 325 runRegexTrial(t, `((((((((((a))))))))))!`, IgnoreCase, "A!", "Pass. Group[0]=(0,2) Group[1]=(0,1) Group[2]=(0,1) Group[3]=(0,1) Group[4]=(0,1) Group[5]=(0,1) Group[6]=(0,1) Group[7]=(0,1) Group[8]=(0,1) Group[9]=(0,1) Group[10]=(0,1)") 326 runRegexTrial(t, `(((((((((a)))))))))`, IgnoreCase, "A", "Pass. Group[0]=(0,1) Group[1]=(0,1) Group[2]=(0,1) Group[3]=(0,1) Group[4]=(0,1) Group[5]=(0,1) Group[6]=(0,1) Group[7]=(0,1) Group[8]=(0,1) Group[9]=(0,1)") 327 runRegexTrial(t, `(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))`, IgnoreCase, "A", "Pass. Group[0]=(0,1) Group[1]=(0,1)") 328 runRegexTrial(t, `(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))`, IgnoreCase, "C", "Pass. Group[0]=(0,1) Group[1]=(0,1)") 329 runRegexTrial(t, `multiple words of text`, IgnoreCase, "UH-UH", "Fail.") 330 runRegexTrial(t, `multiple words`, IgnoreCase, "MULTIPLE WORDS, YEAH", "Pass. Group[0]=(0,14)") 331 runRegexTrial(t, `(.*)c(.*)`, IgnoreCase, "ABCDE", "Pass. Group[0]=(0,5) Group[1]=(0,2) Group[2]=(3,2)") 332 runRegexTrial(t, `\((.*), (.*)\)`, IgnoreCase, "(A, B)", "Pass. Group[0]=(0,6) Group[1]=(1,1) Group[2]=(4,1)") 333 runRegexTrial(t, `[k]`, IgnoreCase, "AB", "Fail.") 334 runRegexTrial(t, `abcd`, IgnoreCase, "ABCD", "Pass. Group[0]=(0,4)") 335 runRegexTrial(t, `a(bc)d`, IgnoreCase, "ABCD", "Pass. Group[0]=(0,4) Group[1]=(1,2)") 336 runRegexTrial(t, `a[-]?c`, IgnoreCase, "AC", "Pass. Group[0]=(0,2)") 337 runRegexTrial(t, `(abc)\1`, IgnoreCase, "ABCABC", "Pass. Group[0]=(0,6) Group[1]=(0,3)") 338 runRegexTrial(t, `([a-c]*)\1`, IgnoreCase, "ABCABC", "Pass. Group[0]=(0,6) Group[1]=(0,3)") 339 runRegexTrial(t, `a(?!b).`, 0, "abad", "Pass. Group[0]=(2,2)") 340 runRegexTrial(t, `a(?=d).`, 0, "abad", "Pass. Group[0]=(2,2)") 341 runRegexTrial(t, `a(?=c|d).`, 0, "abad", "Pass. Group[0]=(2,2)") 342 runRegexTrial(t, `a(?:b|c|d)(.)`, 0, "ace", "Pass. Group[0]=(0,3) Group[1]=(2,1)") 343 runRegexTrial(t, `a(?:b|c|d)*(.)`, 0, "ace", "Pass. Group[0]=(0,3) Group[1]=(2,1)") 344 runRegexTrial(t, `a(?:b|c|d)+?(.)`, 0, "ace", "Pass. Group[0]=(0,3) Group[1]=(2,1)") 345 runRegexTrial(t, `a(?:b|c|d)+?(.)`, 0, "acdbcdbe", "Pass. Group[0]=(0,3) Group[1]=(2,1)") 346 runRegexTrial(t, `a(?:b|c|d)+(.)`, 0, "acdbcdbe", "Pass. Group[0]=(0,8) Group[1]=(7,1)") 347 runRegexTrial(t, `a(?:b|c|d){2}(.)`, 0, "acdbcdbe", "Pass. Group[0]=(0,4) Group[1]=(3,1)") 348 runRegexTrial(t, `a(?:b|c|d){4,5}(.)`, 0, "acdbcdbe", "Pass. Group[0]=(0,7) Group[1]=(6,1)") 349 runRegexTrial(t, `a(?:b|c|d){4,5}?(.)`, 0, "acdbcdbe", "Pass. Group[0]=(0,6) Group[1]=(5,1)") 350 runRegexTrial(t, `((foo)|(bar))*`, 0, "foobar", "Pass. Group[0]=(0,6) Group[1]=(0,3)(3,3) Group[2]=(0,3) Group[3]=(3,3)") 351 runRegexTrial(t, `:(?:`, 0, "-", "Error.") 352 runRegexTrial(t, `a(?:b|c|d){6,7}(.)`, 0, "acdbcdbe", "Pass. Group[0]=(0,8) Group[1]=(7,1)") 353 runRegexTrial(t, `a(?:b|c|d){6,7}?(.)`, 0, "acdbcdbe", "Pass. Group[0]=(0,8) Group[1]=(7,1)") 354 runRegexTrial(t, `a(?:b|c|d){5,6}(.)`, 0, "acdbcdbe", "Pass. Group[0]=(0,8) Group[1]=(7,1)") 355 runRegexTrial(t, `a(?:b|c|d){5,6}?(.)`, 0, "acdbcdbe", "Pass. Group[0]=(0,7) Group[1]=(6,1)") 356 runRegexTrial(t, `a(?:b|c|d){5,7}(.)`, 0, "acdbcdbe", "Pass. Group[0]=(0,8) Group[1]=(7,1)") 357 runRegexTrial(t, `a(?:b|c|d){5,7}?(.)`, 0, "acdbcdbe", "Pass. Group[0]=(0,7) Group[1]=(6,1)") 358 runRegexTrial(t, `a(?:b|(c|e){1,2}?|d)+?(.)`, 0, "ace", "Pass. Group[0]=(0,3) Group[1]=(1,1) Group[2]=(2,1)") 359 runRegexTrial(t, `^(.+)?B`, 0, "AB", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 360 runRegexTrial(t, `^([^a-z])|(\^)$`, 0, ".", "Pass. Group[0]=(0,1) Group[1]=(0,1) Group[2]=") 361 runRegexTrial(t, `^[<>]&`, 0, "<&OUT", "Pass. Group[0]=(0,2)") 362 runRegexTrial(t, `^(a\1?){4}$`, 0, "aaaaaaaaaa", "Pass. Group[0]=(0,10) Group[1]=(0,1)(1,2)(3,3)(6,4)") 363 runRegexTrial(t, `^(a\1?){4}$`, 0, "aaaaaaaaa", "Fail.") 364 runRegexTrial(t, `^(a\1?){4}$`, 0, "aaaaaaaaaaa", "Fail.") 365 runRegexTrial(t, `^(a(?(1)\1)){4}$`, 0, "aaaaaaaaaa", "Pass. Group[0]=(0,10) Group[1]=(0,1)(1,2)(3,3)(6,4)") 366 runRegexTrial(t, `^(a(?(1)\1)){4}$`, 0, "aaaaaaaaa", "Fail.") 367 runRegexTrial(t, `^(a(?(1)\1)){4}$`, 0, "aaaaaaaaaaa", "Fail.") 368 runRegexTrial(t, `((a{4})+)`, 0, "aaaaaaaaa", "Pass. Group[0]=(0,8) Group[1]=(0,8) Group[2]=(0,4)(4,4)") 369 runRegexTrial(t, `(((aa){2})+)`, 0, "aaaaaaaaaa", "Pass. Group[0]=(0,8) Group[1]=(0,8) Group[2]=(0,4)(4,4) Group[3]=(0,2)(2,2)(4,2)(6,2)") 370 runRegexTrial(t, `(((a{2}){2})+)`, 0, "aaaaaaaaaa", "Pass. Group[0]=(0,8) Group[1]=(0,8) Group[2]=(0,4)(4,4) Group[3]=(0,2)(2,2)(4,2)(6,2)") 371 runRegexTrial(t, `(?:(f)(o)(o)|(b)(a)(r))*`, 0, "foobar", "Pass. Group[0]=(0,6) Group[1]=(0,1) Group[2]=(1,1) Group[3]=(2,1) Group[4]=(3,1) Group[5]=(4,1) Group[6]=(5,1)") 372 runRegexTrial(t, `(?<=a)b`, 0, "ab", "Pass. Group[0]=(1,1)") 373 runRegexTrial(t, `(?<=a)b`, 0, "cb", "Fail.") 374 runRegexTrial(t, `(?<=a)b`, 0, "b", "Fail.") 375 runRegexTrial(t, `(?<!c)b`, 0, "ab", "Pass. Group[0]=(1,1)") 376 runRegexTrial(t, `(?<!c)b`, 0, "cb", "Fail.") 377 runRegexTrial(t, `(?<!c)b`, 0, "b", "Pass. Group[0]=(0,1)") 378 runRegexTrial(t, `(?<!c)b`, 0, "b", "Pass. Group[0]=(0,1)") 379 runRegexTrial(t, `(?<%)b`, 0, "-", "Error.") 380 runRegexTrial(t, `(?:..)*a`, 0, "aba", "Pass. Group[0]=(0,3)") 381 runRegexTrial(t, `(?:..)*?a`, 0, "aba", "Pass. Group[0]=(0,1)") 382 runRegexTrial(t, `^(?:b|a(?=(.)))*\1`, 0, "abc", "Pass. Group[0]=(0,2) Group[1]=(1,1)") 383 runRegexTrial(t, `^(){3,5}`, 0, "abc", "Pass. Group[0]=(0,0) Group[1]=(0,0)(0,0)(0,0)") 384 runRegexTrial(t, `^(a+)*ax`, 0, "aax", "Pass. Group[0]=(0,3) Group[1]=(0,1)") 385 runRegexTrial(t, `^((a|b)+)*ax`, 0, "aax", "Pass. Group[0]=(0,3) Group[1]=(0,1) Group[2]=(0,1)") 386 runRegexTrial(t, `^((a|bc)+)*ax`, 0, "aax", "Pass. Group[0]=(0,3) Group[1]=(0,1) Group[2]=(0,1)") 387 runRegexTrial(t, `(a|x)*ab`, 0, "cab", "Pass. Group[0]=(1,2) Group[1]=") 388 runRegexTrial(t, `(a)*ab`, 0, "cab", "Pass. Group[0]=(1,2) Group[1]=") 389 runRegexTrial(t, `(?:(?i)a)b`, 0, "ab", "Pass. Group[0]=(0,2)") 390 runRegexTrial(t, `((?i)a)b`, 0, "ab", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 391 runRegexTrial(t, `(?:(?i)a)b`, 0, "Ab", "Pass. Group[0]=(0,2)") 392 runRegexTrial(t, `((?i)a)b`, 0, "Ab", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 393 runRegexTrial(t, `(?:(?i)a)b`, 0, "aB", "Fail.") 394 runRegexTrial(t, `((?i)a)b`, 0, "aB", "Fail.") 395 runRegexTrial(t, `(?i:a)b`, 0, "ab", "Pass. Group[0]=(0,2)") 396 runRegexTrial(t, `((?i:a))b`, 0, "ab", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 397 runRegexTrial(t, `(?i:a)b`, 0, "Ab", "Pass. Group[0]=(0,2)") 398 runRegexTrial(t, `((?i:a))b`, 0, "Ab", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 399 runRegexTrial(t, `(?i:a)b`, 0, "aB", "Fail.") 400 runRegexTrial(t, `((?i:a))b`, 0, "aB", "Fail.") 401 runRegexTrial(t, `(?:(?-i)a)b`, IgnoreCase, "ab", "Pass. Group[0]=(0,2)") 402 runRegexTrial(t, `((?-i)a)b`, IgnoreCase, "ab", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 403 runRegexTrial(t, `(?:(?-i)a)b`, IgnoreCase, "aB", "Pass. Group[0]=(0,2)") 404 runRegexTrial(t, `((?-i)a)b`, IgnoreCase, "aB", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 405 runRegexTrial(t, `(?:(?-i)a)b`, IgnoreCase, "Ab", "Fail.") 406 runRegexTrial(t, `((?-i)a)b`, IgnoreCase, "Ab", "Fail.") 407 runRegexTrial(t, `(?:(?-i)a)b`, IgnoreCase, "aB", "Pass. Group[0]=(0,2)") 408 runRegexTrial(t, `((?-i)a)b`, IgnoreCase, "aB", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 409 runRegexTrial(t, `(?:(?-i)a)b`, IgnoreCase, "AB", "Fail.") 410 runRegexTrial(t, `((?-i)a)b`, IgnoreCase, "AB", "Fail.") 411 runRegexTrial(t, `(?-i:a)b`, IgnoreCase, "ab", "Pass. Group[0]=(0,2)") 412 runRegexTrial(t, `((?-i:a))b`, IgnoreCase, "ab", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 413 runRegexTrial(t, `(?-i:a)b`, IgnoreCase, "aB", "Pass. Group[0]=(0,2)") 414 runRegexTrial(t, `((?-i:a))b`, IgnoreCase, "aB", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 415 runRegexTrial(t, `(?-i:a)b`, IgnoreCase, "Ab", "Fail.") 416 runRegexTrial(t, `((?-i:a))b`, IgnoreCase, "Ab", "Fail.") 417 runRegexTrial(t, `(?-i:a)b`, IgnoreCase, "aB", "Pass. Group[0]=(0,2)") 418 runRegexTrial(t, `((?-i:a))b`, IgnoreCase, "aB", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 419 runRegexTrial(t, `(?-i:a)b`, IgnoreCase, "AB", "Fail.") 420 runRegexTrial(t, `((?-i:a))b`, IgnoreCase, "AB", "Fail.") 421 runRegexTrial(t, `((?-i:a.))b`, IgnoreCase, "a\nB", "Fail.") 422 runRegexTrial(t, `((?s-i:a.))b`, IgnoreCase, "a\nB", "Pass. Group[0]=(0,3) Group[1]=(0,2)") 423 runRegexTrial(t, `((?s-i:a.))b`, IgnoreCase, "B\nB", "Fail.") 424 runRegexTrial(t, `(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))`, 0, "cabbbb", "Pass. Group[0]=(0,6)") 425 runRegexTrial(t, `(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))`, 0, "caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", "Pass. Group[0]=(0,41)") 426 runRegexTrial(t, `(ab)\d\1`, IgnoreCase, "Ab4ab", "Pass. Group[0]=(0,5) Group[1]=(0,2)") 427 runRegexTrial(t, `(ab)\d\1`, IgnoreCase, "ab4Ab", "Pass. Group[0]=(0,5) Group[1]=(0,2)") 428 runRegexTrial(t, `foo\w*\d{4}baz`, 0, "foobar1234baz", "Pass. Group[0]=(0,13)") 429 runRegexTrial(t, `x(~~)*(?:(?:F)?)?`, 0, "x~~", "Pass. Group[0]=(0,3) Group[1]=(1,2)") 430 runRegexTrial(t, `^a(?#xxx){3}c`, 0, "aaac", "Pass. Group[0]=(0,4)") 431 runRegexTrial(t, `(?<![cd])b`, 0, "dbcb", "Fail.") 432 runRegexTrial(t, `(?<![cd])[ab]`, 0, "dbaacb", "Pass. Group[0]=(2,1)") 433 runRegexTrial(t, `(?<!(c|d))b`, 0, "dbcb", "Fail.") 434 runRegexTrial(t, `(?<!(c|d))[ab]`, 0, "dbaacb", "Pass. Group[0]=(2,1) Group[1]=") 435 runRegexTrial(t, `(?<!cd)[ab]`, 0, "cdaccb", "Pass. Group[0]=(5,1)") 436 runRegexTrial(t, `^(?:a?b?)*$`, 0, "a--", "Fail.") 437 runRegexTrial(t, `((?s)^a(.))((?m)^b$)`, 0, "a\nb\nc\n", "Pass. Group[0]=(0,3) Group[1]=(0,2) Group[2]=(1,1) Group[3]=(2,1)") 438 runRegexTrial(t, `((?m)^b$)`, 0, "a\nb\nc\n", "Pass. Group[0]=(2,1) Group[1]=(2,1)") 439 runRegexTrial(t, `(?m)^b`, 0, "a\nb\n", "Pass. Group[0]=(2,1)") 440 runRegexTrial(t, `(?m)^(b)`, 0, "a\nb\n", "Pass. Group[0]=(2,1) Group[1]=(2,1)") 441 runRegexTrial(t, `((?m)^b)`, 0, "a\nb\n", "Pass. Group[0]=(2,1) Group[1]=(2,1)") 442 runRegexTrial(t, `\n((?m)^b)`, 0, "a\nb\n", "Pass. Group[0]=(1,2) Group[1]=(2,1)") 443 runRegexTrial(t, `((?s).)c(?!.)`, 0, "a\nb\nc\n", "Pass. Group[0]=(3,2) Group[1]=(3,1)") 444 runRegexTrial(t, `((?s).)c(?!.)`, 0, "a\nb\nc\n", "Pass. Group[0]=(3,2) Group[1]=(3,1)") 445 runRegexTrial(t, `((?s)b.)c(?!.)`, 0, "a\nb\nc\n", "Pass. Group[0]=(2,3) Group[1]=(2,2)") 446 runRegexTrial(t, `((?s)b.)c(?!.)`, 0, "a\nb\nc\n", "Pass. Group[0]=(2,3) Group[1]=(2,2)") 447 runRegexTrial(t, `^b`, 0, "a\nb\nc\n", "Fail.") 448 runRegexTrial(t, `()^b`, 0, "a\nb\nc\n", "Fail.") 449 runRegexTrial(t, `((?m)^b)`, 0, "a\nb\nc\n", "Pass. Group[0]=(2,1) Group[1]=(2,1)") 450 runRegexTrial(t, `(x)?(?(1)a|b)`, 0, "a", "Fail.") 451 runRegexTrial(t, `(x)?(?(1)b|a)`, 0, "a", "Pass. Group[0]=(0,1) Group[1]=") 452 runRegexTrial(t, `()?(?(1)b|a)`, 0, "a", "Pass. Group[0]=(0,1) Group[1]=") 453 runRegexTrial(t, `()(?(1)b|a)`, 0, "a", "Fail.") 454 runRegexTrial(t, `()?(?(1)a|b)`, 0, "a", "Pass. Group[0]=(0,1) Group[1]=(0,0)") 455 runRegexTrial(t, `^(\()?blah(?(1)(\)))$`, 0, "(blah)", "Pass. Group[0]=(0,6) Group[1]=(0,1) Group[2]=(5,1)") 456 runRegexTrial(t, `^(\()?blah(?(1)(\)))$`, 0, "blah", "Pass. Group[0]=(0,4) Group[1]= Group[2]=") 457 runRegexTrial(t, `^(\()?blah(?(1)(\)))$`, 0, "blah)", "Fail.") 458 runRegexTrial(t, `^(\()?blah(?(1)(\)))$`, 0, "(blah", "Fail.") 459 runRegexTrial(t, `^(\(+)?blah(?(1)(\)))$`, 0, "(blah)", "Pass. Group[0]=(0,6) Group[1]=(0,1) Group[2]=(5,1)") 460 runRegexTrial(t, `^(\(+)?blah(?(1)(\)))$`, 0, "blah", "Pass. Group[0]=(0,4) Group[1]= Group[2]=") 461 runRegexTrial(t, `^(\(+)?blah(?(1)(\)))$`, 0, "blah)", "Fail.") 462 runRegexTrial(t, `^(\(+)?blah(?(1)(\)))$`, 0, "(blah", "Fail.") 463 runRegexTrial(t, `(?(1)a|b|c)`, 0, "a", "Error.") 464 runRegexTrial(t, `(?(?!a)a|b)`, 0, "a", "Fail.") 465 runRegexTrial(t, `(?(?!a)b|a)`, 0, "a", "Pass. Group[0]=(0,1)") 466 runRegexTrial(t, `(?(?=a)b|a)`, 0, "a", "Fail.") 467 runRegexTrial(t, `(?(?=a)a|b)`, 0, "a", "Pass. Group[0]=(0,1)") 468 runRegexTrial(t, `(?=(a+?))(\1ab)`, 0, "aaab", "Pass. Group[0]=(1,3) Group[1]=(1,1) Group[2]=(1,3)") 469 runRegexTrial(t, `^(?=(a+?))\1ab`, 0, "aaab", "Fail.") 470 runRegexTrial(t, `(\w+:)+`, 0, "one:", "Pass. Group[0]=(0,4) Group[1]=(0,4)") 471 runRegexTrial(t, `$(?<=^(a))`, 0, "a", "Pass. Group[0]=(1,0) Group[1]=(0,1)") 472 runRegexTrial(t, `(?=(a+?))(\1ab)`, 0, "aaab", "Pass. Group[0]=(1,3) Group[1]=(1,1) Group[2]=(1,3)") 473 runRegexTrial(t, `^(?=(a+?))\1ab`, 0, "aaab", "Fail.") 474 runRegexTrial(t, `([\w:]+::)?(\w+)$`, 0, "abcd:", "Fail.") 475 runRegexTrial(t, `([\w:]+::)?(\w+)$`, 0, "abcd", "Pass. Group[0]=(0,4) Group[1]= Group[2]=(0,4)") 476 runRegexTrial(t, `([\w:]+::)?(\w+)$`, 0, "xy:z:::abcd", "Pass. Group[0]=(0,11) Group[1]=(0,7) Group[2]=(7,4)") 477 runRegexTrial(t, `^[^bcd]*(c+)`, 0, "aexycd", "Pass. Group[0]=(0,5) Group[1]=(4,1)") 478 runRegexTrial(t, `(a*)b+`, 0, "caab", "Pass. Group[0]=(1,3) Group[1]=(1,2)") 479 runRegexTrial(t, `([\w:]+::)?(\w+)$`, 0, "abcd:", "Fail.") 480 runRegexTrial(t, `([\w:]+::)?(\w+)$`, 0, "abcd", "Pass. Group[0]=(0,4) Group[1]= Group[2]=(0,4)") 481 runRegexTrial(t, `([\w:]+::)?(\w+)$`, 0, "xy:z:::abcd", "Pass. Group[0]=(0,11) Group[1]=(0,7) Group[2]=(7,4)") 482 runRegexTrial(t, `^[^bcd]*(c+)`, 0, "aexycd", "Pass. Group[0]=(0,5) Group[1]=(4,1)") 483 runRegexTrial(t, `(>a+)ab`, 0, "aaab", "Fail.") 484 runRegexTrial(t, `(?>a+)b`, 0, "aaab", "Pass. Group[0]=(0,4)") 485 runRegexTrial(t, `([[:]+)`, 0, "a:[b]:", "Pass. Group[0]=(1,2) Group[1]=(1,2)") 486 runRegexTrial(t, `([[=]+)`, 0, "a=[b]=", "Pass. Group[0]=(1,2) Group[1]=(1,2)") 487 runRegexTrial(t, `([[.]+)`, 0, "a.[b].", "Pass. Group[0]=(1,2) Group[1]=(1,2)") 488 runRegexTrial(t, `[a[:]b[:c]`, 0, "abc", "Pass. Group[0]=(0,3)") 489 runRegexTrial(t, `[a[:]b[:c]`, 0, "abc", "Pass. Group[0]=(0,3)") 490 runRegexTrial(t, `((?>a+)b)`, 0, "aaab", "Pass. Group[0]=(0,4) Group[1]=(0,4)") 491 runRegexTrial(t, `(?>(a+))b`, 0, "aaab", "Pass. Group[0]=(0,4) Group[1]=(0,3)") 492 runRegexTrial(t, `((?>[^()]+)|\([^()]*\))+`, 0, "((abc(ade)ufh()()x", "Pass. Group[0]=(2,16) Group[1]=(2,3)(5,5)(10,3)(13,2)(15,2)(17,1)") 493 runRegexTrial(t, `(?<=x+)`, 0, "xxxxy", "Pass. Group[0]=(1,0)") 494 runRegexTrial(t, `a{37,17}`, 0, "-", "Error.") 495 runRegexTrial(t, `\Z`, 0, "a\nb\n", "Pass. Group[0]=(3,0)") 496 runRegexTrial(t, `\z`, 0, "a\nb\n", "Pass. Group[0]=(4,0)") 497 runRegexTrial(t, `$`, 0, "a\nb\n", "Pass. Group[0]=(3,0)") 498 runRegexTrial(t, `\Z`, 0, "b\na\n", "Pass. Group[0]=(3,0)") 499 runRegexTrial(t, `\z`, 0, "b\na\n", "Pass. Group[0]=(4,0)") 500 runRegexTrial(t, `$`, 0, "b\na\n", "Pass. Group[0]=(3,0)") 501 runRegexTrial(t, `\Z`, 0, "b\na", "Pass. Group[0]=(3,0)") 502 runRegexTrial(t, `\z`, 0, "b\na", "Pass. Group[0]=(3,0)") 503 runRegexTrial(t, `$`, 0, "b\na", "Pass. Group[0]=(3,0)") 504 runRegexTrial(t, `\Z`, Multiline, "a\nb\n", "Pass. Group[0]=(3,0)") 505 runRegexTrial(t, `\z`, Multiline, "a\nb\n", "Pass. Group[0]=(4,0)") 506 runRegexTrial(t, `$`, Multiline, "a\nb\n", "Pass. Group[0]=(1,0)") 507 runRegexTrial(t, `\Z`, Multiline, "b\na\n", "Pass. Group[0]=(3,0)") 508 runRegexTrial(t, `\z`, Multiline, "b\na\n", "Pass. Group[0]=(4,0)") 509 runRegexTrial(t, `$`, Multiline, "b\na\n", "Pass. Group[0]=(1,0)") 510 runRegexTrial(t, `\Z`, Multiline, "b\na", "Pass. Group[0]=(3,0)") 511 runRegexTrial(t, `\z`, Multiline, "b\na", "Pass. Group[0]=(3,0)") 512 runRegexTrial(t, `$`, Multiline, "b\na", "Pass. Group[0]=(1,0)") 513 runRegexTrial(t, `a\Z`, 0, "a\nb\n", "Fail.") 514 runRegexTrial(t, `a\z`, 0, "a\nb\n", "Fail.") 515 runRegexTrial(t, `a$`, 0, "a\nb\n", "Fail.") 516 runRegexTrial(t, `a\Z`, 0, "b\na\n", "Pass. Group[0]=(2,1)") 517 runRegexTrial(t, `a\z`, 0, "b\na\n", "Fail.") 518 runRegexTrial(t, `a$`, 0, "b\na\n", "Pass. Group[0]=(2,1)") 519 runRegexTrial(t, `a\Z`, 0, "b\na", "Pass. Group[0]=(2,1)") 520 runRegexTrial(t, `a\z`, 0, "b\na", "Pass. Group[0]=(2,1)") 521 runRegexTrial(t, `a$`, 0, "b\na", "Pass. Group[0]=(2,1)") 522 runRegexTrial(t, `a\z`, Multiline, "a\nb\n", "Fail.") 523 runRegexTrial(t, `a$`, Multiline, "a\nb\n", "Pass. Group[0]=(0,1)") 524 runRegexTrial(t, `a\Z`, Multiline, "b\na\n", "Pass. Group[0]=(2,1)") 525 runRegexTrial(t, `a\z`, Multiline, "b\na\n", "Fail.") 526 runRegexTrial(t, `a$`, Multiline, "b\na\n", "Pass. Group[0]=(2,1)") 527 runRegexTrial(t, `a\Z`, Multiline, "b\na", "Pass. Group[0]=(2,1)") 528 runRegexTrial(t, `a\z`, Multiline, "b\na", "Pass. Group[0]=(2,1)") 529 runRegexTrial(t, `a$`, Multiline, "b\na", "Pass. Group[0]=(2,1)") 530 runRegexTrial(t, `aa\Z`, 0, "aa\nb\n", "Fail.") 531 runRegexTrial(t, `aa\z`, 0, "aa\nb\n", "Fail.") 532 runRegexTrial(t, `aa$`, 0, "aa\nb\n", "Fail.") 533 runRegexTrial(t, `aa\Z`, 0, "b\naa\n", "Pass. Group[0]=(2,2)") 534 runRegexTrial(t, `aa\z`, 0, "b\naa\n", "Fail.") 535 runRegexTrial(t, `aa$`, 0, "b\naa\n", "Pass. Group[0]=(2,2)") 536 runRegexTrial(t, `aa\Z`, 0, "b\naa", "Pass. Group[0]=(2,2)") 537 runRegexTrial(t, `aa\z`, 0, "b\naa", "Pass. Group[0]=(2,2)") 538 runRegexTrial(t, `aa$`, 0, "b\naa", "Pass. Group[0]=(2,2)") 539 runRegexTrial(t, `aa\z`, Multiline, "aa\nb\n", "Fail.") 540 runRegexTrial(t, `aa$`, Multiline, "aa\nb\n", "Pass. Group[0]=(0,2)") 541 runRegexTrial(t, `aa\Z`, Multiline, "b\naa\n", "Pass. Group[0]=(2,2)") 542 runRegexTrial(t, `aa\z`, Multiline, "b\naa\n", "Fail.") 543 runRegexTrial(t, `aa$`, Multiline, "b\naa\n", "Pass. Group[0]=(2,2)") 544 runRegexTrial(t, `aa\Z`, Multiline, "b\naa", "Pass. Group[0]=(2,2)") 545 runRegexTrial(t, `aa\z`, Multiline, "b\naa", "Pass. Group[0]=(2,2)") 546 runRegexTrial(t, `aa$`, Multiline, "b\naa", "Pass. Group[0]=(2,2)") 547 runRegexTrial(t, `aa\Z`, 0, "ac\nb\n", "Fail.") 548 runRegexTrial(t, `aa\z`, 0, "ac\nb\n", "Fail.") 549 runRegexTrial(t, `aa$`, 0, "ac\nb\n", "Fail.") 550 runRegexTrial(t, `aa\Z`, 0, "b\nac\n", "Fail.") 551 runRegexTrial(t, `aa\z`, 0, "b\nac\n", "Fail.") 552 runRegexTrial(t, `aa$`, 0, "b\nac\n", "Fail.") 553 runRegexTrial(t, `aa\Z`, 0, "b\nac", "Fail.") 554 runRegexTrial(t, `aa\z`, 0, "b\nac", "Fail.") 555 runRegexTrial(t, `aa$`, 0, "b\nac", "Fail.") 556 runRegexTrial(t, `aa\Z`, Multiline, "ac\nb\n", "Fail.") 557 runRegexTrial(t, `aa\z`, Multiline, "ac\nb\n", "Fail.") 558 runRegexTrial(t, `aa$`, Multiline, "ac\nb\n", "Fail.") 559 runRegexTrial(t, `aa\Z`, Multiline, "b\nac\n", "Fail.") 560 runRegexTrial(t, `aa\z`, Multiline, "b\nac\n", "Fail.") 561 runRegexTrial(t, `aa$`, Multiline, "b\nac\n", "Fail.") 562 runRegexTrial(t, `aa\Z`, Multiline, "b\nac", "Fail.") 563 runRegexTrial(t, `aa\z`, Multiline, "b\nac", "Fail.") 564 runRegexTrial(t, `aa$`, Multiline, "b\nac", "Fail.") 565 runRegexTrial(t, `aa\Z`, 0, "ca\nb\n", "Fail.") 566 runRegexTrial(t, `aa\z`, 0, "ca\nb\n", "Fail.") 567 runRegexTrial(t, `aa$`, 0, "ca\nb\n", "Fail.") 568 runRegexTrial(t, `aa\Z`, 0, "b\nca\n", "Fail.") 569 runRegexTrial(t, `aa\z`, 0, "b\nca\n", "Fail.") 570 runRegexTrial(t, `aa$`, 0, "b\nca\n", "Fail.") 571 runRegexTrial(t, `aa\Z`, 0, "b\nca", "Fail.") 572 runRegexTrial(t, `aa\z`, 0, "b\nca", "Fail.") 573 runRegexTrial(t, `aa$`, 0, "b\nca", "Fail.") 574 runRegexTrial(t, `aa\Z`, Multiline, "ca\nb\n", "Fail.") 575 runRegexTrial(t, `aa\z`, Multiline, "ca\nb\n", "Fail.") 576 runRegexTrial(t, `aa$`, Multiline, "ca\nb\n", "Fail.") 577 runRegexTrial(t, `aa\Z`, Multiline, "b\nca\n", "Fail.") 578 runRegexTrial(t, `aa\z`, Multiline, "b\nca\n", "Fail.") 579 runRegexTrial(t, `aa$`, Multiline, "b\nca\n", "Fail.") 580 runRegexTrial(t, `aa\Z`, Multiline, "b\nca", "Fail.") 581 runRegexTrial(t, `aa\z`, Multiline, "b\nca", "Fail.") 582 runRegexTrial(t, `aa$`, Multiline, "b\nca", "Fail.") 583 runRegexTrial(t, `ab\Z`, 0, "ab\nb\n", "Fail.") 584 runRegexTrial(t, `ab\z`, 0, "ab\nb\n", "Fail.") 585 runRegexTrial(t, `ab$`, 0, "ab\nb\n", "Fail.") 586 runRegexTrial(t, `ab\Z`, 0, "b\nab\n", "Pass. Group[0]=(2,2)") 587 runRegexTrial(t, `ab\z`, 0, "b\nab\n", "Fail.") 588 runRegexTrial(t, `ab$`, 0, "b\nab\n", "Pass. Group[0]=(2,2)") 589 runRegexTrial(t, `ab\Z`, 0, "b\nab", "Pass. Group[0]=(2,2)") 590 runRegexTrial(t, `ab\z`, 0, "b\nab", "Pass. Group[0]=(2,2)") 591 runRegexTrial(t, `ab$`, 0, "b\nab", "Pass. Group[0]=(2,2)") 592 runRegexTrial(t, `ab\z`, Multiline, "ab\nb\n", "Fail.") 593 runRegexTrial(t, `ab$`, Multiline, "ab\nb\n", "Pass. Group[0]=(0,2)") 594 runRegexTrial(t, `ab\Z`, Multiline, "b\nab\n", "Pass. Group[0]=(2,2)") 595 runRegexTrial(t, `ab\z`, Multiline, "b\nab\n", "Fail.") 596 runRegexTrial(t, `ab$`, Multiline, "b\nab\n", "Pass. Group[0]=(2,2)") 597 runRegexTrial(t, `ab\Z`, Multiline, "b\nab", "Pass. Group[0]=(2,2)") 598 runRegexTrial(t, `ab\z`, Multiline, "b\nab", "Pass. Group[0]=(2,2)") 599 runRegexTrial(t, `ab$`, Multiline, "b\nab", "Pass. Group[0]=(2,2)") 600 runRegexTrial(t, `ab\Z`, 0, "ac\nb\n", "Fail.") 601 runRegexTrial(t, `ab\z`, 0, "ac\nb\n", "Fail.") 602 runRegexTrial(t, `ab$`, 0, "ac\nb\n", "Fail.") 603 runRegexTrial(t, `ab\Z`, 0, "b\nac\n", "Fail.") 604 runRegexTrial(t, `ab\z`, 0, "b\nac\n", "Fail.") 605 runRegexTrial(t, `ab$`, 0, "b\nac\n", "Fail.") 606 runRegexTrial(t, `ab\Z`, 0, "b\nac", "Fail.") 607 runRegexTrial(t, `ab\z`, 0, "b\nac", "Fail.") 608 runRegexTrial(t, `ab$`, 0, "b\nac", "Fail.") 609 runRegexTrial(t, `ab\Z`, Multiline, "ac\nb\n", "Fail.") 610 runRegexTrial(t, `ab\z`, Multiline, "ac\nb\n", "Fail.") 611 runRegexTrial(t, `ab$`, Multiline, "ac\nb\n", "Fail.") 612 runRegexTrial(t, `ab\Z`, Multiline, "b\nac\n", "Fail.") 613 runRegexTrial(t, `ab\z`, Multiline, "b\nac\n", "Fail.") 614 runRegexTrial(t, `ab$`, Multiline, "b\nac\n", "Fail.") 615 runRegexTrial(t, `ab\Z`, Multiline, "b\nac", "Fail.") 616 runRegexTrial(t, `ab\z`, Multiline, "b\nac", "Fail.") 617 runRegexTrial(t, `ab$`, Multiline, "b\nac", "Fail.") 618 runRegexTrial(t, `ab\Z`, 0, "ca\nb\n", "Fail.") 619 runRegexTrial(t, `ab\z`, 0, "ca\nb\n", "Fail.") 620 runRegexTrial(t, `ab$`, 0, "ca\nb\n", "Fail.") 621 runRegexTrial(t, `ab\Z`, 0, "b\nca\n", "Fail.") 622 runRegexTrial(t, `ab\z`, 0, "b\nca\n", "Fail.") 623 runRegexTrial(t, `ab$`, 0, "b\nca\n", "Fail.") 624 runRegexTrial(t, `ab\Z`, 0, "b\nca", "Fail.") 625 runRegexTrial(t, `ab\z`, 0, "b\nca", "Fail.") 626 runRegexTrial(t, `ab$`, 0, "b\nca", "Fail.") 627 runRegexTrial(t, `ab\Z`, Multiline, "ca\nb\n", "Fail.") 628 runRegexTrial(t, `ab\z`, Multiline, "ca\nb\n", "Fail.") 629 runRegexTrial(t, `ab$`, Multiline, "ca\nb\n", "Fail.") 630 runRegexTrial(t, `ab\Z`, Multiline, "b\nca\n", "Fail.") 631 runRegexTrial(t, `ab\z`, Multiline, "b\nca\n", "Fail.") 632 runRegexTrial(t, `ab$`, Multiline, "b\nca\n", "Fail.") 633 runRegexTrial(t, `ab\Z`, Multiline, "b\nca", "Fail.") 634 runRegexTrial(t, `ab\z`, Multiline, "b\nca", "Fail.") 635 runRegexTrial(t, `ab$`, Multiline, "b\nca", "Fail.") 636 runRegexTrial(t, `abb\Z`, 0, "abb\nb\n", "Fail.") 637 runRegexTrial(t, `abb\z`, 0, "abb\nb\n", "Fail.") 638 runRegexTrial(t, `abb$`, 0, "abb\nb\n", "Fail.") 639 runRegexTrial(t, `abb\Z`, 0, "b\nabb\n", "Pass. Group[0]=(2,3)") 640 runRegexTrial(t, `abb\z`, 0, "b\nabb\n", "Fail.") 641 runRegexTrial(t, `abb$`, 0, "b\nabb\n", "Pass. Group[0]=(2,3)") 642 runRegexTrial(t, `abb\Z`, 0, "b\nabb", "Pass. Group[0]=(2,3)") 643 runRegexTrial(t, `abb\z`, 0, "b\nabb", "Pass. Group[0]=(2,3)") 644 runRegexTrial(t, `abb$`, 0, "b\nabb", "Pass. Group[0]=(2,3)") 645 runRegexTrial(t, `abb\z`, Multiline, "abb\nb\n", "Fail.") 646 runRegexTrial(t, `abb$`, Multiline, "abb\nb\n", "Pass. Group[0]=(0,3)") 647 runRegexTrial(t, `abb\Z`, Multiline, "b\nabb\n", "Pass. Group[0]=(2,3)") 648 runRegexTrial(t, `abb\z`, Multiline, "b\nabb\n", "Fail.") 649 runRegexTrial(t, `abb$`, Multiline, "b\nabb\n", "Pass. Group[0]=(2,3)") 650 runRegexTrial(t, `abb\Z`, Multiline, "b\nabb", "Pass. Group[0]=(2,3)") 651 runRegexTrial(t, `abb\z`, Multiline, "b\nabb", "Pass. Group[0]=(2,3)") 652 runRegexTrial(t, `abb$`, Multiline, "b\nabb", "Pass. Group[0]=(2,3)") 653 runRegexTrial(t, `abb\Z`, 0, "ac\nb\n", "Fail.") 654 runRegexTrial(t, `abb\z`, 0, "ac\nb\n", "Fail.") 655 runRegexTrial(t, `abb$`, 0, "ac\nb\n", "Fail.") 656 runRegexTrial(t, `abb\Z`, 0, "b\nac\n", "Fail.") 657 runRegexTrial(t, `abb\z`, 0, "b\nac\n", "Fail.") 658 runRegexTrial(t, `abb$`, 0, "b\nac\n", "Fail.") 659 runRegexTrial(t, `abb\Z`, 0, "b\nac", "Fail.") 660 runRegexTrial(t, `abb\z`, 0, "b\nac", "Fail.") 661 runRegexTrial(t, `abb$`, 0, "b\nac", "Fail.") 662 runRegexTrial(t, `abb\Z`, Multiline, "ac\nb\n", "Fail.") 663 runRegexTrial(t, `abb\z`, Multiline, "ac\nb\n", "Fail.") 664 runRegexTrial(t, `abb$`, Multiline, "ac\nb\n", "Fail.") 665 runRegexTrial(t, `abb\Z`, Multiline, "b\nac\n", "Fail.") 666 runRegexTrial(t, `abb\z`, Multiline, "b\nac\n", "Fail.") 667 runRegexTrial(t, `abb$`, Multiline, "b\nac\n", "Fail.") 668 runRegexTrial(t, `abb\Z`, Multiline, "b\nac", "Fail.") 669 runRegexTrial(t, `abb\z`, Multiline, "b\nac", "Fail.") 670 runRegexTrial(t, `abb$`, Multiline, "b\nac", "Fail.") 671 runRegexTrial(t, `abb\Z`, 0, "ca\nb\n", "Fail.") 672 runRegexTrial(t, `abb\z`, 0, "ca\nb\n", "Fail.") 673 runRegexTrial(t, `abb$`, 0, "ca\nb\n", "Fail.") 674 runRegexTrial(t, `abb\Z`, 0, "b\nca\n", "Fail.") 675 runRegexTrial(t, `abb\z`, 0, "b\nca\n", "Fail.") 676 runRegexTrial(t, `abb$`, 0, "b\nca\n", "Fail.") 677 runRegexTrial(t, `abb\Z`, 0, "b\nca", "Fail.") 678 runRegexTrial(t, `abb\z`, 0, "b\nca", "Fail.") 679 runRegexTrial(t, `abb$`, 0, "b\nca", "Fail.") 680 runRegexTrial(t, `abb\Z`, Multiline, "ca\nb\n", "Fail.") 681 runRegexTrial(t, `abb\z`, Multiline, "ca\nb\n", "Fail.") 682 runRegexTrial(t, `abb$`, Multiline, "ca\nb\n", "Fail.") 683 runRegexTrial(t, `abb\Z`, Multiline, "b\nca\n", "Fail.") 684 runRegexTrial(t, `abb\z`, Multiline, "b\nca\n", "Fail.") 685 runRegexTrial(t, `abb$`, Multiline, "b\nca\n", "Fail.") 686 runRegexTrial(t, `abb\Z`, Multiline, "b\nca", "Fail.") 687 runRegexTrial(t, `abb\z`, Multiline, "b\nca", "Fail.") 688 runRegexTrial(t, `abb$`, Multiline, "b\nca", "Fail.") 689 runRegexTrial(t, `(^|x)(c)`, 0, "ca", "Pass. Group[0]=(0,1) Group[1]=(0,0) Group[2]=(0,1)") 690 runRegexTrial(t, `a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz`, 0, "x", "Fail.") 691 runRegexTrial(t, `round\(((?>[^()]+))\)`, 0, "_I(round(xs * sz),1)", "Pass. Group[0]=(3,14) Group[1]=(9,7)") 692 runRegexTrial(t, `foo.bart`, 0, "foo.bart", "Pass. Group[0]=(0,8)") 693 runRegexTrial(t, `^d[x][x][x]`, Multiline, "abcd\ndxxx", "Pass. Group[0]=(5,4)") 694 runRegexTrial(t, `.X(.+)+X`, 0, "bbbbXcXaaaaaaaa", "Pass. Group[0]=(3,4) Group[1]=(5,1)") 695 runRegexTrial(t, `.X(.+)+XX`, 0, "bbbbXcXXaaaaaaaa", "Pass. Group[0]=(3,5) Group[1]=(5,1)") 696 runRegexTrial(t, `.XX(.+)+X`, 0, "bbbbXXcXaaaaaaaa", "Pass. Group[0]=(3,5) Group[1]=(6,1)") 697 runRegexTrial(t, `.X(.+)+X`, 0, "bbbbXXaaaaaaaaa", "Fail.") 698 runRegexTrial(t, `.X(.+)+XX`, 0, "bbbbXXXaaaaaaaaa", "Fail.") 699 runRegexTrial(t, `.XX(.+)+X`, 0, "bbbbXXXaaaaaaaaa", "Fail.") 700 runRegexTrial(t, `.X(.+)+[X]`, 0, "bbbbXcXaaaaaaaa", "Pass. Group[0]=(3,4) Group[1]=(5,1)") 701 runRegexTrial(t, `.X(.+)+[X][X]`, 0, "bbbbXcXXaaaaaaaa", "Pass. Group[0]=(3,5) Group[1]=(5,1)") 702 runRegexTrial(t, `.XX(.+)+[X]`, 0, "bbbbXXcXaaaaaaaa", "Pass. Group[0]=(3,5) Group[1]=(6,1)") 703 runRegexTrial(t, `.X(.+)+[X]`, 0, "bbbbXXaaaaaaaaa", "Fail.") 704 runRegexTrial(t, `.X(.+)+[X][X]`, 0, "bbbbXXXaaaaaaaaa", "Fail.") 705 runRegexTrial(t, `.XX(.+)+[X]`, 0, "bbbbXXXaaaaaaaaa", "Fail.") 706 runRegexTrial(t, `.[X](.+)+[X]`, 0, "bbbbXcXaaaaaaaa", "Pass. Group[0]=(3,4) Group[1]=(5,1)") 707 runRegexTrial(t, `.[X](.+)+[X][X]`, 0, "bbbbXcXXaaaaaaaa", "Pass. Group[0]=(3,5) Group[1]=(5,1)") 708 runRegexTrial(t, `.[X][X](.+)+[X]`, 0, "bbbbXXcXaaaaaaaa", "Pass. Group[0]=(3,5) Group[1]=(6,1)") 709 runRegexTrial(t, `.[X](.+)+[X]`, 0, "bbbbXXaaaaaaaaa", "Fail.") 710 runRegexTrial(t, `.[X](.+)+[X][X]`, 0, "bbbbXXXaaaaaaaaa", "Fail.") 711 runRegexTrial(t, `.[X][X](.+)+[X]`, 0, "bbbbXXXaaaaaaaaa", "Fail.") 712 runRegexTrial(t, `tt+$`, 0, "xxxtt", "Pass. Group[0]=(3,2)") 713 runRegexTrial(t, `([\d-z]+)`, 0, "a0-za", "Pass. Group[0]=(1,3) Group[1]=(1,3)") 714 runRegexTrial(t, `([\d-\s]+)`, 0, "a0- z", "Pass. Group[0]=(1,3) Group[1]=(1,3)") 715 runRegexTrial(t, `\GX.*X`, 0, "aaaXbX", "Fail.") 716 runRegexTrial(t, `(\d+\.\d+)`, 0, "3.1415926", "Pass. Group[0]=(0,9) Group[1]=(0,9)") 717 runRegexTrial(t, `(\ba.{0,10}br)`, 0, "have a web browser", "Pass. Group[0]=(5,8) Group[1]=(5,8)") 718 runRegexTrial(t, `\.c(pp|xx|c)?$`, IgnoreCase, "Changes", "Fail.") 719 runRegexTrial(t, `\.c(pp|xx|c)?$`, IgnoreCase, "IO.c", "Pass. Group[0]=(2,2) Group[1]=") 720 runRegexTrial(t, `(\.c(pp|xx|c)?$)`, IgnoreCase, "IO.c", "Pass. Group[0]=(2,2) Group[1]=(2,2) Group[2]=") 721 runRegexTrial(t, `^([a-z]:)`, 0, "C:/", "Fail.") 722 runRegexTrial(t, `^\S\s+aa$`, Multiline, "\nx aa", "Pass. Group[0]=(1,4)") 723 runRegexTrial(t, `(^|a)b`, 0, "ab", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 724 runRegexTrial(t, `^([ab]*?)(b)?(c)$`, 0, "abac", "Pass. Group[0]=(0,4) Group[1]=(0,3) Group[2]= Group[3]=(3,1)") 725 runRegexTrial(t, `(\w)?(abc)\1b`, 0, "abcab", "Fail.") 726 runRegexTrial(t, `^(?:.,){2}c`, 0, "a,b,c", "Pass. Group[0]=(0,5)") 727 runRegexTrial(t, `^(.,){2}c`, 0, "a,b,c", "Pass. Group[0]=(0,5) Group[1]=(0,2)(2,2)") 728 runRegexTrial(t, `^(?:[^,]*,){2}c`, 0, "a,b,c", "Pass. Group[0]=(0,5)") 729 runRegexTrial(t, `^([^,]*,){2}c`, 0, "a,b,c", "Pass. Group[0]=(0,5) Group[1]=(0,2)(2,2)") 730 runRegexTrial(t, `^([^,]*,){3}d`, 0, "aaa,b,c,d", "Pass. Group[0]=(0,9) Group[1]=(0,4)(4,2)(6,2)") 731 runRegexTrial(t, `^([^,]*,){3,}d`, 0, "aaa,b,c,d", "Pass. Group[0]=(0,9) Group[1]=(0,4)(4,2)(6,2)") 732 runRegexTrial(t, `^([^,]*,){0,3}d`, 0, "aaa,b,c,d", "Pass. Group[0]=(0,9) Group[1]=(0,4)(4,2)(6,2)") 733 runRegexTrial(t, `^([^,]{1,3},){3}d`, 0, "aaa,b,c,d", "Pass. Group[0]=(0,9) Group[1]=(0,4)(4,2)(6,2)") 734 runRegexTrial(t, `^([^,]{1,3},){3,}d`, 0, "aaa,b,c,d", "Pass. Group[0]=(0,9) Group[1]=(0,4)(4,2)(6,2)") 735 runRegexTrial(t, `^([^,]{1,3},){0,3}d`, 0, "aaa,b,c,d", "Pass. Group[0]=(0,9) Group[1]=(0,4)(4,2)(6,2)") 736 runRegexTrial(t, `^([^,]{1,},){3}d`, 0, "aaa,b,c,d", "Pass. Group[0]=(0,9) Group[1]=(0,4)(4,2)(6,2)") 737 runRegexTrial(t, `^([^,]{1,},){3,}d`, 0, "aaa,b,c,d", "Pass. Group[0]=(0,9) Group[1]=(0,4)(4,2)(6,2)") 738 runRegexTrial(t, `^([^,]{1,},){0,3}d`, 0, "aaa,b,c,d", "Pass. Group[0]=(0,9) Group[1]=(0,4)(4,2)(6,2)") 739 runRegexTrial(t, `^([^,]{0,3},){3}d`, 0, "aaa,b,c,d", "Pass. Group[0]=(0,9) Group[1]=(0,4)(4,2)(6,2)") 740 runRegexTrial(t, `^([^,]{0,3},){3,}d`, 0, "aaa,b,c,d", "Pass. Group[0]=(0,9) Group[1]=(0,4)(4,2)(6,2)") 741 runRegexTrial(t, `^([^,]{0,3},){0,3}d`, 0, "aaa,b,c,d", "Pass. Group[0]=(0,9) Group[1]=(0,4)(4,2)(6,2)") 742 runRegexTrial(t, `(?i)`, 0, "", "Pass. Group[0]=(0,0)") 743 runRegexTrial(t, `(?!\A)x`, Multiline, "a\nxb\n", "Pass. Group[0]=(2,1)") 744 runRegexTrial(t, `^(a(b)?)+$`, 0, "aba", "Pass. Group[0]=(0,3) Group[1]=(0,2)(2,1) Group[2]=(1,1)") 745 runRegexTrial(t, `^(aa(bb)?)+$`, 0, "aabbaa", "Pass. Group[0]=(0,6) Group[1]=(0,4)(4,2) Group[2]=(2,2)") 746 runRegexTrial(t, `^.{9}abc.*\n`, Multiline, "123\nabcabcabcabc\n", "Pass. Group[0]=(4,13)") 747 runRegexTrial(t, `^(a)?a$`, 0, "a", "Pass. Group[0]=(0,1) Group[1]=") 748 runRegexTrial(t, `^(a)?(?(1)a|b)+$`, 0, "a", "Fail.") 749 runRegexTrial(t, `^(a\1?)(a\1?)(a\2?)(a\3?)$`, 0, "aaaaaa", "Pass. Group[0]=(0,6) Group[1]=(0,1) Group[2]=(1,2) Group[3]=(3,1) Group[4]=(4,2)") 750 runRegexTrial(t, `^(a\1?){4}$`, 0, "aaaaaa", "Pass. Group[0]=(0,6) Group[1]=(0,1)(1,2)(3,1)(4,2)") 751 runRegexTrial(t, `^(0+)?(?:x(1))?`, 0, "x1", "Pass. Group[0]=(0,2) Group[1]= Group[2]=(1,1)") 752 runRegexTrial(t, `^([0-9a-fA-F]+)(?:x([0-9a-fA-F]+)?)(?:x([0-9a-fA-F]+))?`, 0, "012cxx0190", "Pass. Group[0]=(0,10) Group[1]=(0,4) Group[2]= Group[3]=(6,4)") 753 runRegexTrial(t, `^(b+?|a){1,2}c`, 0, "bbbac", "Pass. Group[0]=(0,5) Group[1]=(0,3)(3,1)") 754 runRegexTrial(t, `^(b+?|a){1,2}c`, 0, "bbbbac", "Pass. Group[0]=(0,6) Group[1]=(0,4)(4,1)") 755 runRegexTrial(t, `\((\w\. \w+)\)`, 0, "cd. (A. Tw)", "Pass. Group[0]=(4,7) Group[1]=(5,5)") 756 runRegexTrial(t, `((?:aaaa|bbbb)cccc)?`, 0, "aaaacccc", "Pass. Group[0]=(0,8) Group[1]=(0,8)") 757 runRegexTrial(t, `((?:aaaa|bbbb)cccc)?`, 0, "bbbbcccc", "Pass. Group[0]=(0,8) Group[1]=(0,8)") 758 759 runRegexTrial(t, `^(foo)|(bar)$`, 0, "foobar", "Pass. Group[0]=(0,3) Group[1]=(0,3) Group[2]=") 760 runRegexTrial(t, `^(foo)|(bar)$`, RightToLeft, "foobar", "Pass. Group[0]=(3,3) Group[1]= Group[2]=(3,3)") 761 762 runRegexTrial(t, `b`, RightToLeft, "babaaa", "Pass. Group[0]=(2,1)") 763 runRegexTrial(t, `bab`, RightToLeft, "babababaa", "Pass. Group[0]=(4,3)") 764 runRegexTrial(t, `abb`, RightToLeft, "abb", "Pass. Group[0]=(0,3)") 765 766 runRegexTrial(t, `b$`, RightToLeft|Multiline, "aab\naab", "Pass. Group[0]=(6,1)") 767 runRegexTrial(t, `^a`, RightToLeft|Multiline, "aab\naab", "Pass. Group[0]=(4,1)") 768 runRegexTrial(t, `^aaab`, RightToLeft|Multiline, "aaab\naab", "Pass. Group[0]=(0,4)") 769 runRegexTrial(t, `abb{2}`, RightToLeft, "abbb", "Pass. Group[0]=(0,4)") 770 runRegexTrial(t, `abb{1,2}`, RightToLeft, "abbb", "Pass. Group[0]=(0,4)") 771 772 runRegexTrial(t, `abb{1,2}`, RightToLeft, "abbbbbaaaa", "Pass. Group[0]=(0,4)") 773 runRegexTrial(t, `\Ab`, RightToLeft, "bab\naaa", "Pass. Group[0]=(0,1)") 774 runRegexTrial(t, `\Abab$`, RightToLeft, "bab", "Pass. Group[0]=(0,3)") 775 runRegexTrial(t, `b\Z`, RightToLeft, "bab\naaa", "Fail.") 776 runRegexTrial(t, `b\Z`, RightToLeft, "babaaab", "Pass. Group[0]=(6,1)") 777 runRegexTrial(t, `b\z`, RightToLeft, "babaaa", "Fail.") 778 runRegexTrial(t, `b\z`, RightToLeft, "babaaab", "Pass. Group[0]=(6,1)") 779 runRegexTrial(t, `a\G`, RightToLeft, "babaaa", "Pass. Group[0]=(5,1)") 780 runRegexTrial(t, `\Abaaa\G`, RightToLeft, "baaa", "Pass. Group[0]=(0,4)") 781 // runRegexTrial(t, `b`, RightToLeft, "babaaa", "Pass. Group[0]=(2,1)") 782 // runRegexTrial(t, `b`, RightToLeft, "babaaa", "Pass. Group[0]=(2,1)") 783 // runRegexTrial(t, `b`, RightToLeft, "babaaa", "Pass. Group[0]=(2,1)") 784 // runRegexTrial(t, `b`, RightToLeft, "babaaa", "Pass. Group[0]=(2,1)") 785 786 runRegexTrial(t, `\bc`, RightToLeft, "aaa c aaa c a", "Pass. Group[0]=(10,1)") 787 runRegexTrial(t, `\bc`, RightToLeft, "c aaa c", "Pass. Group[0]=(6,1)") 788 runRegexTrial(t, `\bc`, RightToLeft, "aaa ac", "Fail.") 789 runRegexTrial(t, `\bc`, RightToLeft, "c aaa", "Pass. Group[0]=(0,1)") 790 runRegexTrial(t, `\bc`, RightToLeft, "aaacaaa", "Fail.") 791 runRegexTrial(t, `\bc`, RightToLeft, "aaac aaa", "Fail.") 792 runRegexTrial(t, `\bc`, RightToLeft, "aaa ca caaa", "Pass. Group[0]=(7,1)") 793 794 runRegexTrial(t, `\Bc`, RightToLeft, "ac aaa ac", "Pass. Group[0]=(8,1)") 795 runRegexTrial(t, `\Bc`, RightToLeft, "aaa c", "Fail.") 796 runRegexTrial(t, `\Bc`, RightToLeft, "ca aaa", "Fail.") 797 runRegexTrial(t, `\Bc`, RightToLeft, "aaa c aaa", "Fail.") 798 runRegexTrial(t, `\Bc`, RightToLeft, " acaca ", "Pass. Group[0]=(4,1)") 799 runRegexTrial(t, `\Bc`, RightToLeft, "aaac aaac", "Pass. Group[0]=(8,1)") 800 runRegexTrial(t, `\Bc`, RightToLeft, "aaa caaa", "Fail.") 801 802 runRegexTrial(t, `b(a?)b`, RightToLeft, "aabababbaaababa", "Pass. Group[0]=(11,3) Group[1]=(12,1)") 803 runRegexTrial(t, `b{4}`, RightToLeft, "abbbbaabbbbaabbb", "Pass. Group[0]=(7,4)") 804 runRegexTrial(t, `b\1aa(.)`, RightToLeft, "bBaaB", "Pass. Group[0]=(0,5) Group[1]=(4,1)") 805 runRegexTrial(t, `b(.)aa\1`, RightToLeft, "bBaaB", "Fail.") 806 807 runRegexTrial(t, `^(a\1?){4}$`, RightToLeft, "aaaaaa", "Pass. Group[0]=(0,6) Group[1]=(5,1)(3,2)(2,1)(0,2)") 808 runRegexTrial(t, `^([0-9a-fA-F]+)(?:x([0-9a-fA-F]+)?)(?:x([0-9a-fA-F]+))?`, RightToLeft, "012cxx0190", "Pass. Group[0]=(0,10) Group[1]=(0,4) Group[2]= Group[3]=(6,4)") 809 runRegexTrial(t, `^(b+?|a){1,2}c`, RightToLeft, "bbbac", "Pass. Group[0]=(0,5) Group[1]=(3,1)(0,3)") 810 runRegexTrial(t, `\((\w\. \w+)\)`, RightToLeft, "cd. (A. Tw)", "Pass. Group[0]=(4,7) Group[1]=(5,5)") 811 runRegexTrial(t, `((?:aaaa|bbbb)cccc)?`, RightToLeft, "aaaacccc", "Pass. Group[0]=(0,8) Group[1]=(0,8)") 812 runRegexTrial(t, `((?:aaaa|bbbb)cccc)?`, RightToLeft, "bbbbcccc", "Pass. Group[0]=(0,8) Group[1]=(0,8)") 813 814 runRegexTrial(t, `(?<=a)b`, RightToLeft, "ab", "Pass. Group[0]=(1,1)") 815 runRegexTrial(t, `(?<=a)b`, RightToLeft, "cb", "Fail.") 816 runRegexTrial(t, `(?<=a)b`, RightToLeft, "b", "Fail.") 817 runRegexTrial(t, `(?<!c)b`, RightToLeft, "ab", "Pass. Group[0]=(1,1)") 818 runRegexTrial(t, `(?<!c)b`, RightToLeft, "cb", "Fail.") 819 runRegexTrial(t, `(?<!c)b`, RightToLeft, "b", "Pass. Group[0]=(0,1)") 820 runRegexTrial(t, `(?<!c)b`, RightToLeft, "b", "Pass. Group[0]=(0,1)") 821 runRegexTrial(t, `a(?=d).`, RightToLeft, "adabad", "Pass. Group[0]=(4,2)") 822 runRegexTrial(t, `a(?=c|d).`, RightToLeft, "adabad", "Pass. Group[0]=(4,2)") 823 824 runRegexTrial(t, `ab*c`, RightToLeft, "abc", "Pass. Group[0]=(0,3)") 825 runRegexTrial(t, `ab*bc`, RightToLeft, "abc", "Pass. Group[0]=(0,3)") 826 runRegexTrial(t, `ab*bc`, RightToLeft, "abbc", "Pass. Group[0]=(0,4)") 827 runRegexTrial(t, `ab*bc`, RightToLeft, "abbbbc", "Pass. Group[0]=(0,6)") 828 runRegexTrial(t, `.{1}`, RightToLeft, "abbbbc", "Pass. Group[0]=(5,1)") 829 runRegexTrial(t, `.{3,4}`, RightToLeft, "abbbbc", "Pass. Group[0]=(2,4)") 830 runRegexTrial(t, `ab{0,}bc`, RightToLeft, "abbbbc", "Pass. Group[0]=(0,6)") 831 runRegexTrial(t, `ab+bc`, RightToLeft, "abbc", "Pass. Group[0]=(0,4)") 832 runRegexTrial(t, `ab+bc`, RightToLeft, "abc", "Fail.") 833 runRegexTrial(t, `ab+bc`, RightToLeft, "abq", "Fail.") 834 runRegexTrial(t, `ab{1,}bc`, RightToLeft, "abq", "Fail.") 835 runRegexTrial(t, `ab+bc`, RightToLeft, "abbbbc", "Pass. Group[0]=(0,6)") 836 runRegexTrial(t, `ab{1,}bc`, RightToLeft, "abbbbc", "Pass. Group[0]=(0,6)") 837 runRegexTrial(t, `ab{1,3}bc`, RightToLeft, "abbbbc", "Pass. Group[0]=(0,6)") 838 runRegexTrial(t, `ab{3,4}bc`, RightToLeft, "abbbbc", "Pass. Group[0]=(0,6)") 839 runRegexTrial(t, `ab{4,5}bc`, RightToLeft, "abbbbc", "Fail.") 840 runRegexTrial(t, `ab?bc`, RightToLeft, "abbc", "Pass. Group[0]=(0,4)") 841 runRegexTrial(t, `ab?bc`, RightToLeft, "abc", "Pass. Group[0]=(0,3)") 842 runRegexTrial(t, `ab{0,1}bc`, RightToLeft, "abc", "Pass. Group[0]=(0,3)") 843 runRegexTrial(t, `ab?bc`, RightToLeft, "abbbbc", "Fail.") 844 runRegexTrial(t, `ab?c`, RightToLeft, "abc", "Pass. Group[0]=(0,3)") 845 runRegexTrial(t, `ab{0,1}c`, RightToLeft, "abc", "Pass. Group[0]=(0,3)") 846 runRegexTrial(t, `^abc$`, RightToLeft, "abc", "Pass. Group[0]=(0,3)") 847 runRegexTrial(t, `^abc$`, RightToLeft, "abcc", "Fail.") 848 runRegexTrial(t, `^abc`, RightToLeft, "abcc", "Pass. Group[0]=(0,3)") 849 runRegexTrial(t, `^abc$`, RightToLeft, "aabc", "Fail.") 850 runRegexTrial(t, `abc$`, RightToLeft, "aabc", "Pass. Group[0]=(1,3)") 851 runRegexTrial(t, `abc$`, RightToLeft, "aabcd", "Fail.") 852 runRegexTrial(t, `^`, RightToLeft, "abc", "Pass. Group[0]=(0,0)") 853 runRegexTrial(t, `$`, RightToLeft, "abc", "Pass. Group[0]=(3,0)") 854 runRegexTrial(t, `a.c`, RightToLeft, "abc", "Pass. Group[0]=(0,3)") 855 runRegexTrial(t, `a.c`, RightToLeft, "axc", "Pass. Group[0]=(0,3)") 856 runRegexTrial(t, `a.*c`, RightToLeft, "axyzc", "Pass. Group[0]=(0,5)") 857 runRegexTrial(t, `a.*c`, RightToLeft, "axyzd", "Fail.") 858 runRegexTrial(t, `a[bc]d`, RightToLeft, "abc", "Fail.") 859 runRegexTrial(t, `a[bc]d`, RightToLeft, "abd", "Pass. Group[0]=(0,3)") 860 runRegexTrial(t, `a[b-d]e`, RightToLeft, "abd", "Fail.") 861 runRegexTrial(t, `a[b-d]e`, RightToLeft, "ace", "Pass. Group[0]=(0,3)") 862 runRegexTrial(t, `a[b-d]`, RightToLeft, "aac", "Pass. Group[0]=(1,2)") 863 runRegexTrial(t, `a[-b]`, RightToLeft, "a-", "Pass. Group[0]=(0,2)") 864 runRegexTrial(t, `a[b-]`, RightToLeft, "a-", "Pass. Group[0]=(0,2)") 865 runRegexTrial(t, `a[b-a]`, RightToLeft, "-", "Error.") 866 runRegexTrial(t, `a[]b`, RightToLeft, "-", "Error.") 867 runRegexTrial(t, `a[`, RightToLeft, "-", "Error.") 868 runRegexTrial(t, `a]`, RightToLeft, "a]", "Pass. Group[0]=(0,2)") 869 runRegexTrial(t, `a[]]b`, RightToLeft, "a]b", "Pass. Group[0]=(0,3)") 870 runRegexTrial(t, `a[^bc]d`, RightToLeft, "aed", "Pass. Group[0]=(0,3)") 871 runRegexTrial(t, `a[^bc]d`, RightToLeft, "abd", "Fail.") 872 runRegexTrial(t, `a[^-b]c`, RightToLeft, "adc", "Pass. Group[0]=(0,3)") 873 runRegexTrial(t, `a[^-b]c`, RightToLeft, "a-c", "Fail.") 874 runRegexTrial(t, `a[^]b]c`, RightToLeft, "a]c", "Fail.") 875 runRegexTrial(t, `a[^]b]c`, RightToLeft, "adc", "Pass. Group[0]=(0,3)") 876 runRegexTrial(t, `\ba\b`, RightToLeft, "a-", "Pass. Group[0]=(0,1)") 877 runRegexTrial(t, `\ba\b`, RightToLeft, "-a", "Pass. Group[0]=(1,1)") 878 runRegexTrial(t, `\ba\b`, RightToLeft, "-a-", "Pass. Group[0]=(1,1)") 879 runRegexTrial(t, `\by\b`, RightToLeft, "xy", "Fail.") 880 runRegexTrial(t, `\by\b`, RightToLeft, "yz", "Fail.") 881 runRegexTrial(t, `\by\b`, RightToLeft, "xyz", "Fail.") 882 runRegexTrial(t, `\Ba\B`, RightToLeft, "a-", "Fail.") 883 runRegexTrial(t, `\Ba\B`, RightToLeft, "-a", "Fail.") 884 runRegexTrial(t, `\Ba\B`, RightToLeft, "-a-", "Fail.") 885 runRegexTrial(t, `\By\b`, RightToLeft, "xy", "Pass. Group[0]=(1,1)") 886 runRegexTrial(t, `\by\B`, RightToLeft, "yz", "Pass. Group[0]=(0,1)") 887 runRegexTrial(t, `\By\B`, RightToLeft, "xyz", "Pass. Group[0]=(1,1)") 888 runRegexTrial(t, `\w`, RightToLeft, "a", "Pass. Group[0]=(0,1)") 889 runRegexTrial(t, `\w`, RightToLeft, "-", "Fail.") 890 runRegexTrial(t, `\W`, RightToLeft, "a", "Fail.") 891 runRegexTrial(t, `\W`, RightToLeft, "-", "Pass. Group[0]=(0,1)") 892 runRegexTrial(t, `a\sb`, RightToLeft, "a b", "Pass. Group[0]=(0,3)") 893 runRegexTrial(t, `a\sb`, RightToLeft, "a-b", "Fail.") 894 runRegexTrial(t, `a\Sb`, RightToLeft, "a b", "Fail.") 895 runRegexTrial(t, `a\Sb`, RightToLeft, "a-b", "Pass. Group[0]=(0,3)") 896 runRegexTrial(t, `\d`, RightToLeft, "1", "Pass. Group[0]=(0,1)") 897 runRegexTrial(t, `\d`, RightToLeft, "-", "Fail.") 898 runRegexTrial(t, `\D`, RightToLeft, "1", "Fail.") 899 runRegexTrial(t, `\D`, RightToLeft, "-", "Pass. Group[0]=(0,1)") 900 runRegexTrial(t, `[\w]`, RightToLeft, "a", "Pass. Group[0]=(0,1)") 901 runRegexTrial(t, `[\w]`, RightToLeft, "-", "Fail.") 902 runRegexTrial(t, `[\W]`, RightToLeft, "a", "Fail.") 903 runRegexTrial(t, `[\W]`, RightToLeft, "-", "Pass. Group[0]=(0,1)") 904 runRegexTrial(t, `a[\s]b`, RightToLeft, "a b", "Pass. Group[0]=(0,3)") 905 runRegexTrial(t, `a[\s]b`, RightToLeft, "a-b", "Fail.") 906 runRegexTrial(t, `a[\S]b`, RightToLeft, "a b", "Fail.") 907 runRegexTrial(t, `a[\S]b`, RightToLeft, "a-b", "Pass. Group[0]=(0,3)") 908 runRegexTrial(t, `[\d]`, RightToLeft, "1", "Pass. Group[0]=(0,1)") 909 runRegexTrial(t, `[\d]`, RightToLeft, "-", "Fail.") 910 runRegexTrial(t, `[\D]`, RightToLeft, "1", "Fail.") 911 runRegexTrial(t, `[\D]`, RightToLeft, "-", "Pass. Group[0]=(0,1)") 912 runRegexTrial(t, `ab|cd`, RightToLeft, "abc", "Pass. Group[0]=(0,2)") 913 runRegexTrial(t, `ab|cd`, RightToLeft, "abcd", "Pass. Group[0]=(2,2)") 914 runRegexTrial(t, `()ef`, RightToLeft, "def", "Pass. Group[0]=(1,2) Group[1]=(1,0)") 915 runRegexTrial(t, `*a`, RightToLeft, "-", "Error.") 916 runRegexTrial(t, `(*)b`, RightToLeft, "-", "Error.") 917 runRegexTrial(t, `$b`, RightToLeft, "b", "Fail.") 918 runRegexTrial(t, `a\`, RightToLeft, "-", "Error.") 919 runRegexTrial(t, `a\(b`, RightToLeft, "a(b", "Pass. Group[0]=(0,3)") 920 runRegexTrial(t, `a\(*b`, RightToLeft, "ab", "Pass. Group[0]=(0,2)") 921 runRegexTrial(t, `a\(*b`, RightToLeft, "a((b", "Pass. Group[0]=(0,4)") 922 runRegexTrial(t, `a\\b`, RightToLeft, "a\\b", "Pass. Group[0]=(0,3)") 923 runRegexTrial(t, `abc)`, RightToLeft, "-", "Error.") 924 runRegexTrial(t, `(abc`, RightToLeft, "-", "Error.") 925 runRegexTrial(t, `((a))`, RightToLeft, "abc", "Pass. Group[0]=(0,1) Group[1]=(0,1) Group[2]=(0,1)") 926 runRegexTrial(t, `(a)b(c)`, RightToLeft, "abc", "Pass. Group[0]=(0,3) Group[1]=(0,1) Group[2]=(2,1)") 927 runRegexTrial(t, `a+b+c`, RightToLeft, "aabbabc", "Pass. Group[0]=(4,3)") 928 runRegexTrial(t, `a{1,}b{1,}c`, RightToLeft, "aabbabc", "Pass. Group[0]=(4,3)") 929 runRegexTrial(t, `a**`, RightToLeft, "-", "Error.") 930 runRegexTrial(t, `a.+?c`, RightToLeft, "abcabc", "Pass. Group[0]=(3,3)") 931 runRegexTrial(t, `(a+|b)*`, RightToLeft, "ab", "Pass. Group[0]=(0,2) Group[1]=(1,1)(0,1)") 932 runRegexTrial(t, `(a+|b){0,}`, RightToLeft, "ab", "Pass. Group[0]=(0,2) Group[1]=(1,1)(0,1)") 933 runRegexTrial(t, `(a+|b)+`, RightToLeft, "ab", "Pass. Group[0]=(0,2) Group[1]=(1,1)(0,1)") 934 runRegexTrial(t, `(a+|b){1,}`, RightToLeft, "ab", "Pass. Group[0]=(0,2) Group[1]=(1,1)(0,1)") 935 runRegexTrial(t, `(a+|b)?`, RightToLeft, "ab", "Pass. Group[0]=(1,1) Group[1]=(1,1)") 936 runRegexTrial(t, `(a+|b){0,1}`, RightToLeft, "ab", "Pass. Group[0]=(1,1) Group[1]=(1,1)") 937 runRegexTrial(t, `)(`, RightToLeft, "-", "Error.") 938 runRegexTrial(t, `[^ab]*`, RightToLeft, "cde", "Pass. Group[0]=(0,3)") 939 runRegexTrial(t, `abc`, RightToLeft, "", "Fail.") 940 runRegexTrial(t, `a*`, RightToLeft, "", "Pass. Group[0]=(0,0)") 941 runRegexTrial(t, `([abc])*d`, RightToLeft, "abbbcd", "Pass. Group[0]=(0,6) Group[1]=(4,1)(3,1)(2,1)(1,1)(0,1)") 942 runRegexTrial(t, `([abc])*bcd`, RightToLeft, "abcd", "Pass. Group[0]=(0,4) Group[1]=(0,1)") 943 runRegexTrial(t, `a|b|c|d|e`, RightToLeft, "e", "Pass. Group[0]=(0,1)") 944 runRegexTrial(t, `(a|b|c|d|e)f`, RightToLeft, "ef", "Pass. Group[0]=(0,2) Group[1]=(0,1)") 945 runRegexTrial(t, `abcd*efg`, RightToLeft, "abcdefg", "Pass. Group[0]=(0,7)") 946 runRegexTrial(t, `ab*`, RightToLeft, "xabyabbbz", "Pass. Group[0]=(4,4)") 947 runRegexTrial(t, `ab*`, RightToLeft, "xayabbbz", "Pass. Group[0]=(3,4)") 948 runRegexTrial(t, `(ab|cd)e`, RightToLeft, "abcde", "Pass. Group[0]=(2,3) Group[1]=(2,2)") 949 runRegexTrial(t, `[abhgefdc]ij`, RightToLeft, "hij", "Pass. Group[0]=(0,3)") 950 runRegexTrial(t, `^(ab|cd)e`, RightToLeft, "abcde", "Fail.") 951 runRegexTrial(t, `(abc|)ef`, RightToLeft, "abcdef", "Pass. Group[0]=(4,2) Group[1]=(4,0)") 952 runRegexTrial(t, `(a|b)c*d`, RightToLeft, "abcd", "Pass. Group[0]=(1,3) Group[1]=(1,1)") 953 runRegexTrial(t, `(ab|ab*)bc`, RightToLeft, "abc", "Pass. Group[0]=(0,3) Group[1]=(0,1)") 954 runRegexTrial(t, `a([bc]*)c*`, RightToLeft, "abc", "Pass. Group[0]=(0,3) Group[1]=(1,1)") 955 runRegexTrial(t, `a([bc]*)(c*d)`, RightToLeft, "abcd", "Pass. Group[0]=(0,4) Group[1]=(1,1) Group[2]=(2,2)") 956 runRegexTrial(t, `a([bc]+)(c*d)`, RightToLeft, "abcd", "Pass. Group[0]=(0,4) Group[1]=(1,1) Group[2]=(2,2)") 957 runRegexTrial(t, `a([bc]*)(c+d)`, RightToLeft, "abcd", "Pass. Group[0]=(0,4) Group[1]=(1,1) Group[2]=(2,2)") 958 runRegexTrial(t, `a[bcd]*dcdcde`, RightToLeft, "adcdcde", "Pass. Group[0]=(0,7)") 959 runRegexTrial(t, `a[bcd]+dcdcde`, RightToLeft, "adcdcde", "Fail.") 960 runRegexTrial(t, `(ab|a)b*c`, RightToLeft, "abc", "Pass. Group[0]=(0,3) Group[1]=(0,1)") 961 runRegexTrial(t, `((a)(b)c)(d)`, RightToLeft, "abcd", "Pass. Group[0]=(0,4) Group[1]=(0,3) Group[2]=(0,1) Group[3]=(1,1) Group[4]=(3,1)") 962 runRegexTrial(t, `[a-zA-Z_][a-zA-Z0-9_]*`, RightToLeft, "alpha", "Pass. Group[0]=(0,5)") 963 runRegexTrial(t, `^a(bc+|b[eh])g|.h$`, RightToLeft, "abh", "Pass. Group[0]=(1,2) Group[1]=") 964 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, RightToLeft, "effgz", "Pass. Group[0]=(0,5) Group[1]=(0,5) Group[2]=") 965 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, RightToLeft, "ij", "Pass. Group[0]=(0,2) Group[1]=(0,2) Group[2]=(1,1)") 966 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, RightToLeft, "effg", "Fail.") 967 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, RightToLeft, "bcdd", "Fail.") 968 runRegexTrial(t, `(bc+d$|ef*g.|h?i(j|k))`, RightToLeft, "reffgz", "Pass. Group[0]=(1,5) Group[1]=(1,5) Group[2]=") 969 runRegexTrial(t, `((((((((((a))))))))))`, RightToLeft, "a", "Pass. Group[0]=(0,1) Group[1]=(0,1) Group[2]=(0,1) Group[3]=(0,1) Group[4]=(0,1) Group[5]=(0,1) Group[6]=(0,1) Group[7]=(0,1) Group[8]=(0,1) Group[9]=(0,1) Group[10]=(0,1)") 970 runRegexTrial(t, `((((((((((a))))))))))\10`, RightToLeft, "aa", "Fail.") 971 runRegexTrial(t, `\10((((((((((a))))))))))`, RightToLeft, "aa", "Pass. Group[0]=(0,2) Group[1]=(1,1) Group[2]=(1,1) Group[3]=(1,1) Group[4]=(1,1) Group[5]=(1,1) Group[6]=(1,1) Group[7]=(1,1) Group[8]=(1,1) Group[9]=(1,1) Group[10]=(1,1)") 972 runRegexTrial(t, `((((((((((a))))))))))!`, RightToLeft, "aa", "Fail.") 973 runRegexTrial(t, `((((((((((a))))))))))!`, RightToLeft, "a!", "Pass. Group[0]=(0,2) Group[1]=(0,1) Group[2]=(0,1) Group[3]=(0,1) Group[4]=(0,1) Group[5]=(0,1) Group[6]=(0,1) Group[7]=(0,1) Group[8]=(0,1) Group[9]=(0,1) Group[10]=(0,1)") 974 runRegexTrial(t, `(((((((((a)))))))))`, RightToLeft, "a", "Pass. Group[0]=(0,1) Group[1]=(0,1) Group[2]=(0,1) Group[3]=(0,1) Group[4]=(0,1) Group[5]=(0,1) Group[6]=(0,1) Group[7]=(0,1) Group[8]=(0,1) Group[9]=(0,1)") 975 runRegexTrial(t, `multiple words of text`, RightToLeft, "uh-uh", "Fail.") 976 runRegexTrial(t, `multiple words`, RightToLeft, "multiple words, yeah", "Pass. Group[0]=(0,14)") 977 runRegexTrial(t, `(.*)c(.*)`, RightToLeft, "abcde", "Pass. Group[0]=(0,5) Group[1]=(0,2) Group[2]=(3,2)") 978 runRegexTrial(t, `\((.*), (.*)\)`, RightToLeft, "(a, b)", "Pass. Group[0]=(0,6) Group[1]=(1,1) Group[2]=(4,1)") 979 runRegexTrial(t, `[k]`, RightToLeft, "ab", "Fail.") 980 runRegexTrial(t, `abcd`, RightToLeft, "abcd", "Pass. Group[0]=(0,4)") 981 runRegexTrial(t, `a(bc)d`, RightToLeft, "abcd", "Pass. Group[0]=(0,4) Group[1]=(1,2)") 982 runRegexTrial(t, `a[-]?c`, RightToLeft, "ac", "Pass. Group[0]=(0,2)") 983 runRegexTrial(t, `(abc)\1`, RightToLeft, "abcabc", "Fail.") 984 runRegexTrial(t, `\1(abc)`, RightToLeft, "abcabc", "Pass. Group[0]=(0,6) Group[1]=(3,3)") 985 runRegexTrial(t, `([a-c]*)\1`, RightToLeft, "abcabc", "Fail.") 986 runRegexTrial(t, `\1([a-c]*)`, RightToLeft, "abcabc", "Pass. Group[0]=(0,6) Group[1]=(3,3)") 987 runRegexTrial(t, `\1`, RightToLeft, "-", "Error.") 988 runRegexTrial(t, `\2`, RightToLeft, "-", "Error.") 989 runRegexTrial(t, `(a)|\1`, RightToLeft, "a", "Pass. Group[0]=(0,1) Group[1]=(0,1)") 990 runRegexTrial(t, `(a)|\1`, RightToLeft, "x", "Fail.") 991 runRegexTrial(t, `(a)|\2`, RightToLeft, "-", "Error.") 992 runRegexTrial(t, `(([a-c])b*?\2)*`, RightToLeft, "ababbbcbc", "Pass. Group[0]=(9,0) Group[1]= Group[2]=") 993 runRegexTrial(t, `(([a-c])b*?\2){3}`, RightToLeft, "ababbbcbc", "Fail.") 994 runRegexTrial(t, `((\3|b)\2(a)x)+`, RightToLeft, "aaxabxbaxbbx", "Fail.") 995 runRegexTrial(t, `((\3|b)\2(a)x)+`, RightToLeft, "aaaxabaxbaaxbbax", "Fail.") 996 runRegexTrial(t, `((\3|b)\2(a)){2,}`, RightToLeft, "bbaababbabaaaaabbaaaabba", "Fail.") 997 998 runRegexTrial(t, `\((?>[^()]+|\((?<depth>)|\)(?<-depth>))*(?(depth)(?!))\)`, 0, "((a(b))c)", "Pass. Group[0]=(0,9) Group[1]=") 999 runRegexTrial(t, `^\((?>[^()]+|\((?<depth>)|\)(?<-depth>))*(?(depth)(?!))\)$`, 0, "((a(b))c)", "Pass. Group[0]=(0,9) Group[1]=") 1000 runRegexTrial(t, `^\((?>[^()]+|\((?<depth>)|\)(?<-depth>))*(?(depth)(?!))\)$`, 0, "((a(b))c", "Fail.") 1001 1002 runRegexTrial(t, `^\((?>[^()]+|\((?<depth>)|\)(?<-depth>))*(?(depth)(?!))\)$`, 0, "())", "Fail.") 1003 1004 runRegexTrial(t, `(((?<foo>\()[^()]*)+((?<bar-foo>\))[^()]*)+)+(?(foo)(?!))`, 0, "((a(b))c)", 1005 "Pass. Group[0]=(0,9) Group[1]=(0,9) Group[2]=(0,1)(1,2)(3,2) Group[3]=(5,1)(6,2)(8,1) Group[4]= Group[5]=(4,1)(2,4)(1,7)") 1006 runRegexTrial(t, `^(((?<foo>\()[^()]*)+((?<bar-foo>\))[^()]*)+)+(?(foo)(?!))$`, 0, "((a(b))c)", 1007 "Pass. Group[0]=(0,9) Group[1]=(0,9) Group[2]=(0,1)(1,2)(3,2) Group[3]=(5,1)(6,2)(8,1) Group[4]= Group[5]=(4,1)(2,4)(1,7)") 1008 runRegexTrial(t, `(((?<foo>\()[^()]*)+((?<bar-foo>\))[^()]*)+)+(?(foo)(?!))`, 0, "x(a((b)))b)x", 1009 "Pass. Group[0]=(1,9) Group[1]=(1,9) Group[2]=(1,2)(3,1)(4,2) Group[3]=(6,1)(7,1)(8,2) Group[4]= Group[5]=(5,1)(4,3)(2,6)") 1010 runRegexTrial(t, `(((?<foo>\()[^()]*)+((?<bar-foo>\))[^()]*)+)+(?(foo)(?!))`, 0, "x((a((b)))x", 1011 "Pass. Group[0]=(2,9) Group[1]=(2,9) Group[2]=(2,2)(4,1)(5,2) Group[3]=(7,1)(8,1)(9,2) Group[4]= Group[5]=(6,1)(5,3)(3,6)") 1012 runRegexTrial(t, `^(((?<foo>\()[^()]*)+((?<bar-foo>\))[^()]*)+)+(?(foo)(?!))$`, 0, "((a(b))c", "Fail.") 1013 runRegexTrial(t, `^(((?<foo>\()[^()]*)+((?<bar-foo>\))[^()]*)+)+(?(foo)(?!))$`, 0, "((a(b))c))", "Fail.") 1014 runRegexTrial(t, `^(((?<foo>\()[^()]*)+((?<bar-foo>\))[^()]*)+)+(?(foo)(?!))$`, 0, ")(", "Fail.") 1015 runRegexTrial(t, `^(((?<foo>\()[^()]*)+((?<bar-foo>\))[^()]*)+)+(?(foo)(?!))$`, 0, "((a((b))c)", "Fail.") 1016 1017 runRegexTrial(t, `b`, RightToLeft, "babaaa", "Pass. Group[0]=(2,1)") 1018 1019 runRegexTrial(t, `^((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "[n]", "Pass. Group[0]=(0,3) Group[1]=(1,1)") 1020 runRegexTrial(t, `^((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "n", "Pass. Group[0]=(0,1) Group[1]=(0,1)") 1021 runRegexTrial(t, `^((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "n[i]e", "Fail.") 1022 runRegexTrial(t, `^((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "[n", "Fail.") 1023 runRegexTrial(t, `^((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "]n]", "Fail.") 1024 runRegexTrial(t, `^((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, `\[n\]`, "Fail.") 1025 runRegexTrial(t, `^((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, `[n\]`, "Pass. Group[0]=(0,4) Group[1]=(1,2)") 1026 runRegexTrial(t, `^((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, `[n\[]`, "Pass. Group[0]=(0,5) Group[1]=(1,3)") 1027 runRegexTrial(t, `^((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, `[[n]`, "Pass. Group[0]=(0,4) Group[1]=(1,2)") 1028 runRegexTrial(t, `^((\[(?<SCHEMA>[^\]]+)\])|(?<SCHEMA>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "[s] . [n]", "Pass. Group[0]=(0,9) Group[1]=(1,1) Group[2]=(7,1)") 1029 runRegexTrial(t, `^((\[(?<SCHEMA>[^\]]+)\])|(?<SCHEMA>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "[s] . n", "Pass. Group[0]=(0,7) Group[1]=(1,1) Group[2]=(6,1)") 1030 runRegexTrial(t, `^((\[(?<SCHEMA>[^\]]+)\])|(?<SCHEMA>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "s.[ n ]", "Pass. Group[0]=(0,7) Group[1]=(0,1) Group[2]=(3,3)") 1031 runRegexTrial(t, `^((\[(?<SCHEMA>[^\]]+)\])|(?<SCHEMA>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, " . n", "Pass. Group[0]=(0,4) Group[1]=(0,1) Group[2]=(3,1)") 1032 runRegexTrial(t, `^((\[(?<SCHEMA>[^\]]+)\])|(?<SCHEMA>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "s. ", "Pass. Group[0]=(0,3) Group[1]=(0,1) Group[2]=(2,1)") 1033 runRegexTrial(t, `^((\[(?<SCHEMA>[^\]]+)\])|(?<SCHEMA>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "[.]. ", "Pass. Group[0]=(0,5) Group[1]=(1,1) Group[2]=(4,1)") 1034 runRegexTrial(t, `^((\[(?<CATALOG>[^\]]+)\])|(?<CATALOG>[^\.\[\]]+))\s*\.\s*((\[(?<SCHEMA>[^\]]+)\])|(?<SCHEMA>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "[c].[s].[n]", "Pass. Group[0]=(0,11) Group[1]=(1,1) Group[2]=(5,1) Group[3]=(9,1)") 1035 runRegexTrial(t, `^((\[(?<CATALOG>[^\]]+)\])|(?<CATALOG>[^\.\[\]]+))\s*\.\s*((\[(?<SCHEMA>[^\]]+)\])|(?<SCHEMA>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, " c . s . n ", "Pass. Group[0]=(0,11) Group[1]=(0,3) Group[2]=(5,2) Group[3]=(9,2)") 1036 runRegexTrial(t, `^((\[(?<CATALOG>[^\]]+)\])|(?<CATALOG>[^\.\[\]]+))\s*\.\s*((\[(?<SCHEMA>[^\]]+)\])|(?<SCHEMA>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, " . [.] . [ ]", "Pass. Group[0]=(0,12) Group[1]=(0,1) Group[2]=(4,1) Group[3]=(10,1)") 1037 runRegexTrial(t, `^((\[(?<CATALOG>[^\]]+)\])|(?<CATALOG>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "c.n", "Pass. Group[0]=(0,3) Group[1]=(0,1) Group[2]=(2,1)") 1038 runRegexTrial(t, `^((\[(?<CATALOG>[^\]]+)\])|(?<CATALOG>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "[c] .[n]", "Pass. Group[0]=(0,8) Group[1]=(1,1) Group[2]=(6,1)") 1039 runRegexTrial(t, `^((\[(?<CATALOG>[^\]]+)\])|(?<CATALOG>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "c.n.", "Fail.") 1040 runRegexTrial(t, `^((\[(?<SCHEMA>[^\]]+)\])|(?<SCHEMA>[^\.\[\]]+))\s*\.\s*((\[(?<CATALOG>[^\]]+)\])|(?<CATALOG>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "s.c.n", "Pass. Group[0]=(0,5) Group[1]=(0,1) Group[2]=(2,1) Group[3]=(4,1)") 1041 runRegexTrial(t, `^((\[(?<SCHEMA>[^\]]+)\])|(?<SCHEMA>[^\.\[\]]+))\s*\.\s*((\[(?<CATALOG>[^\]]+)\])|(?<CATALOG>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "[s].[c].[n]", "Pass. Group[0]=(0,11) Group[1]=(1,1) Group[2]=(5,1) Group[3]=(9,1)") 1042 runRegexTrial(t, `^((\[(?<SCHEMA>[^\]]+)\])|(?<SCHEMA>[^\.\[\]]+))\s*\.\s*((\[(?<CATALOG>[^\]]+)\])|(?<CATALOG>[^\.\[\]]+))\s*\.\s*((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, Compiled|IgnoreCase|ExplicitCapture, "[s].[c].", "Fail.") 1043 runRegexTrial(t, `^((\[(?<ColName>.+)\])|(?<ColName>\S+))([ ]+(?<Order>ASC|DESC))?$`, IgnoreCase|ExplicitCapture, "[id]]", "Pass. Group[0]=(0,5) Group[1]=(1,3) Group[2]=") 1044 runRegexTrial(t, `a{1,2147483647}`, 0, "a", "Pass. Group[0]=(0,1)") 1045 runRegexTrial(t, `^((\[(?<NAME>[^\]]+)\])|(?<NAME>[^\.\[\]]+))$`, 0, "[a]", "Pass. Group[0]=(0,3) Group[1]=(0,3) Group[2]=(0,3) Group[3]=(1,1)") 1046 1047} 1048 1049func runRegexTrial(t *testing.T, pattern string, options RegexOptions, input, expected string) { 1050 result := "" 1051 1052 re, err := Compile(pattern, options) 1053 if err != nil { 1054 if expected != "Error." { 1055 t.Errorf("Compiling pattern '%v' with options '%v' -- expected '%v' got '%v'", pattern, options, expected, err.Error()) 1056 } 1057 return 1058 } 1059 1060 groupNums := re.GetGroupNumbers() 1061 m, err := re.FindStringMatch(input) 1062 if err != nil { 1063 result = fmt.Sprintf("Error. %v", err.Error()) 1064 } else if m != nil { 1065 result = "Pass." 1066 for i, group := range m.Groups() { 1067 gid := groupNums[i] 1068 1069 result += fmt.Sprintf(" Group[%v]=", gid) 1070 for _, cp := range group.Captures { 1071 result += fmt.Sprintf("(%v,%v)", cp.Index, cp.Length) 1072 } 1073 } 1074 } else { 1075 result = "Fail." 1076 } 1077 1078 if expected != result { 1079 t.Errorf("Matching input '%v' against pattern '%v' with options '%v' -- expected '%v' got '%v'", input, pattern, options, expected, result) 1080 } 1081} 1082