diff options
Diffstat (limited to 'vendor/regex-automata/data/tests/fowler')
-rw-r--r-- | vendor/regex-automata/data/tests/fowler/LICENSE | 19 | ||||
-rw-r--r-- | vendor/regex-automata/data/tests/fowler/README | 23 | ||||
-rw-r--r-- | vendor/regex-automata/data/tests/fowler/basic.dat | 221 | ||||
-rw-r--r-- | vendor/regex-automata/data/tests/fowler/basic.toml | 1428 | ||||
-rwxr-xr-x | vendor/regex-automata/data/tests/fowler/fowler-to-toml | 76 | ||||
-rw-r--r-- | vendor/regex-automata/data/tests/fowler/nullsubexpr.dat | 79 | ||||
-rw-r--r-- | vendor/regex-automata/data/tests/fowler/nullsubexpr.toml | 350 | ||||
-rw-r--r-- | vendor/regex-automata/data/tests/fowler/repetition-long.dat | 85 | ||||
-rw-r--r-- | vendor/regex-automata/data/tests/fowler/repetition-long.toml | 294 | ||||
-rw-r--r-- | vendor/regex-automata/data/tests/fowler/repetition.dat | 83 | ||||
-rw-r--r-- | vendor/regex-automata/data/tests/fowler/repetition.toml | 343 |
11 files changed, 3001 insertions, 0 deletions
diff --git a/vendor/regex-automata/data/tests/fowler/LICENSE b/vendor/regex-automata/data/tests/fowler/LICENSE new file mode 100644 index 000000000..f47dbf4c4 --- /dev/null +++ b/vendor/regex-automata/data/tests/fowler/LICENSE @@ -0,0 +1,19 @@ +The following license covers testregex.c and all associated test data. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of THIS SOFTWARE FILE (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished to do +so, subject to the following disclaimer: + +THIS SOFTWARE IS PROVIDED BY AT&T ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL AT&T BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/regex-automata/data/tests/fowler/README b/vendor/regex-automata/data/tests/fowler/README new file mode 100644 index 000000000..55507f03f --- /dev/null +++ b/vendor/regex-automata/data/tests/fowler/README @@ -0,0 +1,23 @@ +Test data was taken from the Go distribution, which was in turn taken from the +testregex test suite: + + http://www2.research.att.com/~astopen/testregex/testregex.html + +Unfortunately, the above link is now dead, but the test data lives on. + +The LICENSE in this directory corresponds to the LICENSE that the data was +originally released under. + +The tests themselves were modified for RE2/Go. A couple were modified further +by me (Andrew Gallant) (only in repetition.dat) so that RE2/Go would pass them. +(Yes, it seems like RE2/Go includes failing test cases.) This may or may not +have been a bad idea, but I think being consistent with an established Regex +library is worth something. + +After some number of years, these tests were transformed into a JSON format +using the fowler-to-json script in this directory, e.g., + + ./fowler-to-json basic.dat > basic.json + +which brings them into a sensible structured format in which other tests can +be written. diff --git a/vendor/regex-automata/data/tests/fowler/basic.dat b/vendor/regex-automata/data/tests/fowler/basic.dat new file mode 100644 index 000000000..e55efaeec --- /dev/null +++ b/vendor/regex-automata/data/tests/fowler/basic.dat @@ -0,0 +1,221 @@ +NOTE all standard compliant implementations should pass these : 2002-05-31 + +BE abracadabra$ abracadabracadabra (7,18) +BE a...b abababbb (2,7) +BE XXXXXX ..XXXXXX (2,8) +E \) () (1,2) +BE a] a]a (0,2) +B } } (0,1) +E \} } (0,1) +BE \] ] (0,1) +B ] ] (0,1) +E ] ] (0,1) +B { { (0,1) +B } } (0,1) +BE ^a ax (0,1) +BE \^a a^a (1,3) +BE a\^ a^ (0,2) +BE a$ aa (1,2) +BE a\$ a$ (0,2) +BE ^$ NULL (0,0) +E $^ NULL (0,0) +E a($) aa (1,2)(2,2) +E a*(^a) aa (0,1)(0,1) +E (..)*(...)* a (0,0) +E (..)*(...)* abcd (0,4)(2,4) +E (ab|a)(bc|c) abc (0,3)(0,2)(2,3) +E (ab)c|abc abc (0,3)(0,2) +E a{0}b ab (1,2) +E (a*)(b?)(b+)b{3} aaabbbbbbb (0,10)(0,3)(3,4)(4,7) +E (a*)(b{0,1})(b{1,})b{3} aaabbbbbbb (0,10)(0,3)(3,4)(4,7) +E a{9876543210} NULL BADBR +E ((a|a)|a) a (0,1)(0,1)(0,1) +E (a*)(a|aa) aaaa (0,4)(0,3)(3,4) +E a*(a.|aa) aaaa (0,4)(2,4) +E a(b)|c(d)|a(e)f aef (0,3)(?,?)(?,?)(1,2) +E (a|b)?.* b (0,1)(0,1) +E (a|b)c|a(b|c) ac (0,2)(0,1) +E (a|b)c|a(b|c) ab (0,2)(?,?)(1,2) +E (a|b)*c|(a|ab)*c abc (0,3)(1,2) +E (a|b)*c|(a|ab)*c xc (1,2) +E (.a|.b).*|.*(.a|.b) xa (0,2)(0,2) +E a?(ab|ba)ab abab (0,4)(0,2) +E a?(ac{0}b|ba)ab abab (0,4)(0,2) +E ab|abab abbabab (0,2) +E aba|bab|bba baaabbbaba (5,8) +E aba|bab baaabbbaba (6,9) +E (aa|aaa)*|(a|aaaaa) aa (0,2)(0,2) +E (a.|.a.)*|(a|.a...) aa (0,2)(0,2) +E ab|a xabc (1,3) +E ab|a xxabc (2,4) +Ei (Ab|cD)* aBcD (0,4)(2,4) +BE [^-] --a (2,3) +BE [a-]* --a (0,3) +BE [a-m-]* --amoma-- (0,4) +E :::1:::0:|:::1:1:0: :::0:::1:::1:::0: (8,17) +E :::1:::0:|:::1:1:1: :::0:::1:::1:::0: (8,17) +{E [[:upper:]] A (0,1) [[<element>]] not supported +E [[:lower:]]+ `az{ (1,3) +E [[:upper:]]+ @AZ[ (1,3) +# No collation in Go +#BE [[-]] [[-]] (2,4) +#BE [[.NIL.]] NULL ECOLLATE +#BE [[=aleph=]] NULL ECOLLATE +} +BE$ \n \n (0,1) +BEn$ \n \n (0,1) +BE$ [^a] \n (0,1) +BE$ \na \na (0,2) +E (a)(b)(c) abc (0,3)(0,1)(1,2)(2,3) +BE xxx xxx (0,3) +E1 (^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$) feb 6, (0,6) +E1 (^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$) 2/7 (0,3) +E1 (^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$) feb 1,Feb 6 (5,11) +E3 ((((((((((((((((((((((((((((((x)))))))))))))))))))))))))))))) x (0,1)(0,1)(0,1) +E3 ((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))* xx (0,2)(1,2)(1,2) +E a?(ab|ba)* ababababababababababababababababababababababababababababababababababababababababa (0,81)(79,81) +E abaa|abbaa|abbbaa|abbbbaa ababbabbbabbbabbbbabbbbaa (18,25) +E abaa|abbaa|abbbaa|abbbbaa ababbabbbabbbabbbbabaa (18,22) +E aaac|aabc|abac|abbc|baac|babc|bbac|bbbc baaabbbabac (7,11) +BE$ .* \x01\x7f (0,2) +E aaaa|bbbb|cccc|ddddd|eeeeee|fffffff|gggg|hhhh|iiiii|jjjjj|kkkkk|llll XaaaXbbbXcccXdddXeeeXfffXgggXhhhXiiiXjjjXkkkXlllXcbaXaaaa (53,57) +L aaaa\nbbbb\ncccc\nddddd\neeeeee\nfffffff\ngggg\nhhhh\niiiii\njjjjj\nkkkkk\nllll XaaaXbbbXcccXdddXeeeXfffXgggXhhhXiiiXjjjXkkkXlllXcbaXaaaa NOMATCH +E a*a*a*a*a*b aaaaaaaaab (0,10) +BE ^ NULL (0,0) +BE $ NULL (0,0) +BE ^$ NULL (0,0) +BE ^a$ a (0,1) +BE abc abc (0,3) +BE abc xabcy (1,4) +BE abc ababc (2,5) +BE ab*c abc (0,3) +BE ab*bc abc (0,3) +BE ab*bc abbc (0,4) +BE ab*bc abbbbc (0,6) +E ab+bc abbc (0,4) +E ab+bc abbbbc (0,6) +E ab?bc abbc (0,4) +E ab?bc abc (0,3) +E ab?c abc (0,3) +BE ^abc$ abc (0,3) +BE ^abc abcc (0,3) +BE abc$ aabc (1,4) +BE ^ abc (0,0) +BE $ abc (3,3) +BE a.c abc (0,3) +BE a.c axc (0,3) +BE a.*c axyzc (0,5) +BE a[bc]d abd (0,3) +BE a[b-d]e ace (0,3) +BE a[b-d] aac (1,3) +BE a[-b] a- (0,2) +BE a[b-] a- (0,2) +BE a] a] (0,2) +BE a[]]b a]b (0,3) +BE a[^bc]d aed (0,3) +BE a[^-b]c adc (0,3) +BE a[^]b]c adc (0,3) +E ab|cd abc (0,2) +E ab|cd abcd (0,2) +E a\(b a(b (0,3) +E a\(*b ab (0,2) +E a\(*b a((b (0,4) +E ((a)) abc (0,1)(0,1)(0,1) +E (a)b(c) abc (0,3)(0,1)(2,3) +E a+b+c aabbabc (4,7) +E a* aaa (0,3) +#E (a*)* - (0,0)(0,0) +E (a*)* - (0,0)(?,?) RE2/Go +E (a*)+ - (0,0)(0,0) +#E (a*|b)* - (0,0)(0,0) +E (a*|b)* - (0,0)(?,?) RE2/Go +E (a+|b)* ab (0,2)(1,2) +E (a+|b)+ ab (0,2)(1,2) +E (a+|b)? ab (0,1)(0,1) +BE [^ab]* cde (0,3) +#E (^)* - (0,0)(0,0) +E (^)* - (0,0)(?,?) RE2/Go +BE a* NULL (0,0) +E ([abc])*d abbbcd (0,6)(4,5) +E ([abc])*bcd abcd (0,4)(0,1) +E a|b|c|d|e e (0,1) +E (a|b|c|d|e)f ef (0,2)(0,1) +#E ((a*|b))* - (0,0)(0,0)(0,0) +E ((a*|b))* - (0,0)(?,?)(?,?) RE2/Go +BE abcd*efg abcdefg (0,7) +BE ab* xabyabbbz (1,3) +BE ab* xayabbbz (1,2) +E (ab|cd)e abcde (2,5)(2,4) +BE [abhgefdc]ij hij (0,3) +E (a|b)c*d abcd (1,4)(1,2) +E (ab|ab*)bc abc (0,3)(0,1) +E a([bc]*)c* abc (0,3)(1,3) +E a([bc]*)(c*d) abcd (0,4)(1,3)(3,4) +E a([bc]+)(c*d) abcd (0,4)(1,3)(3,4) +E a([bc]*)(c+d) abcd (0,4)(1,2)(2,4) +E a[bcd]*dcdcde adcdcde (0,7) +E (ab|a)b*c abc (0,3)(0,2) +E ((a)(b)c)(d) abcd (0,4)(0,3)(0,1)(1,2)(3,4) +BE [A-Za-z_][A-Za-z0-9_]* alpha (0,5) +E ^a(bc+|b[eh])g|.h$ abh (1,3) +E (bc+d$|ef*g.|h?i(j|k)) effgz (0,5)(0,5) +E (bc+d$|ef*g.|h?i(j|k)) ij (0,2)(0,2)(1,2) +E (bc+d$|ef*g.|h?i(j|k)) reffgz (1,6)(1,6) +E (((((((((a))))))))) a (0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1) +BE multiple words multiple words yeah (0,14) +E (.*)c(.*) abcde (0,5)(0,2)(3,5) +BE abcd abcd (0,4) +E a(bc)d abcd (0,4)(1,3) +E a[-]?c ac (0,3) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Qaddafi (0,15)(?,?)(10,12) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Mo'ammar Gadhafi (0,16)(?,?)(11,13) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Kaddafi (0,15)(?,?)(10,12) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Qadhafi (0,15)(?,?)(10,12) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Gadafi (0,14)(?,?)(10,11) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Mu'ammar Qadafi (0,15)(?,?)(11,12) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Moamar Gaddafi (0,14)(?,?)(9,11) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Mu'ammar Qadhdhafi (0,18)(?,?)(13,15) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Khaddafi (0,16)(?,?)(11,13) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Ghaddafy (0,16)(?,?)(11,13) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Ghadafi (0,15)(?,?)(11,12) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Ghaddafi (0,16)(?,?)(11,13) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muamar Kaddafi (0,14)(?,?)(9,11) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Quathafi (0,16)(?,?)(11,13) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar Gheddafi (0,16)(?,?)(11,13) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Moammar Khadafy (0,15)(?,?)(11,12) +E M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Moammar Qudhafi (0,15)(?,?)(10,12) +E a+(b|c)*d+ aabcdd (0,6)(3,4) +E ^.+$ vivi (0,4) +E ^(.+)$ vivi (0,4)(0,4) +E ^([^!.]+).att.com!(.+)$ gryphon.att.com!eby (0,19)(0,7)(16,19) +E ^([^!]+!)?([^!]+)$ bas (0,3)(?,?)(0,3) +E ^([^!]+!)?([^!]+)$ bar!bas (0,7)(0,4)(4,7) +E ^([^!]+!)?([^!]+)$ foo!bas (0,7)(0,4)(4,7) +E ^.+!([^!]+!)([^!]+)$ foo!bar!bas (0,11)(4,8)(8,11) +E ((foo)|(bar))!bas bar!bas (0,7)(0,3)(?,?)(0,3) +E ((foo)|(bar))!bas foo!bar!bas (4,11)(4,7)(?,?)(4,7) +E ((foo)|(bar))!bas foo!bas (0,7)(0,3)(0,3) +E ((foo)|bar)!bas bar!bas (0,7)(0,3) +E ((foo)|bar)!bas foo!bar!bas (4,11)(4,7) +E ((foo)|bar)!bas foo!bas (0,7)(0,3)(0,3) +E (foo|(bar))!bas bar!bas (0,7)(0,3)(0,3) +E (foo|(bar))!bas foo!bar!bas (4,11)(4,7)(4,7) +E (foo|(bar))!bas foo!bas (0,7)(0,3) +E (foo|bar)!bas bar!bas (0,7)(0,3) +E (foo|bar)!bas foo!bar!bas (4,11)(4,7) +E (foo|bar)!bas foo!bas (0,7)(0,3) +E ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ foo!bar!bas (0,11)(0,11)(?,?)(?,?)(4,8)(8,11) +E ^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$ bas (0,3)(?,?)(0,3) +E ^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$ bar!bas (0,7)(0,4)(4,7) +E ^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$ foo!bar!bas (0,11)(?,?)(?,?)(4,8)(8,11) +E ^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$ foo!bas (0,7)(0,4)(4,7) +E ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ bas (0,3)(0,3)(?,?)(0,3) +E ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ bar!bas (0,7)(0,7)(0,4)(4,7) +E ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ foo!bar!bas (0,11)(0,11)(?,?)(?,?)(4,8)(8,11) +E ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ foo!bas (0,7)(0,7)(0,4)(4,7) +E .*(/XXX).* /XXX (0,4)(0,4) +E .*(\\XXX).* \XXX (0,4)(0,4) +E \\XXX \XXX (0,4) +E .*(/000).* /000 (0,4)(0,4) +E .*(\\000).* \000 (0,4)(0,4) +E \\000 \000 (0,4) diff --git a/vendor/regex-automata/data/tests/fowler/basic.toml b/vendor/regex-automata/data/tests/fowler/basic.toml new file mode 100644 index 000000000..3eeebd799 --- /dev/null +++ b/vendor/regex-automata/data/tests/fowler/basic.toml @@ -0,0 +1,1428 @@ +[[tests]] +name = "basic3" +options = ['escaped'] +pattern = '''abracadabra$''' +input = '''abracadabracadabra''' +matches = [[7, 18]] + +[[tests]] +name = "basic4" +options = ['escaped'] +pattern = '''a...b''' +input = '''abababbb''' +matches = [[2, 7]] + +[[tests]] +name = "basic5" +options = ['escaped'] +pattern = '''XXXXXX''' +input = '''..XXXXXX''' +matches = [[2, 8]] + +[[tests]] +name = "basic6" +options = ['escaped'] +pattern = '''\)''' +input = '''()''' +matches = [[1, 2]] + +[[tests]] +name = "basic7" +options = ['escaped'] +pattern = '''a]''' +input = '''a]a''' +matches = [[0, 2]] + +[[tests]] +name = "basic9" +options = ['escaped'] +pattern = '''\}''' +input = '''}''' +matches = [[0, 1]] + +[[tests]] +name = "basic10" +options = ['escaped'] +pattern = '''\]''' +input = ''']''' +matches = [[0, 1]] + +[[tests]] +name = "basic12" +options = ['escaped'] +pattern = ''']''' +input = ''']''' +matches = [[0, 1]] + +[[tests]] +name = "basic15" +options = ['escaped'] +pattern = '''^a''' +input = '''ax''' +matches = [[0, 1]] + +[[tests]] +name = "basic16" +options = ['escaped'] +pattern = '''\^a''' +input = '''a^a''' +matches = [[1, 3]] + +[[tests]] +name = "basic17" +options = ['escaped'] +pattern = '''a\^''' +input = '''a^''' +matches = [[0, 2]] + +[[tests]] +name = "basic18" +options = ['escaped'] +pattern = '''a$''' +input = '''aa''' +matches = [[1, 2]] + +[[tests]] +name = "basic19" +options = ['escaped'] +pattern = '''a\$''' +input = '''a$''' +matches = [[0, 2]] + +[[tests]] +name = "basic20" +options = ['escaped'] +pattern = '''^$''' +input = '''''' +matches = [[0, 0]] + +[[tests]] +name = "basic21" +options = ['escaped'] +pattern = '''$^''' +input = '''''' +matches = [[0, 0]] + +[[tests]] +name = "basic22" +options = ['escaped'] +pattern = '''a($)''' +input = '''aa''' +matches = [[1, 2]] + +[[tests]] +name = "basic23" +options = ['escaped'] +pattern = '''a*(^a)''' +input = '''aa''' +matches = [[0, 1]] + +[[tests]] +name = "basic24" +options = ['escaped'] +pattern = '''(..)*(...)*''' +input = '''a''' +matches = [[0, 0]] + +[[tests]] +name = "basic25" +options = ['escaped'] +pattern = '''(..)*(...)*''' +input = '''abcd''' +matches = [[0, 4]] + +[[tests]] +name = "basic26" +options = ['escaped'] +pattern = '''(ab|a)(bc|c)''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic27" +options = ['escaped'] +pattern = '''(ab)c|abc''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic28" +options = ['escaped'] +pattern = '''a{0}b''' +input = '''ab''' +matches = [[1, 2]] + +[[tests]] +name = "basic29" +options = ['escaped'] +pattern = '''(a*)(b?)(b+)b{3}''' +input = '''aaabbbbbbb''' +matches = [[0, 10]] + +[[tests]] +name = "basic30" +options = ['escaped'] +pattern = '''(a*)(b{0,1})(b{1,})b{3}''' +input = '''aaabbbbbbb''' +matches = [[0, 10]] + +[[tests]] +name = "basic32" +options = ['escaped'] +pattern = '''((a|a)|a)''' +input = '''a''' +matches = [[0, 1]] + +[[tests]] +name = "basic33" +options = ['escaped'] +pattern = '''(a*)(a|aa)''' +input = '''aaaa''' +matches = [[0, 4]] + +[[tests]] +name = "basic34" +options = ['escaped'] +pattern = '''a*(a.|aa)''' +input = '''aaaa''' +matches = [[0, 4]] + +[[tests]] +name = "basic35" +options = ['escaped'] +pattern = '''a(b)|c(d)|a(e)f''' +input = '''aef''' +matches = [[0, 3]] + +[[tests]] +name = "basic36" +options = ['escaped'] +pattern = '''(a|b)?.*''' +input = '''b''' +matches = [[0, 1]] + +[[tests]] +name = "basic37" +options = ['escaped'] +pattern = '''(a|b)c|a(b|c)''' +input = '''ac''' +matches = [[0, 2]] + +[[tests]] +name = "basic38" +options = ['escaped'] +pattern = '''(a|b)c|a(b|c)''' +input = '''ab''' +matches = [[0, 2]] + +[[tests]] +name = "basic39" +options = ['escaped'] +pattern = '''(a|b)*c|(a|ab)*c''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic40" +options = ['escaped'] +pattern = '''(a|b)*c|(a|ab)*c''' +input = '''xc''' +matches = [[1, 2]] + +[[tests]] +name = "basic41" +options = ['escaped'] +pattern = '''(.a|.b).*|.*(.a|.b)''' +input = '''xa''' +matches = [[0, 2]] + +[[tests]] +name = "basic42" +options = ['escaped'] +pattern = '''a?(ab|ba)ab''' +input = '''abab''' +matches = [[0, 4]] + +[[tests]] +name = "basic43" +options = ['escaped'] +pattern = '''a?(ac{0}b|ba)ab''' +input = '''abab''' +matches = [[0, 4]] + +[[tests]] +name = "basic44" +options = ['escaped'] +pattern = '''ab|abab''' +input = '''abbabab''' +matches = [[0, 2]] + +[[tests]] +name = "basic45" +options = ['escaped'] +pattern = '''aba|bab|bba''' +input = '''baaabbbaba''' +matches = [[5, 8]] + +[[tests]] +name = "basic46" +options = ['escaped'] +pattern = '''aba|bab''' +input = '''baaabbbaba''' +matches = [[6, 9]] + +[[tests]] +name = "basic47" +options = ['escaped'] +pattern = '''(aa|aaa)*|(a|aaaaa)''' +input = '''aa''' +matches = [[0, 2]] + +[[tests]] +name = "basic48" +options = ['escaped'] +pattern = '''(a.|.a.)*|(a|.a...)''' +input = '''aa''' +matches = [[0, 2]] + +[[tests]] +name = "basic49" +options = ['escaped'] +pattern = '''ab|a''' +input = '''xabc''' +matches = [[1, 3]] + +[[tests]] +name = "basic50" +options = ['escaped'] +pattern = '''ab|a''' +input = '''xxabc''' +matches = [[2, 4]] + +[[tests]] +name = "basic51" +options = ['escaped', 'case-insensitive'] +pattern = '''(Ab|cD)*''' +input = '''aBcD''' +matches = [[0, 4]] + +[[tests]] +name = "basic52" +options = ['escaped'] +pattern = '''[^-]''' +input = '''--a''' +matches = [[2, 3]] + +[[tests]] +name = "basic53" +options = ['escaped'] +pattern = '''[a-]*''' +input = '''--a''' +matches = [[0, 3]] + +[[tests]] +name = "basic54" +options = ['escaped'] +pattern = '''[a-m-]*''' +input = '''--amoma--''' +matches = [[0, 4]] + +[[tests]] +name = "basic55" +options = ['escaped'] +pattern = ''':::1:::0:|:::1:1:0:''' +input = ''':::0:::1:::1:::0:''' +matches = [[8, 17]] + +[[tests]] +name = "basic56" +options = ['escaped'] +pattern = ''':::1:::0:|:::1:1:1:''' +input = ''':::0:::1:::1:::0:''' +matches = [[8, 17]] + +[[tests]] +name = "basic57" +options = ['escaped'] +pattern = '''[[:upper:]]''' +input = '''A''' +matches = [[0, 1]] + +[[tests]] +name = "basic58" +options = ['escaped'] +pattern = '''[[:lower:]]+''' +input = '''`az{''' +matches = [[1, 3]] + +[[tests]] +name = "basic59" +options = ['escaped'] +pattern = '''[[:upper:]]+''' +input = '''@AZ[''' +matches = [[1, 3]] + +[[tests]] +name = "basic65" +options = ['escaped'] +pattern = '''\n''' +input = '''\n''' +matches = [[0, 1]] + +[[tests]] +name = "basic66" +options = ['escaped'] +pattern = '''\n''' +input = '''\n''' +matches = [[0, 1]] + +[[tests]] +name = "basic67" +options = ['escaped'] +pattern = '''[^a]''' +input = '''\n''' +matches = [[0, 1]] + +[[tests]] +name = "basic68" +options = ['escaped'] +pattern = '''\na''' +input = '''\na''' +matches = [[0, 2]] + +[[tests]] +name = "basic69" +options = ['escaped'] +pattern = '''(a)(b)(c)''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic70" +options = ['escaped'] +pattern = '''xxx''' +input = '''xxx''' +matches = [[0, 3]] + +[[tests]] +name = "basic71" +options = ['escaped'] +pattern = '''(^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$)''' +input = '''feb 6,''' +matches = [[0, 6]] + +[[tests]] +name = "basic72" +options = ['escaped'] +pattern = '''(^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$)''' +input = '''2/7''' +matches = [[0, 3]] + +[[tests]] +name = "basic73" +options = ['escaped'] +pattern = '''(^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$)''' +input = '''feb 1,Feb 6''' +matches = [[5, 11]] + +[[tests]] +name = "basic74" +options = ['escaped'] +pattern = '''((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))''' +input = '''x''' +matches = [[0, 1]] + +[[tests]] +name = "basic75" +options = ['escaped'] +pattern = '''((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))*''' +input = '''xx''' +matches = [[0, 2]] + +[[tests]] +name = "basic76" +options = ['escaped'] +pattern = '''a?(ab|ba)*''' +input = '''ababababababababababababababababababababababababababababababababababababababababa''' +matches = [[0, 81]] + +[[tests]] +name = "basic77" +options = ['escaped'] +pattern = '''abaa|abbaa|abbbaa|abbbbaa''' +input = '''ababbabbbabbbabbbbabbbbaa''' +matches = [[18, 25]] + +[[tests]] +name = "basic78" +options = ['escaped'] +pattern = '''abaa|abbaa|abbbaa|abbbbaa''' +input = '''ababbabbbabbbabbbbabaa''' +matches = [[18, 22]] + +[[tests]] +name = "basic79" +options = ['escaped'] +pattern = '''aaac|aabc|abac|abbc|baac|babc|bbac|bbbc''' +input = '''baaabbbabac''' +matches = [[7, 11]] + +[[tests]] +name = "basic80" +options = ['escaped'] +pattern = '''.*''' +input = '''\x01\x7f''' +matches = [[0, 2]] + +[[tests]] +name = "basic81" +options = ['escaped'] +pattern = '''aaaa|bbbb|cccc|ddddd|eeeeee|fffffff|gggg|hhhh|iiiii|jjjjj|kkkkk|llll''' +input = '''XaaaXbbbXcccXdddXeeeXfffXgggXhhhXiiiXjjjXkkkXlllXcbaXaaaa''' +matches = [[53, 57]] + +[[tests]] +name = "basic83" +options = ['escaped'] +pattern = '''a*a*a*a*a*b''' +input = '''aaaaaaaaab''' +matches = [[0, 10]] + +[[tests]] +name = "basic84" +options = ['escaped'] +pattern = '''^''' +input = '''''' +matches = [[0, 0]] + +[[tests]] +name = "basic85" +options = ['escaped'] +pattern = '''$''' +input = '''''' +matches = [[0, 0]] + +[[tests]] +name = "basic86" +options = ['escaped'] +pattern = '''^$''' +input = '''''' +matches = [[0, 0]] + +[[tests]] +name = "basic87" +options = ['escaped'] +pattern = '''^a$''' +input = '''a''' +matches = [[0, 1]] + +[[tests]] +name = "basic88" +options = ['escaped'] +pattern = '''abc''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic89" +options = ['escaped'] +pattern = '''abc''' +input = '''xabcy''' +matches = [[1, 4]] + +[[tests]] +name = "basic90" +options = ['escaped'] +pattern = '''abc''' +input = '''ababc''' +matches = [[2, 5]] + +[[tests]] +name = "basic91" +options = ['escaped'] +pattern = '''ab*c''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic92" +options = ['escaped'] +pattern = '''ab*bc''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic93" +options = ['escaped'] +pattern = '''ab*bc''' +input = '''abbc''' +matches = [[0, 4]] + +[[tests]] +name = "basic94" +options = ['escaped'] +pattern = '''ab*bc''' +input = '''abbbbc''' +matches = [[0, 6]] + +[[tests]] +name = "basic95" +options = ['escaped'] +pattern = '''ab+bc''' +input = '''abbc''' +matches = [[0, 4]] + +[[tests]] +name = "basic96" +options = ['escaped'] +pattern = '''ab+bc''' +input = '''abbbbc''' +matches = [[0, 6]] + +[[tests]] +name = "basic97" +options = ['escaped'] +pattern = '''ab?bc''' +input = '''abbc''' +matches = [[0, 4]] + +[[tests]] +name = "basic98" +options = ['escaped'] +pattern = '''ab?bc''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic99" +options = ['escaped'] +pattern = '''ab?c''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic100" +options = ['escaped'] +pattern = '''^abc$''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic101" +options = ['escaped'] +pattern = '''^abc''' +input = '''abcc''' +matches = [[0, 3]] + +[[tests]] +name = "basic102" +options = ['escaped'] +pattern = '''abc$''' +input = '''aabc''' +matches = [[1, 4]] + +[[tests]] +name = "basic103" +options = ['escaped'] +pattern = '''^''' +input = '''abc''' +matches = [[0, 0]] + +[[tests]] +name = "basic104" +options = ['escaped'] +pattern = '''$''' +input = '''abc''' +matches = [[3, 3]] + +[[tests]] +name = "basic105" +options = ['escaped'] +pattern = '''a.c''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic106" +options = ['escaped'] +pattern = '''a.c''' +input = '''axc''' +matches = [[0, 3]] + +[[tests]] +name = "basic107" +options = ['escaped'] +pattern = '''a.*c''' +input = '''axyzc''' +matches = [[0, 5]] + +[[tests]] +name = "basic108" +options = ['escaped'] +pattern = '''a[bc]d''' +input = '''abd''' +matches = [[0, 3]] + +[[tests]] +name = "basic109" +options = ['escaped'] +pattern = '''a[b-d]e''' +input = '''ace''' +matches = [[0, 3]] + +[[tests]] +name = "basic110" +options = ['escaped'] +pattern = '''a[b-d]''' +input = '''aac''' +matches = [[1, 3]] + +[[tests]] +name = "basic111" +options = ['escaped'] +pattern = '''a[-b]''' +input = '''a-''' +matches = [[0, 2]] + +[[tests]] +name = "basic112" +options = ['escaped'] +pattern = '''a[b-]''' +input = '''a-''' +matches = [[0, 2]] + +[[tests]] +name = "basic113" +options = ['escaped'] +pattern = '''a]''' +input = '''a]''' +matches = [[0, 2]] + +[[tests]] +name = "basic114" +options = ['escaped'] +pattern = '''a[]]b''' +input = '''a]b''' +matches = [[0, 3]] + +[[tests]] +name = "basic115" +options = ['escaped'] +pattern = '''a[^bc]d''' +input = '''aed''' +matches = [[0, 3]] + +[[tests]] +name = "basic116" +options = ['escaped'] +pattern = '''a[^-b]c''' +input = '''adc''' +matches = [[0, 3]] + +[[tests]] +name = "basic117" +options = ['escaped'] +pattern = '''a[^]b]c''' +input = '''adc''' +matches = [[0, 3]] + +[[tests]] +name = "basic118" +options = ['escaped'] +pattern = '''ab|cd''' +input = '''abc''' +matches = [[0, 2]] + +[[tests]] +name = "basic119" +options = ['escaped'] +pattern = '''ab|cd''' +input = '''abcd''' +matches = [[0, 2]] + +[[tests]] +name = "basic120" +options = ['escaped'] +pattern = '''a\(b''' +input = '''a(b''' +matches = [[0, 3]] + +[[tests]] +name = "basic121" +options = ['escaped'] +pattern = '''a\(*b''' +input = '''ab''' +matches = [[0, 2]] + +[[tests]] +name = "basic122" +options = ['escaped'] +pattern = '''a\(*b''' +input = '''a((b''' +matches = [[0, 4]] + +[[tests]] +name = "basic123" +options = ['escaped'] +pattern = '''((a))''' +input = '''abc''' +matches = [[0, 1]] + +[[tests]] +name = "basic124" +options = ['escaped'] +pattern = '''(a)b(c)''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic125" +options = ['escaped'] +pattern = '''a+b+c''' +input = '''aabbabc''' +matches = [[4, 7]] + +[[tests]] +name = "basic126" +options = ['escaped'] +pattern = '''a*''' +input = '''aaa''' +matches = [[0, 3]] + +[[tests]] +name = "basic128" +options = ['escaped'] +pattern = '''(a*)*''' +input = '''-''' +matches = [[0, 0]] + +[[tests]] +name = "basic129" +options = ['escaped'] +pattern = '''(a*)+''' +input = '''-''' +matches = [[0, 0]] + +[[tests]] +name = "basic131" +options = ['escaped'] +pattern = '''(a*|b)*''' +input = '''-''' +matches = [[0, 0]] + +[[tests]] +name = "basic132" +options = ['escaped'] +pattern = '''(a+|b)*''' +input = '''ab''' +matches = [[0, 2]] + +[[tests]] +name = "basic133" +options = ['escaped'] +pattern = '''(a+|b)+''' +input = '''ab''' +matches = [[0, 2]] + +[[tests]] +name = "basic134" +options = ['escaped'] +pattern = '''(a+|b)?''' +input = '''ab''' +matches = [[0, 1]] + +[[tests]] +name = "basic135" +options = ['escaped'] +pattern = '''[^ab]*''' +input = '''cde''' +matches = [[0, 3]] + +[[tests]] +name = "basic137" +options = ['escaped'] +pattern = '''(^)*''' +input = '''-''' +matches = [[0, 0]] + +[[tests]] +name = "basic138" +options = ['escaped'] +pattern = '''a*''' +input = '''''' +matches = [[0, 0]] + +[[tests]] +name = "basic139" +options = ['escaped'] +pattern = '''([abc])*d''' +input = '''abbbcd''' +matches = [[0, 6]] + +[[tests]] +name = "basic140" +options = ['escaped'] +pattern = '''([abc])*bcd''' +input = '''abcd''' +matches = [[0, 4]] + +[[tests]] +name = "basic141" +options = ['escaped'] +pattern = '''a|b|c|d|e''' +input = '''e''' +matches = [[0, 1]] + +[[tests]] +name = "basic142" +options = ['escaped'] +pattern = '''(a|b|c|d|e)f''' +input = '''ef''' +matches = [[0, 2]] + +[[tests]] +name = "basic144" +options = ['escaped'] +pattern = '''((a*|b))*''' +input = '''-''' +matches = [[0, 0]] + +[[tests]] +name = "basic145" +options = ['escaped'] +pattern = '''abcd*efg''' +input = '''abcdefg''' +matches = [[0, 7]] + +[[tests]] +name = "basic146" +options = ['escaped'] +pattern = '''ab*''' +input = '''xabyabbbz''' +matches = [[1, 3]] + +[[tests]] +name = "basic147" +options = ['escaped'] +pattern = '''ab*''' +input = '''xayabbbz''' +matches = [[1, 2]] + +[[tests]] +name = "basic148" +options = ['escaped'] +pattern = '''(ab|cd)e''' +input = '''abcde''' +matches = [[2, 5]] + +[[tests]] +name = "basic149" +options = ['escaped'] +pattern = '''[abhgefdc]ij''' +input = '''hij''' +matches = [[0, 3]] + +[[tests]] +name = "basic150" +options = ['escaped'] +pattern = '''(a|b)c*d''' +input = '''abcd''' +matches = [[1, 4]] + +[[tests]] +name = "basic151" +options = ['escaped'] +pattern = '''(ab|ab*)bc''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic152" +options = ['escaped'] +pattern = '''a([bc]*)c*''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic153" +options = ['escaped'] +pattern = '''a([bc]*)(c*d)''' +input = '''abcd''' +matches = [[0, 4]] + +[[tests]] +name = "basic154" +options = ['escaped'] +pattern = '''a([bc]+)(c*d)''' +input = '''abcd''' +matches = [[0, 4]] + +[[tests]] +name = "basic155" +options = ['escaped'] +pattern = '''a([bc]*)(c+d)''' +input = '''abcd''' +matches = [[0, 4]] + +[[tests]] +name = "basic156" +options = ['escaped'] +pattern = '''a[bcd]*dcdcde''' +input = '''adcdcde''' +matches = [[0, 7]] + +[[tests]] +name = "basic157" +options = ['escaped'] +pattern = '''(ab|a)b*c''' +input = '''abc''' +matches = [[0, 3]] + +[[tests]] +name = "basic158" +options = ['escaped'] +pattern = '''((a)(b)c)(d)''' +input = '''abcd''' +matches = [[0, 4]] + +[[tests]] +name = "basic159" +options = ['escaped'] +pattern = '''[A-Za-z_][A-Za-z0-9_]*''' +input = '''alpha''' +matches = [[0, 5]] + +[[tests]] +name = "basic160" +options = ['escaped'] +pattern = '''^a(bc+|b[eh])g|.h$''' +input = '''abh''' +matches = [[1, 3]] + +[[tests]] +name = "basic161" +options = ['escaped'] +pattern = '''(bc+d$|ef*g.|h?i(j|k))''' +input = '''effgz''' +matches = [[0, 5]] + +[[tests]] +name = "basic162" +options = ['escaped'] +pattern = '''(bc+d$|ef*g.|h?i(j|k))''' +input = '''ij''' +matches = [[0, 2]] + +[[tests]] +name = "basic163" +options = ['escaped'] +pattern = '''(bc+d$|ef*g.|h?i(j|k))''' +input = '''reffgz''' +matches = [[1, 6]] + +[[tests]] +name = "basic164" +options = ['escaped'] +pattern = '''(((((((((a)))))))))''' +input = '''a''' +matches = [[0, 1]] + +[[tests]] +name = "basic165" +options = ['escaped'] +pattern = '''multiple words''' +input = '''multiple words yeah''' +matches = [[0, 14]] + +[[tests]] +name = "basic166" +options = ['escaped'] +pattern = '''(.*)c(.*)''' +input = '''abcde''' +matches = [[0, 5]] + +[[tests]] +name = "basic167" +options = ['escaped'] +pattern = '''abcd''' +input = '''abcd''' +matches = [[0, 4]] + +[[tests]] +name = "basic168" +options = ['escaped'] +pattern = '''a(bc)d''' +input = '''abcd''' +matches = [[0, 4]] + +[[tests]] +name = "basic169" +options = ['escaped'] +pattern = '''a[\x01-\x03]?c''' +input = '''a\x02c''' +matches = [[0, 3]] + +[[tests]] +name = "basic170" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Muammar Qaddafi''' +matches = [[0, 15]] + +[[tests]] +name = "basic171" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Mo'ammar Gadhafi''' +matches = [[0, 16]] + +[[tests]] +name = "basic172" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Muammar Kaddafi''' +matches = [[0, 15]] + +[[tests]] +name = "basic173" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Muammar Qadhafi''' +matches = [[0, 15]] + +[[tests]] +name = "basic174" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Muammar Gadafi''' +matches = [[0, 14]] + +[[tests]] +name = "basic175" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Mu'ammar Qadafi''' +matches = [[0, 15]] + +[[tests]] +name = "basic176" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Moamar Gaddafi''' +matches = [[0, 14]] + +[[tests]] +name = "basic177" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Mu'ammar Qadhdhafi''' +matches = [[0, 18]] + +[[tests]] +name = "basic178" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Muammar Khaddafi''' +matches = [[0, 16]] + +[[tests]] +name = "basic179" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Muammar Ghaddafy''' +matches = [[0, 16]] + +[[tests]] +name = "basic180" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Muammar Ghadafi''' +matches = [[0, 15]] + +[[tests]] +name = "basic181" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Muammar Ghaddafi''' +matches = [[0, 16]] + +[[tests]] +name = "basic182" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Muamar Kaddafi''' +matches = [[0, 14]] + +[[tests]] +name = "basic183" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Muammar Quathafi''' +matches = [[0, 16]] + +[[tests]] +name = "basic184" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Muammar Gheddafi''' +matches = [[0, 16]] + +[[tests]] +name = "basic185" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Moammar Khadafy''' +matches = [[0, 15]] + +[[tests]] +name = "basic186" +options = ['escaped'] +pattern = '''M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]''' +input = '''Moammar Qudhafi''' +matches = [[0, 15]] + +[[tests]] +name = "basic187" +options = ['escaped'] +pattern = '''a+(b|c)*d+''' +input = '''aabcdd''' +matches = [[0, 6]] + +[[tests]] +name = "basic188" +options = ['escaped'] +pattern = '''^.+$''' +input = '''vivi''' +matches = [[0, 4]] + +[[tests]] +name = "basic189" +options = ['escaped'] +pattern = '''^(.+)$''' +input = '''vivi''' +matches = [[0, 4]] + +[[tests]] +name = "basic190" +options = ['escaped'] +pattern = '''^([^!.]+).att.com!(.+)$''' +input = '''gryphon.att.com!eby''' +matches = [[0, 19]] + +[[tests]] +name = "basic191" +options = ['escaped'] +pattern = '''^([^!]+!)?([^!]+)$''' +input = '''bas''' +matches = [[0, 3]] + +[[tests]] +name = "basic192" +options = ['escaped'] +pattern = '''^([^!]+!)?([^!]+)$''' +input = '''bar!bas''' +matches = [[0, 7]] + +[[tests]] +name = "basic193" +options = ['escaped'] +pattern = '''^([^!]+!)?([^!]+)$''' +input = '''foo!bas''' +matches = [[0, 7]] + +[[tests]] +name = "basic194" +options = ['escaped'] +pattern = '''^.+!([^!]+!)([^!]+)$''' +input = '''foo!bar!bas''' +matches = [[0, 11]] + +[[tests]] +name = "basic195" +options = ['escaped'] +pattern = '''((foo)|(bar))!bas''' +input = '''bar!bas''' +matches = [[0, 7]] + +[[tests]] +name = "basic196" +options = ['escaped'] +pattern = '''((foo)|(bar))!bas''' +input = '''foo!bar!bas''' +matches = [[4, 11]] + +[[tests]] +name = "basic197" +options = ['escaped'] +pattern = '''((foo)|(bar))!bas''' +input = '''foo!bas''' +matches = [[0, 7]] + +[[tests]] +name = "basic198" +options = ['escaped'] +pattern = '''((foo)|bar)!bas''' +input = '''bar!bas''' +matches = [[0, 7]] + +[[tests]] +name = "basic199" +options = ['escaped'] +pattern = '''((foo)|bar)!bas''' +input = '''foo!bar!bas''' +matches = [[4, 11]] + +[[tests]] +name = "basic200" +options = ['escaped'] +pattern = '''((foo)|bar)!bas''' +input = '''foo!bas''' +matches = [[0, 7]] + +[[tests]] +name = "basic201" +options = ['escaped'] +pattern = '''(foo|(bar))!bas''' +input = '''bar!bas''' +matches = [[0, 7]] + +[[tests]] +name = "basic202" +options = ['escaped'] +pattern = '''(foo|(bar))!bas''' +input = '''foo!bar!bas''' +matches = [[4, 11]] + +[[tests]] +name = "basic203" +options = ['escaped'] +pattern = '''(foo|(bar))!bas''' +input = '''foo!bas''' +matches = [[0, 7]] + +[[tests]] +name = "basic204" +options = ['escaped'] +pattern = '''(foo|bar)!bas''' +input = '''bar!bas''' +matches = [[0, 7]] + +[[tests]] +name = "basic205" +options = ['escaped'] +pattern = '''(foo|bar)!bas''' +input = '''foo!bar!bas''' +matches = [[4, 11]] + +[[tests]] +name = "basic206" +options = ['escaped'] +pattern = '''(foo|bar)!bas''' +input = '''foo!bas''' +matches = [[0, 7]] + +[[tests]] +name = "basic207" +options = ['escaped'] +pattern = '''^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$''' +input = '''foo!bar!bas''' +matches = [[0, 11]] + +[[tests]] +name = "basic208" +options = ['escaped'] +pattern = '''^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$''' +input = '''bas''' +matches = [[0, 3]] + +[[tests]] +name = "basic209" +options = ['escaped'] +pattern = '''^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$''' +input = '''bar!bas''' +matches = [[0, 7]] + +[[tests]] +name = "basic210" +options = ['escaped'] +pattern = '''^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$''' +input = '''foo!bar!bas''' +matches = [[0, 11]] + +[[tests]] +name = "basic211" +options = ['escaped'] +pattern = '''^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$''' +input = '''foo!bas''' +matches = [[0, 7]] + +[[tests]] +name = "basic212" +options = ['escaped'] +pattern = '''^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$''' +input = '''bas''' +matches = [[0, 3]] + +[[tests]] +name = "basic213" +options = ['escaped'] +pattern = '''^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$''' +input = '''bar!bas''' +matches = [[0, 7]] + +[[tests]] +name = "basic214" +options = ['escaped'] +pattern = '''^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$''' +input = '''foo!bar!bas''' +matches = [[0, 11]] + +[[tests]] +name = "basic215" +options = ['escaped'] +pattern = '''^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$''' +input = '''foo!bas''' +matches = [[0, 7]] + +[[tests]] +name = "basic216" +options = ['escaped'] +pattern = '''.*(/XXX).*''' +input = '''/XXX''' +matches = [[0, 4]] + +[[tests]] +name = "basic217" +options = ['escaped'] +pattern = '''.*(\\XXX).*''' +input = '''\\XXX''' +matches = [[0, 4]] + +[[tests]] +name = "basic218" +options = ['escaped'] +pattern = '''\\XXX''' +input = '''\\XXX''' +matches = [[0, 4]] + +[[tests]] +name = "basic219" +options = ['escaped'] +pattern = '''.*(/000).*''' +input = '''/000''' +matches = [[0, 4]] + +[[tests]] +name = "basic220" +options = ['escaped'] +pattern = '''.*(\\000).*''' +input = '''\\000''' +matches = [[0, 4]] + +[[tests]] +name = "basic221" +options = ['escaped'] +pattern = '''\\000''' +input = '''\\000''' +matches = [[0, 4]] + diff --git a/vendor/regex-automata/data/tests/fowler/fowler-to-toml b/vendor/regex-automata/data/tests/fowler/fowler-to-toml new file mode 100755 index 000000000..5f1d91fcb --- /dev/null +++ b/vendor/regex-automata/data/tests/fowler/fowler-to-toml @@ -0,0 +1,76 @@ +#!/usr/bin/env python + +from __future__ import absolute_import, division, print_function +import argparse +import os.path as path + + +def read_tests(f): + basename, _ = path.splitext(path.basename(f)) + tests = [] + prev_pattern = None + + for lineno, line in enumerate(open(f), 1): + fields = list(filter(None, map(str.strip, line.split('\t')))) + if not (4 <= len(fields) <= 5) \ + or 'E' not in fields[0] or fields[0][0] == '#': + continue + + terse_opts, pat, text, sgroups = fields[0:4] + groups = [] # groups as integer ranges + if sgroups == 'NOMATCH': + groups = [] + elif ',' in sgroups: + noparen = map(lambda s: s.strip('()'), sgroups.split(')(')) + for g in noparen: + s, e = map(str.strip, g.split(',')) + groups.append([int(s), int(e)]) + break + else: + # This skips tests that should result in an error. + # There aren't many, so I think we can just capture those + # manually. Possibly fix this in future. + continue + + opts = [] + if text == "NULL": + text = "" + if pat == 'SAME': + pat = prev_pattern + if '$' in terse_opts: + pat = pat.encode('utf-8').decode('unicode_escape') + text = text.encode('utf-8').decode('unicode_escape') + text = text.encode('unicode_escape').decode('utf-8') + opts.append('escaped') + else: + opts.append('escaped') + text = text.encode('unicode_escape').decode('utf-8') + if 'i' in terse_opts: + opts.append('case-insensitive') + + pat = pat.encode('unicode_escape').decode('utf-8') + pat = pat.replace('\\\\', '\\') + tests.append({ + 'name': '"%s%d"' % (basename, lineno), + 'options': repr(opts), + 'pattern': "'''%s'''" % pat, + 'input': "'''%s'''" % text, + 'matches': str(groups), + }) + prev_pattern = pat + return tests + + +if __name__ == '__main__': + parser = argparse.ArgumentParser( + description='Generate match tests from an AT&T POSIX test file.') + aa = parser.add_argument + aa('datfile', help='A dat AT&T POSIX test file.') + args = parser.parse_args() + + tests = read_tests(args.datfile) + for t in tests: + print('[[tests]]') + for k, v in t.items(): + print('%s = %s' % (k, v)) + print('') diff --git a/vendor/regex-automata/data/tests/fowler/nullsubexpr.dat b/vendor/regex-automata/data/tests/fowler/nullsubexpr.dat new file mode 100644 index 000000000..2e18fbb91 --- /dev/null +++ b/vendor/regex-automata/data/tests/fowler/nullsubexpr.dat @@ -0,0 +1,79 @@ +NOTE null subexpression matches : 2002-06-06 + +E (a*)* a (0,1)(0,1) +#E SAME x (0,0)(0,0) +E SAME x (0,0)(?,?) RE2/Go +E SAME aaaaaa (0,6)(0,6) +E SAME aaaaaax (0,6)(0,6) +E (a*)+ a (0,1)(0,1) +E SAME x (0,0)(0,0) +E SAME aaaaaa (0,6)(0,6) +E SAME aaaaaax (0,6)(0,6) +E (a+)* a (0,1)(0,1) +E SAME x (0,0) +E SAME aaaaaa (0,6)(0,6) +E SAME aaaaaax (0,6)(0,6) +E (a+)+ a (0,1)(0,1) +E SAME x NOMATCH +E SAME aaaaaa (0,6)(0,6) +E SAME aaaaaax (0,6)(0,6) + +E ([a]*)* a (0,1)(0,1) +#E SAME x (0,0)(0,0) +E SAME x (0,0)(?,?) RE2/Go +E SAME aaaaaa (0,6)(0,6) +E SAME aaaaaax (0,6)(0,6) +E ([a]*)+ a (0,1)(0,1) +E SAME x (0,0)(0,0) +E SAME aaaaaa (0,6)(0,6) +E SAME aaaaaax (0,6)(0,6) +E ([^b]*)* a (0,1)(0,1) +#E SAME b (0,0)(0,0) +E SAME b (0,0)(?,?) RE2/Go +E SAME aaaaaa (0,6)(0,6) +E SAME aaaaaab (0,6)(0,6) +E ([ab]*)* a (0,1)(0,1) +E SAME aaaaaa (0,6)(0,6) +E SAME ababab (0,6)(0,6) +E SAME bababa (0,6)(0,6) +E SAME b (0,1)(0,1) +E SAME bbbbbb (0,6)(0,6) +E SAME aaaabcde (0,5)(0,5) +E ([^a]*)* b (0,1)(0,1) +E SAME bbbbbb (0,6)(0,6) +#E SAME aaaaaa (0,0)(0,0) +E SAME aaaaaa (0,0)(?,?) RE2/Go +E ([^ab]*)* ccccxx (0,6)(0,6) +#E SAME ababab (0,0)(0,0) +E SAME ababab (0,0)(?,?) RE2/Go + +E ((z)+|a)* zabcde (0,2)(1,2) + +#{E a+? aaaaaa (0,1) no *? +? mimimal match ops +#E (a) aaa (0,1)(0,1) +#E (a*?) aaa (0,0)(0,0) +#E (a)*? aaa (0,0) +#E (a*?)*? aaa (0,0) +#} + +B \(a*\)*\(x\) x (0,1)(0,0)(0,1) +B \(a*\)*\(x\) ax (0,2)(0,1)(1,2) +B \(a*\)*\(x\) axa (0,2)(0,1)(1,2) +B \(a*\)*\(x\)\(\1\) x (0,1)(0,0)(0,1)(1,1) +B \(a*\)*\(x\)\(\1\) ax (0,2)(1,1)(1,2)(2,2) +B \(a*\)*\(x\)\(\1\) axa (0,3)(0,1)(1,2)(2,3) +B \(a*\)*\(x\)\(\1\)\(x\) axax (0,4)(0,1)(1,2)(2,3)(3,4) +B \(a*\)*\(x\)\(\1\)\(x\) axxa (0,3)(1,1)(1,2)(2,2)(2,3) + +#E (a*)*(x) x (0,1)(0,0)(0,1) +E (a*)*(x) x (0,1)(?,?)(0,1) RE2/Go +E (a*)*(x) ax (0,2)(0,1)(1,2) +E (a*)*(x) axa (0,2)(0,1)(1,2) + +E (a*)+(x) x (0,1)(0,0)(0,1) +E (a*)+(x) ax (0,2)(0,1)(1,2) +E (a*)+(x) axa (0,2)(0,1)(1,2) + +E (a*){2}(x) x (0,1)(0,0)(0,1) +E (a*){2}(x) ax (0,2)(1,1)(1,2) +E (a*){2}(x) axa (0,2)(1,1)(1,2) diff --git a/vendor/regex-automata/data/tests/fowler/nullsubexpr.toml b/vendor/regex-automata/data/tests/fowler/nullsubexpr.toml new file mode 100644 index 000000000..331067c60 --- /dev/null +++ b/vendor/regex-automata/data/tests/fowler/nullsubexpr.toml @@ -0,0 +1,350 @@ +[[tests]] +name = "nullsubexpr3" +options = ['escaped'] +pattern = '''(a*)*''' +input = '''a''' +matches = [[0, 1]] + +[[tests]] +name = "nullsubexpr5" +options = ['escaped'] +pattern = '''(a*)*''' +input = '''x''' +matches = [[0, 0]] + +[[tests]] +name = "nullsubexpr6" +options = ['escaped'] +pattern = '''(a*)*''' +input = '''aaaaaa''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr7" +options = ['escaped'] +pattern = '''(a*)*''' +input = '''aaaaaax''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr8" +options = ['escaped'] +pattern = '''(a*)+''' +input = '''a''' +matches = [[0, 1]] + +[[tests]] +name = "nullsubexpr9" +options = ['escaped'] +pattern = '''(a*)+''' +input = '''x''' +matches = [[0, 0]] + +[[tests]] +name = "nullsubexpr10" +options = ['escaped'] +pattern = '''(a*)+''' +input = '''aaaaaa''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr11" +options = ['escaped'] +pattern = '''(a*)+''' +input = '''aaaaaax''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr12" +options = ['escaped'] +pattern = '''(a+)*''' +input = '''a''' +matches = [[0, 1]] + +[[tests]] +name = "nullsubexpr13" +options = ['escaped'] +pattern = '''(a+)*''' +input = '''x''' +matches = [[0, 0]] + +[[tests]] +name = "nullsubexpr14" +options = ['escaped'] +pattern = '''(a+)*''' +input = '''aaaaaa''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr15" +options = ['escaped'] +pattern = '''(a+)*''' +input = '''aaaaaax''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr16" +options = ['escaped'] +pattern = '''(a+)+''' +input = '''a''' +matches = [[0, 1]] + +[[tests]] +name = "nullsubexpr17" +options = ['escaped'] +pattern = '''(a+)+''' +input = '''x''' +matches = [] + +[[tests]] +name = "nullsubexpr18" +options = ['escaped'] +pattern = '''(a+)+''' +input = '''aaaaaa''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr19" +options = ['escaped'] +pattern = '''(a+)+''' +input = '''aaaaaax''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr21" +options = ['escaped'] +pattern = '''([a]*)*''' +input = '''a''' +matches = [[0, 1]] + +[[tests]] +name = "nullsubexpr23" +options = ['escaped'] +pattern = '''([a]*)*''' +input = '''x''' +matches = [[0, 0]] + +[[tests]] +name = "nullsubexpr24" +options = ['escaped'] +pattern = '''([a]*)*''' +input = '''aaaaaa''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr25" +options = ['escaped'] +pattern = '''([a]*)*''' +input = '''aaaaaax''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr26" +options = ['escaped'] +pattern = '''([a]*)+''' +input = '''a''' +matches = [[0, 1]] + +[[tests]] +name = "nullsubexpr27" +options = ['escaped'] +pattern = '''([a]*)+''' +input = '''x''' +matches = [[0, 0]] + +[[tests]] +name = "nullsubexpr28" +options = ['escaped'] +pattern = '''([a]*)+''' +input = '''aaaaaa''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr29" +options = ['escaped'] +pattern = '''([a]*)+''' +input = '''aaaaaax''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr30" +options = ['escaped'] +pattern = '''([^b]*)*''' +input = '''a''' +matches = [[0, 1]] + +[[tests]] +name = "nullsubexpr32" +options = ['escaped'] +pattern = '''([^b]*)*''' +input = '''b''' +matches = [[0, 0]] + +[[tests]] +name = "nullsubexpr33" +options = ['escaped'] +pattern = '''([^b]*)*''' +input = '''aaaaaa''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr34" +options = ['escaped'] +pattern = '''([^b]*)*''' +input = '''aaaaaab''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr35" +options = ['escaped'] +pattern = '''([ab]*)*''' +input = '''a''' +matches = [[0, 1]] + +[[tests]] +name = "nullsubexpr36" +options = ['escaped'] +pattern = '''([ab]*)*''' +input = '''aaaaaa''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr37" +options = ['escaped'] +pattern = '''([ab]*)*''' +input = '''ababab''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr38" +options = ['escaped'] +pattern = '''([ab]*)*''' +input = '''bababa''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr39" +options = ['escaped'] +pattern = '''([ab]*)*''' +input = '''b''' +matches = [[0, 1]] + +[[tests]] +name = "nullsubexpr40" +options = ['escaped'] +pattern = '''([ab]*)*''' +input = '''bbbbbb''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr41" +options = ['escaped'] +pattern = '''([ab]*)*''' +input = '''aaaabcde''' +matches = [[0, 5]] + +[[tests]] +name = "nullsubexpr42" +options = ['escaped'] +pattern = '''([^a]*)*''' +input = '''b''' +matches = [[0, 1]] + +[[tests]] +name = "nullsubexpr43" +options = ['escaped'] +pattern = '''([^a]*)*''' +input = '''bbbbbb''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr45" +options = ['escaped'] +pattern = '''([^a]*)*''' +input = '''aaaaaa''' +matches = [[0, 0]] + +[[tests]] +name = "nullsubexpr46" +options = ['escaped'] +pattern = '''([^ab]*)*''' +input = '''ccccxx''' +matches = [[0, 6]] + +[[tests]] +name = "nullsubexpr48" +options = ['escaped'] +pattern = '''([^ab]*)*''' +input = '''ababab''' +matches = [[0, 0]] + +[[tests]] +name = "nullsubexpr50" +options = ['escaped'] +pattern = '''((z)+|a)*''' +input = '''zabcde''' +matches = [[0, 2]] + +[[tests]] +name = "nullsubexpr69" +options = ['escaped'] +pattern = '''(a*)*(x)''' +input = '''x''' +matches = [[0, 1]] + +[[tests]] +name = "nullsubexpr70" +options = ['escaped'] +pattern = '''(a*)*(x)''' +input = '''ax''' +matches = [[0, 2]] + +[[tests]] +name = "nullsubexpr71" +options = ['escaped'] +pattern = '''(a*)*(x)''' +input = '''axa''' +matches = [[0, 2]] + +[[tests]] +name = "nullsubexpr73" +options = ['escaped'] +pattern = '''(a*)+(x)''' +input = '''x''' +matches = [[0, 1]] + +[[tests]] +name = "nullsubexpr74" +options = ['escaped'] +pattern = '''(a*)+(x)''' +input = '''ax''' +matches = [[0, 2]] + +[[tests]] +name = "nullsubexpr75" +options = ['escaped'] +pattern = '''(a*)+(x)''' +input = '''axa''' +matches = [[0, 2]] + +[[tests]] +name = "nullsubexpr77" +options = ['escaped'] +pattern = '''(a*){2}(x)''' +input = '''x''' +matches = [[0, 1]] + +[[tests]] +name = "nullsubexpr78" +options = ['escaped'] +pattern = '''(a*){2}(x)''' +input = '''ax''' +matches = [[0, 2]] + +[[tests]] +name = "nullsubexpr79" +options = ['escaped'] +pattern = '''(a*){2}(x)''' +input = '''axa''' +matches = [[0, 2]] + diff --git a/vendor/regex-automata/data/tests/fowler/repetition-long.dat b/vendor/regex-automata/data/tests/fowler/repetition-long.dat new file mode 100644 index 000000000..c91580236 --- /dev/null +++ b/vendor/regex-automata/data/tests/fowler/repetition-long.dat @@ -0,0 +1,85 @@ +NOTE implicit vs. explicit repetitions : 2009-02-02 + +# Glenn Fowler <gsf@research.att.com> +# conforming matches (column 4) must match one of the following BREs +# NOMATCH +# (0,.)\((\(.\),\(.\))(?,?)(\2,\3)\)* +# (0,.)\((\(.\),\(.\))(\2,\3)(?,?)\)* +# i.e., each 3-tuple has two identical elements and one (?,?) + +NOTE additional repetition tests graciously provided by Chris Kuklewicz www.haskell.org 2009-02-02 + +:HA#100:E X(.?){0,}Y X1234567Y (0,9)(7,8) +:HA#101:E X(.?){1,}Y X1234567Y (0,9)(7,8) +:HA#102:E X(.?){2,}Y X1234567Y (0,9)(7,8) +:HA#103:E X(.?){3,}Y X1234567Y (0,9)(7,8) +:HA#104:E X(.?){4,}Y X1234567Y (0,9)(7,8) +:HA#105:E X(.?){5,}Y X1234567Y (0,9)(7,8) +:HA#106:E X(.?){6,}Y X1234567Y (0,9)(7,8) +:HA#107:E X(.?){7,}Y X1234567Y (0,9)(7,8) +:HA#108:E X(.?){8,}Y X1234567Y (0,9)(8,8) +#:HA#110:E X(.?){0,8}Y X1234567Y (0,9)(7,8) +:HA#110:E X(.?){0,8}Y X1234567Y (0,9)(8,8) RE2/Go +#:HA#111:E X(.?){1,8}Y X1234567Y (0,9)(7,8) +:HA#111:E X(.?){1,8}Y X1234567Y (0,9)(8,8) RE2/Go +#:HA#112:E X(.?){2,8}Y X1234567Y (0,9)(7,8) +:HA#112:E X(.?){2,8}Y X1234567Y (0,9)(8,8) RE2/Go +#:HA#113:E X(.?){3,8}Y X1234567Y (0,9)(7,8) +:HA#113:E X(.?){3,8}Y X1234567Y (0,9)(8,8) RE2/Go +#:HA#114:E X(.?){4,8}Y X1234567Y (0,9)(7,8) +:HA#114:E X(.?){4,8}Y X1234567Y (0,9)(8,8) RE2/Go +#:HA#115:E X(.?){5,8}Y X1234567Y (0,9)(7,8) +:HA#115:E X(.?){5,8}Y X1234567Y (0,9)(8,8) RE2/Go +#:HA#116:E X(.?){6,8}Y X1234567Y (0,9)(7,8) +:HA#116:E X(.?){6,8}Y X1234567Y (0,9)(8,8) RE2/Go +#:HA#117:E X(.?){7,8}Y X1234567Y (0,9)(7,8) +:HA#117:E X(.?){7,8}Y X1234567Y (0,9)(8,8) RE2/Go +:HA#118:E X(.?){8,8}Y X1234567Y (0,9)(8,8) + +# These test a fixed bug in my regex-tdfa that did not keep the expanded +# form properly grouped, so right association did the wrong thing with +# these ambiguous patterns (crafted just to test my code when I became +# suspicious of my implementation). The first subexpression should use +# "ab" then "a" then "bcd". + +# OS X / FreeBSD / NetBSD badly fail many of these, with impossible +# results like (0,6)(4,5)(6,6). + +:HA#260:E (a|ab|c|bcd){0,}(d*) ababcd (0,1)(0,1)(1,1) +:HA#261:E (a|ab|c|bcd){1,}(d*) ababcd (0,1)(0,1)(1,1) +:HA#262:E (a|ab|c|bcd){2,}(d*) ababcd (0,6)(3,6)(6,6) +:HA#263:E (a|ab|c|bcd){3,}(d*) ababcd (0,6)(3,6)(6,6) +:HA#264:E (a|ab|c|bcd){4,}(d*) ababcd NOMATCH +:HA#265:E (a|ab|c|bcd){0,10}(d*) ababcd (0,1)(0,1)(1,1) +:HA#266:E (a|ab|c|bcd){1,10}(d*) ababcd (0,1)(0,1)(1,1) +:HA#267:E (a|ab|c|bcd){2,10}(d*) ababcd (0,6)(3,6)(6,6) +:HA#268:E (a|ab|c|bcd){3,10}(d*) ababcd (0,6)(3,6)(6,6) +:HA#269:E (a|ab|c|bcd){4,10}(d*) ababcd NOMATCH +:HA#270:E (a|ab|c|bcd)*(d*) ababcd (0,1)(0,1)(1,1) +:HA#271:E (a|ab|c|bcd)+(d*) ababcd (0,1)(0,1)(1,1) + +# The above worked on Linux/GLIBC but the following often fail. +# They also trip up OS X / FreeBSD / NetBSD: + +#:HA#280:E (ab|a|c|bcd){0,}(d*) ababcd (0,6)(3,6)(6,6) +:HA#280:E (ab|a|c|bcd){0,}(d*) ababcd (0,6)(4,5)(5,6) RE2/Go +#:HA#281:E (ab|a|c|bcd){1,}(d*) ababcd (0,6)(3,6)(6,6) +:HA#281:E (ab|a|c|bcd){1,}(d*) ababcd (0,6)(4,5)(5,6) RE2/Go +#:HA#282:E (ab|a|c|bcd){2,}(d*) ababcd (0,6)(3,6)(6,6) +:HA#282:E (ab|a|c|bcd){2,}(d*) ababcd (0,6)(4,5)(5,6) RE2/Go +#:HA#283:E (ab|a|c|bcd){3,}(d*) ababcd (0,6)(3,6)(6,6) +:HA#283:E (ab|a|c|bcd){3,}(d*) ababcd (0,6)(4,5)(5,6) RE2/Go +:HA#284:E (ab|a|c|bcd){4,}(d*) ababcd NOMATCH +#:HA#285:E (ab|a|c|bcd){0,10}(d*) ababcd (0,6)(3,6)(6,6) +:HA#285:E (ab|a|c|bcd){0,10}(d*) ababcd (0,6)(4,5)(5,6) RE2/Go +#:HA#286:E (ab|a|c|bcd){1,10}(d*) ababcd (0,6)(3,6)(6,6) +:HA#286:E (ab|a|c|bcd){1,10}(d*) ababcd (0,6)(4,5)(5,6) RE2/Go +#:HA#287:E (ab|a|c|bcd){2,10}(d*) ababcd (0,6)(3,6)(6,6) +:HA#287:E (ab|a|c|bcd){2,10}(d*) ababcd (0,6)(4,5)(5,6) RE2/Go +#:HA#288:E (ab|a|c|bcd){3,10}(d*) ababcd (0,6)(3,6)(6,6) +:HA#288:E (ab|a|c|bcd){3,10}(d*) ababcd (0,6)(4,5)(5,6) RE2/Go +:HA#289:E (ab|a|c|bcd){4,10}(d*) ababcd NOMATCH +#:HA#290:E (ab|a|c|bcd)*(d*) ababcd (0,6)(3,6)(6,6) +:HA#290:E (ab|a|c|bcd)*(d*) ababcd (0,6)(4,5)(5,6) RE2/Go +#:HA#291:E (ab|a|c|bcd)+(d*) ababcd (0,6)(3,6)(6,6) +:HA#291:E (ab|a|c|bcd)+(d*) ababcd (0,6)(4,5)(5,6) RE2/Go diff --git a/vendor/regex-automata/data/tests/fowler/repetition-long.toml b/vendor/regex-automata/data/tests/fowler/repetition-long.toml new file mode 100644 index 000000000..e0b2ea76b --- /dev/null +++ b/vendor/regex-automata/data/tests/fowler/repetition-long.toml @@ -0,0 +1,294 @@ +[[tests]] +name = "repetition-long12" +options = ['escaped'] +pattern = '''X(.?){0,}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long13" +options = ['escaped'] +pattern = '''X(.?){1,}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long14" +options = ['escaped'] +pattern = '''X(.?){2,}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long15" +options = ['escaped'] +pattern = '''X(.?){3,}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long16" +options = ['escaped'] +pattern = '''X(.?){4,}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long17" +options = ['escaped'] +pattern = '''X(.?){5,}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long18" +options = ['escaped'] +pattern = '''X(.?){6,}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long19" +options = ['escaped'] +pattern = '''X(.?){7,}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long20" +options = ['escaped'] +pattern = '''X(.?){8,}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long22" +options = ['escaped'] +pattern = '''X(.?){0,8}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long24" +options = ['escaped'] +pattern = '''X(.?){1,8}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long26" +options = ['escaped'] +pattern = '''X(.?){2,8}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long28" +options = ['escaped'] +pattern = '''X(.?){3,8}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long30" +options = ['escaped'] +pattern = '''X(.?){4,8}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long32" +options = ['escaped'] +pattern = '''X(.?){5,8}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long34" +options = ['escaped'] +pattern = '''X(.?){6,8}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long36" +options = ['escaped'] +pattern = '''X(.?){7,8}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long37" +options = ['escaped'] +pattern = '''X(.?){8,8}Y''' +input = '''X1234567Y''' +matches = [[0, 9]] + +[[tests]] +name = "repetition-long48" +options = ['escaped'] +pattern = '''(a|ab|c|bcd){0,}(d*)''' +input = '''ababcd''' +matches = [[0, 1]] + +[[tests]] +name = "repetition-long49" +options = ['escaped'] +pattern = '''(a|ab|c|bcd){1,}(d*)''' +input = '''ababcd''' +matches = [[0, 1]] + +[[tests]] +name = "repetition-long50" +options = ['escaped'] +pattern = '''(a|ab|c|bcd){2,}(d*)''' +input = '''ababcd''' +matches = [[0, 6]] + +[[tests]] +name = "repetition-long51" +options = ['escaped'] +pattern = '''(a|ab|c|bcd){3,}(d*)''' +input = '''ababcd''' +matches = [[0, 6]] + +[[tests]] +name = "repetition-long52" +options = ['escaped'] +pattern = '''(a|ab|c|bcd){4,}(d*)''' +input = '''ababcd''' +matches = [] + +[[tests]] +name = "repetition-long53" +options = ['escaped'] +pattern = '''(a|ab|c|bcd){0,10}(d*)''' +input = '''ababcd''' +matches = [[0, 1]] + +[[tests]] +name = "repetition-long54" +options = ['escaped'] +pattern = '''(a|ab|c|bcd){1,10}(d*)''' +input = '''ababcd''' +matches = [[0, 1]] + +[[tests]] +name = "repetition-long55" +options = ['escaped'] +pattern = '''(a|ab|c|bcd){2,10}(d*)''' +input = '''ababcd''' +matches = [[0, 6]] + +[[tests]] +name = "repetition-long56" +options = ['escaped'] +pattern = '''(a|ab|c|bcd){3,10}(d*)''' +input = '''ababcd''' +matches = [[0, 6]] + +[[tests]] +name = "repetition-long57" +options = ['escaped'] +pattern = '''(a|ab|c|bcd){4,10}(d*)''' +input = '''ababcd''' +matches = [] + +[[tests]] +name = "repetition-long58" +options = ['escaped'] +pattern = '''(a|ab|c|bcd)*(d*)''' +input = '''ababcd''' +matches = [[0, 1]] + +[[tests]] +name = "repetition-long59" +options = ['escaped'] +pattern = '''(a|ab|c|bcd)+(d*)''' +input = '''ababcd''' +matches = [[0, 1]] + +[[tests]] +name = "repetition-long65" +options = ['escaped'] +pattern = '''(ab|a|c|bcd){0,}(d*)''' +input = '''ababcd''' +matches = [[0, 6]] + +[[tests]] +name = "repetition-long67" +options = ['escaped'] +pattern = '''(ab|a|c|bcd){1,}(d*)''' +input = '''ababcd''' +matches = [[0, 6]] + +[[tests]] +name = "repetition-long69" +options = ['escaped'] +pattern = '''(ab|a|c|bcd){2,}(d*)''' +input = '''ababcd''' +matches = [[0, 6]] + +[[tests]] +name = "repetition-long71" +options = ['escaped'] +pattern = '''(ab|a|c|bcd){3,}(d*)''' +input = '''ababcd''' +matches = [[0, 6]] + +[[tests]] +name = "repetition-long72" +options = ['escaped'] +pattern = '''(ab|a|c|bcd){4,}(d*)''' +input = '''ababcd''' +matches = [] + +[[tests]] +name = "repetition-long74" +options = ['escaped'] +pattern = '''(ab|a|c|bcd){0,10}(d*)''' +input = '''ababcd''' +matches = [[0, 6]] + +[[tests]] +name = "repetition-long76" +options = ['escaped'] +pattern = '''(ab|a|c|bcd){1,10}(d*)''' +input = '''ababcd''' +matches = [[0, 6]] + +[[tests]] +name = "repetition-long78" +options = ['escaped'] +pattern = '''(ab|a|c|bcd){2,10}(d*)''' +input = '''ababcd''' +matches = [[0, 6]] + +[[tests]] +name = "repetition-long80" +options = ['escaped'] +pattern = '''(ab|a|c|bcd){3,10}(d*)''' +input = '''ababcd''' +matches = [[0, 6]] + +[[tests]] +name = "repetition-long81" +options = ['escaped'] +pattern = '''(ab|a|c|bcd){4,10}(d*)''' +input = '''ababcd''' +matches = [] + +[[tests]] +name = "repetition-long83" +options = ['escaped'] +pattern = '''(ab|a|c|bcd)*(d*)''' +input = '''ababcd''' +matches = [[0, 6]] + +[[tests]] +name = "repetition-long85" +options = ['escaped'] +pattern = '''(ab|a|c|bcd)+(d*)''' +input = '''ababcd''' +matches = [[0, 6]] + diff --git a/vendor/regex-automata/data/tests/fowler/repetition.dat b/vendor/regex-automata/data/tests/fowler/repetition.dat new file mode 100644 index 000000000..2dac0823f --- /dev/null +++ b/vendor/regex-automata/data/tests/fowler/repetition.dat @@ -0,0 +1,83 @@ +NOTE implicit vs. explicit repetitions : 2009-02-02 + +# Glenn Fowler <gsf@research.att.com> +# conforming matches (column 4) must match one of the following BREs +# NOMATCH +# (0,.)\((\(.\),\(.\))(?,?)(\2,\3)\)* +# (0,.)\((\(.\),\(.\))(\2,\3)(?,?)\)* +# i.e., each 3-tuple has two identical elements and one (?,?) + +E ((..)|(.)) NULL NOMATCH +E ((..)|(.))((..)|(.)) NULL NOMATCH +E ((..)|(.))((..)|(.))((..)|(.)) NULL NOMATCH + +E ((..)|(.)){1} NULL NOMATCH +E ((..)|(.)){2} NULL NOMATCH +E ((..)|(.)){3} NULL NOMATCH + +E ((..)|(.))* NULL (0,0) + +E ((..)|(.)) a (0,1)(0,1)(?,?)(0,1) +E ((..)|(.))((..)|(.)) a NOMATCH +E ((..)|(.))((..)|(.))((..)|(.)) a NOMATCH + +E ((..)|(.)){1} a (0,1)(0,1)(?,?)(0,1) +E ((..)|(.)){2} a NOMATCH +E ((..)|(.)){3} a NOMATCH + +E ((..)|(.))* a (0,1)(0,1)(?,?)(0,1) + +E ((..)|(.)) aa (0,2)(0,2)(0,2)(?,?) +E ((..)|(.))((..)|(.)) aa (0,2)(0,1)(?,?)(0,1)(1,2)(?,?)(1,2) +E ((..)|(.))((..)|(.))((..)|(.)) aa NOMATCH + +E ((..)|(.)){1} aa (0,2)(0,2)(0,2)(?,?) +E ((..)|(.)){2} aa (0,2)(1,2)(?,?)(1,2) +E ((..)|(.)){3} aa NOMATCH + +E ((..)|(.))* aa (0,2)(0,2)(0,2)(?,?) + +E ((..)|(.)) aaa (0,2)(0,2)(0,2)(?,?) +E ((..)|(.))((..)|(.)) aaa (0,3)(0,2)(0,2)(?,?)(2,3)(?,?)(2,3) +E ((..)|(.))((..)|(.))((..)|(.)) aaa (0,3)(0,1)(?,?)(0,1)(1,2)(?,?)(1,2)(2,3)(?,?)(2,3) + +E ((..)|(.)){1} aaa (0,2)(0,2)(0,2)(?,?) +#E ((..)|(.)){2} aaa (0,3)(2,3)(?,?)(2,3) +E ((..)|(.)){2} aaa (0,3)(2,3)(0,2)(2,3) RE2/Go +E ((..)|(.)){3} aaa (0,3)(2,3)(?,?)(2,3) + +#E ((..)|(.))* aaa (0,3)(2,3)(?,?)(2,3) +E ((..)|(.))* aaa (0,3)(2,3)(0,2)(2,3) RE2/Go + +E ((..)|(.)) aaaa (0,2)(0,2)(0,2)(?,?) +E ((..)|(.))((..)|(.)) aaaa (0,4)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?) +E ((..)|(.))((..)|(.))((..)|(.)) aaaa (0,4)(0,2)(0,2)(?,?)(2,3)(?,?)(2,3)(3,4)(?,?)(3,4) + +E ((..)|(.)){1} aaaa (0,2)(0,2)(0,2)(?,?) +E ((..)|(.)){2} aaaa (0,4)(2,4)(2,4)(?,?) +#E ((..)|(.)){3} aaaa (0,4)(3,4)(?,?)(3,4) +E ((..)|(.)){3} aaaa (0,4)(3,4)(0,2)(3,4) RE2/Go + +E ((..)|(.))* aaaa (0,4)(2,4)(2,4)(?,?) + +E ((..)|(.)) aaaaa (0,2)(0,2)(0,2)(?,?) +E ((..)|(.))((..)|(.)) aaaaa (0,4)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?) +E ((..)|(.))((..)|(.))((..)|(.)) aaaaa (0,5)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?)(4,5)(?,?)(4,5) + +E ((..)|(.)){1} aaaaa (0,2)(0,2)(0,2)(?,?) +E ((..)|(.)){2} aaaaa (0,4)(2,4)(2,4)(?,?) +#E ((..)|(.)){3} aaaaa (0,5)(4,5)(?,?)(4,5) +E ((..)|(.)){3} aaaaa (0,5)(4,5)(2,4)(4,5) RE2/Go + +#E ((..)|(.))* aaaaa (0,5)(4,5)(?,?)(4,5) +E ((..)|(.))* aaaaa (0,5)(4,5)(2,4)(4,5) RE2/Go + +E ((..)|(.)) aaaaaa (0,2)(0,2)(0,2)(?,?) +E ((..)|(.))((..)|(.)) aaaaaa (0,4)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?) +E ((..)|(.))((..)|(.))((..)|(.)) aaaaaa (0,6)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?)(4,6)(4,6)(?,?) + +E ((..)|(.)){1} aaaaaa (0,2)(0,2)(0,2)(?,?) +E ((..)|(.)){2} aaaaaa (0,4)(2,4)(2,4)(?,?) +E ((..)|(.)){3} aaaaaa (0,6)(4,6)(4,6)(?,?) + +E ((..)|(.))* aaaaaa (0,6)(4,6)(4,6)(?,?) diff --git a/vendor/regex-automata/data/tests/fowler/repetition.toml b/vendor/regex-automata/data/tests/fowler/repetition.toml new file mode 100644 index 000000000..43280a409 --- /dev/null +++ b/vendor/regex-automata/data/tests/fowler/repetition.toml @@ -0,0 +1,343 @@ +[[tests]] +name = "repetition10" +options = ['escaped'] +pattern = '''((..)|(.))''' +input = '''''' +matches = [] + +[[tests]] +name = "repetition11" +options = ['escaped'] +pattern = '''((..)|(.))((..)|(.))''' +input = '''''' +matches = [] + +[[tests]] +name = "repetition12" +options = ['escaped'] +pattern = '''((..)|(.))((..)|(.))((..)|(.))''' +input = '''''' +matches = [] + +[[tests]] +name = "repetition14" +options = ['escaped'] +pattern = '''((..)|(.)){1}''' +input = '''''' +matches = [] + +[[tests]] +name = "repetition15" +options = ['escaped'] +pattern = '''((..)|(.)){2}''' +input = '''''' +matches = [] + +[[tests]] +name = "repetition16" +options = ['escaped'] +pattern = '''((..)|(.)){3}''' +input = '''''' +matches = [] + +[[tests]] +name = "repetition18" +options = ['escaped'] +pattern = '''((..)|(.))*''' +input = '''''' +matches = [[0, 0]] + +[[tests]] +name = "repetition20" +options = ['escaped'] +pattern = '''((..)|(.))''' +input = '''a''' +matches = [[0, 1]] + +[[tests]] +name = "repetition21" +options = ['escaped'] +pattern = '''((..)|(.))((..)|(.))''' +input = '''a''' +matches = [] + +[[tests]] +name = "repetition22" +options = ['escaped'] +pattern = '''((..)|(.))((..)|(.))((..)|(.))''' +input = '''a''' +matches = [] + +[[tests]] +name = "repetition24" +options = ['escaped'] +pattern = '''((..)|(.)){1}''' +input = '''a''' +matches = [[0, 1]] + +[[tests]] +name = "repetition25" +options = ['escaped'] +pattern = '''((..)|(.)){2}''' +input = '''a''' +matches = [] + +[[tests]] +name = "repetition26" +options = ['escaped'] +pattern = '''((..)|(.)){3}''' +input = '''a''' +matches = [] + +[[tests]] +name = "repetition28" +options = ['escaped'] +pattern = '''((..)|(.))*''' +input = '''a''' +matches = [[0, 1]] + +[[tests]] +name = "repetition30" +options = ['escaped'] +pattern = '''((..)|(.))''' +input = '''aa''' +matches = [[0, 2]] + +[[tests]] +name = "repetition31" +options = ['escaped'] +pattern = '''((..)|(.))((..)|(.))''' +input = '''aa''' +matches = [[0, 2]] + +[[tests]] +name = "repetition32" +options = ['escaped'] +pattern = '''((..)|(.))((..)|(.))((..)|(.))''' +input = '''aa''' +matches = [] + +[[tests]] +name = "repetition34" +options = ['escaped'] +pattern = '''((..)|(.)){1}''' +input = '''aa''' +matches = [[0, 2]] + +[[tests]] +name = "repetition35" +options = ['escaped'] +pattern = '''((..)|(.)){2}''' +input = '''aa''' +matches = [[0, 2]] + +[[tests]] +name = "repetition36" +options = ['escaped'] +pattern = '''((..)|(.)){3}''' +input = '''aa''' +matches = [] + +[[tests]] +name = "repetition38" +options = ['escaped'] +pattern = '''((..)|(.))*''' +input = '''aa''' +matches = [[0, 2]] + +[[tests]] +name = "repetition40" +options = ['escaped'] +pattern = '''((..)|(.))''' +input = '''aaa''' +matches = [[0, 2]] + +[[tests]] +name = "repetition41" +options = ['escaped'] +pattern = '''((..)|(.))((..)|(.))''' +input = '''aaa''' +matches = [[0, 3]] + +[[tests]] +name = "repetition42" +options = ['escaped'] +pattern = '''((..)|(.))((..)|(.))((..)|(.))''' +input = '''aaa''' +matches = [[0, 3]] + +[[tests]] +name = "repetition44" +options = ['escaped'] +pattern = '''((..)|(.)){1}''' +input = '''aaa''' +matches = [[0, 2]] + +[[tests]] +name = "repetition46" +options = ['escaped'] +pattern = '''((..)|(.)){2}''' +input = '''aaa''' +matches = [[0, 3]] + +[[tests]] +name = "repetition47" +options = ['escaped'] +pattern = '''((..)|(.)){3}''' +input = '''aaa''' +matches = [[0, 3]] + +[[tests]] +name = "repetition50" +options = ['escaped'] +pattern = '''((..)|(.))*''' +input = '''aaa''' +matches = [[0, 3]] + +[[tests]] +name = "repetition52" +options = ['escaped'] +pattern = '''((..)|(.))''' +input = '''aaaa''' +matches = [[0, 2]] + +[[tests]] +name = "repetition53" +options = ['escaped'] +pattern = '''((..)|(.))((..)|(.))''' +input = '''aaaa''' +matches = [[0, 4]] + +[[tests]] +name = "repetition54" +options = ['escaped'] +pattern = '''((..)|(.))((..)|(.))((..)|(.))''' +input = '''aaaa''' +matches = [[0, 4]] + +[[tests]] +name = "repetition56" +options = ['escaped'] +pattern = '''((..)|(.)){1}''' +input = '''aaaa''' +matches = [[0, 2]] + +[[tests]] +name = "repetition57" +options = ['escaped'] +pattern = '''((..)|(.)){2}''' +input = '''aaaa''' +matches = [[0, 4]] + +[[tests]] +name = "repetition59" +options = ['escaped'] +pattern = '''((..)|(.)){3}''' +input = '''aaaa''' +matches = [[0, 4]] + +[[tests]] +name = "repetition61" +options = ['escaped'] +pattern = '''((..)|(.))*''' +input = '''aaaa''' +matches = [[0, 4]] + +[[tests]] +name = "repetition63" +options = ['escaped'] +pattern = '''((..)|(.))''' +input = '''aaaaa''' +matches = [[0, 2]] + +[[tests]] +name = "repetition64" +options = ['escaped'] +pattern = '''((..)|(.))((..)|(.))''' +input = '''aaaaa''' +matches = [[0, 4]] + +[[tests]] +name = "repetition65" +options = ['escaped'] +pattern = '''((..)|(.))((..)|(.))((..)|(.))''' +input = '''aaaaa''' +matches = [[0, 5]] + +[[tests]] +name = "repetition67" +options = ['escaped'] +pattern = '''((..)|(.)){1}''' +input = '''aaaaa''' +matches = [[0, 2]] + +[[tests]] +name = "repetition68" +options = ['escaped'] +pattern = '''((..)|(.)){2}''' +input = '''aaaaa''' +matches = [[0, 4]] + +[[tests]] +name = "repetition70" +options = ['escaped'] +pattern = '''((..)|(.)){3}''' +input = '''aaaaa''' +matches = [[0, 5]] + +[[tests]] +name = "repetition73" +options = ['escaped'] +pattern = '''((..)|(.))*''' +input = '''aaaaa''' +matches = [[0, 5]] + +[[tests]] +name = "repetition75" +options = ['escaped'] +pattern = '''((..)|(.))''' +input = '''aaaaaa''' +matches = [[0, 2]] + +[[tests]] +name = "repetition76" +options = ['escaped'] +pattern = '''((..)|(.))((..)|(.))''' +input = '''aaaaaa''' +matches = [[0, 4]] + +[[tests]] +name = "repetition77" +options = ['escaped'] +pattern = '''((..)|(.))((..)|(.))((..)|(.))''' +input = '''aaaaaa''' +matches = [[0, 6]] + +[[tests]] +name = "repetition79" +options = ['escaped'] +pattern = '''((..)|(.)){1}''' +input = '''aaaaaa''' +matches = [[0, 2]] + +[[tests]] +name = "repetition80" +options = ['escaped'] +pattern = '''((..)|(.)){2}''' +input = '''aaaaaa''' +matches = [[0, 4]] + +[[tests]] +name = "repetition81" +options = ['escaped'] +pattern = '''((..)|(.)){3}''' +input = '''aaaaaa''' +matches = [[0, 6]] + +[[tests]] +name = "repetition83" +options = ['escaped'] +pattern = '''((..)|(.))*''' +input = '''aaaaaa''' +matches = [[0, 6]] + |