Vendor dependencies for 0.3.0 release

This commit is contained in:
2025-09-27 10:29:08 -05:00
parent 0c8d39d483
commit 82ab7f317b
26803 changed files with 16134934 additions and 0 deletions

1611
vendor/regex/testdata/fowler/basic.toml vendored Normal file

File diff suppressed because it is too large Load Diff

25
vendor/regex/testdata/fowler/dat/README vendored Normal file
View File

@@ -0,0 +1,25 @@
Test data was taken from the Go distribution, which was in turn taken from the
testregex test suite:
http://web.archive.org/web/20150925124103/http://www2.research.att.com/~astopen/testregex/testregex.html
Unfortunately, the original web site now appears 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 (and marked as such). A
couple were modified further by me (Andrew Gallant) and marked with 'Rust'.
After some number of years, these tests were transformed into a TOML format
using the 'regex-cli generate fowler' command. To re-generate the
TOML files, run the following from the root of this repository:
regex-cli generate fowler tests/data/fowler tests/data/fowler/dat/*.dat
This assumes that you have 'regex-cli' installed. See 'regex-cli/README.md'
from the root of the repository for more information.
This brings the Fowler tests into a more "sensible" structured format in which
other tests can be written such that they aren't write-only.

View File

@@ -0,0 +1,223 @@
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)
E (?:^|[ (,;])(?:(?:(?:[Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))(?:[^0-9]|$) feb 6, (0,6) Rust
#E1 (^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$) 2/7 (0,3)
E (?:^|[ (,;])(?:(?:(?:[Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))(?:[^0-9]|$) 2/7 (0,3) Rust
#E1 (^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$) feb 1,Feb 6 (5,11)
E (?:^|[ (,;])(?:(?:(?:[Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))(?:[^0-9]|$) feb 1,Feb 6 (5,11) Rust
#E3 ((((((((((((((((((((((((((((((x)))))))))))))))))))))))))))))) x (0,1)(0,1)(0,1)
E (((?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:x)))))))))))))))))))))))))))))) x (0,1)(0,1)(0,1) Rust
#E3 ((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))* xx (0,2)(1,2)(1,2)
E (((?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:x))))))))))))))))))))))))))))))* xx (0,2)(1,2)(1,2) Rust
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\xff (0,2)
BE$ .* \x01\x7f (0,2) Rust
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)(0,0)
E (a*|b)* - (0,0)(0,0)
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)
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)
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)

View File

@@ -0,0 +1,74 @@
NOTE null subexpression matches : 2002-06-06
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)(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 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 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 ([^ab]*)* ccccxx (0,6)(0,6)
E SAME ababab (0,0)(0,0)
#E ((z)+|a)* zabcde (0,2)(1,2)
E ((z)+|a)* zabcde (0,2)(1,2)(0,1) Rust
#{E a+? aaaaaa (0,1) no *? +? minimal 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) 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)

View File

@@ -0,0 +1,169 @@
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)(?,?)
NOTE additional repetition tests graciously provided by Chris Kuklewicz www.haskell.org 2009-02-02
# These test a bug in OS X / FreeBSD / NetBSD, and libtree.
# Linux/GLIBC gets the {8,} and {8,8} wrong.
: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,6)(3,6)(6,6)
:HA#260:E (a|ab|c|bcd){0,}(d*) ababcd (0,1)(0,1)(1,1) Rust
#:HA#261:E (a|ab|c|bcd){1,}(d*) ababcd (0,6)(3,6)(6,6)
:HA#261:E (a|ab|c|bcd){1,}(d*) ababcd (0,1)(0,1)(1,1) Rust
: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,6)(3,6)(6,6)
:HA#265:E (a|ab|c|bcd){0,10}(d*) ababcd (0,1)(0,1)(1,1) Rust
#:HA#266:E (a|ab|c|bcd){1,10}(d*) ababcd (0,6)(3,6)(6,6)
:HA#266:E (a|ab|c|bcd){1,10}(d*) ababcd (0,1)(0,1)(1,1) Rust
: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,6)(3,6)(6,6)
:HA#270:E (a|ab|c|bcd)*(d*) ababcd (0,1)(0,1)(1,1) Rust
#:HA#271:E (a|ab|c|bcd)+(d*) ababcd (0,6)(3,6)(6,6)
:HA#271:E (a|ab|c|bcd)+(d*) ababcd (0,1)(0,1)(1,1) Rust
# 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

View File

@@ -0,0 +1,405 @@
# !!! DO NOT EDIT !!!
# Automatically generated by 'regex-cli generate fowler'.
# Numbers in the test names correspond to the line number of the test from
# the original dat file.
[[test]]
name = "nullsubexpr3"
regex = '''(a*)*'''
haystack = '''a'''
matches = [[[0, 1], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr4"
regex = '''(a*)*'''
haystack = '''x'''
matches = [[[0, 0], [0, 0]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr5"
regex = '''(a*)*'''
haystack = '''aaaaaa'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr6"
regex = '''(a*)*'''
haystack = '''aaaaaax'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr7"
regex = '''(a*)+'''
haystack = '''a'''
matches = [[[0, 1], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr8"
regex = '''(a*)+'''
haystack = '''x'''
matches = [[[0, 0], [0, 0]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr9"
regex = '''(a*)+'''
haystack = '''aaaaaa'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr10"
regex = '''(a*)+'''
haystack = '''aaaaaax'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr11"
regex = '''(a+)*'''
haystack = '''a'''
matches = [[[0, 1], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr12"
regex = '''(a+)*'''
haystack = '''x'''
matches = [[[0, 0], []]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr13"
regex = '''(a+)*'''
haystack = '''aaaaaa'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr14"
regex = '''(a+)*'''
haystack = '''aaaaaax'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr15"
regex = '''(a+)+'''
haystack = '''a'''
matches = [[[0, 1], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr16"
regex = '''(a+)+'''
haystack = '''x'''
matches = []
match-limit = 1
[[test]]
name = "nullsubexpr17"
regex = '''(a+)+'''
haystack = '''aaaaaa'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr18"
regex = '''(a+)+'''
haystack = '''aaaaaax'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr20"
regex = '''([a]*)*'''
haystack = '''a'''
matches = [[[0, 1], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr21"
regex = '''([a]*)*'''
haystack = '''x'''
matches = [[[0, 0], [0, 0]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr22"
regex = '''([a]*)*'''
haystack = '''aaaaaa'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr23"
regex = '''([a]*)*'''
haystack = '''aaaaaax'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr24"
regex = '''([a]*)+'''
haystack = '''a'''
matches = [[[0, 1], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr25"
regex = '''([a]*)+'''
haystack = '''x'''
matches = [[[0, 0], [0, 0]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr26"
regex = '''([a]*)+'''
haystack = '''aaaaaa'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr27"
regex = '''([a]*)+'''
haystack = '''aaaaaax'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr28"
regex = '''([^b]*)*'''
haystack = '''a'''
matches = [[[0, 1], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr29"
regex = '''([^b]*)*'''
haystack = '''b'''
matches = [[[0, 0], [0, 0]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr30"
regex = '''([^b]*)*'''
haystack = '''aaaaaa'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr31"
regex = '''([^b]*)*'''
haystack = '''aaaaaab'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr32"
regex = '''([ab]*)*'''
haystack = '''a'''
matches = [[[0, 1], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr33"
regex = '''([ab]*)*'''
haystack = '''aaaaaa'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr34"
regex = '''([ab]*)*'''
haystack = '''ababab'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr35"
regex = '''([ab]*)*'''
haystack = '''bababa'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr36"
regex = '''([ab]*)*'''
haystack = '''b'''
matches = [[[0, 1], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr37"
regex = '''([ab]*)*'''
haystack = '''bbbbbb'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr38"
regex = '''([ab]*)*'''
haystack = '''aaaabcde'''
matches = [[[0, 5], [0, 5]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr39"
regex = '''([^a]*)*'''
haystack = '''b'''
matches = [[[0, 1], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr40"
regex = '''([^a]*)*'''
haystack = '''bbbbbb'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr41"
regex = '''([^a]*)*'''
haystack = '''aaaaaa'''
matches = [[[0, 0], [0, 0]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr42"
regex = '''([^ab]*)*'''
haystack = '''ccccxx'''
matches = [[[0, 6], [0, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr43"
regex = '''([^ab]*)*'''
haystack = '''ababab'''
matches = [[[0, 0], [0, 0]]]
match-limit = 1
anchored = true
# Test added by Rust regex project.
[[test]]
name = "nullsubexpr46"
regex = '''((z)+|a)*'''
haystack = '''zabcde'''
matches = [[[0, 2], [1, 2], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr64"
regex = '''(a*)*(x)'''
haystack = '''x'''
matches = [[[0, 1], [0, 0], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr65"
regex = '''(a*)*(x)'''
haystack = '''ax'''
matches = [[[0, 2], [0, 1], [1, 2]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr66"
regex = '''(a*)*(x)'''
haystack = '''axa'''
matches = [[[0, 2], [0, 1], [1, 2]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr68"
regex = '''(a*)+(x)'''
haystack = '''x'''
matches = [[[0, 1], [0, 0], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr69"
regex = '''(a*)+(x)'''
haystack = '''ax'''
matches = [[[0, 2], [0, 1], [1, 2]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr70"
regex = '''(a*)+(x)'''
haystack = '''axa'''
matches = [[[0, 2], [0, 1], [1, 2]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr72"
regex = '''(a*){2}(x)'''
haystack = '''x'''
matches = [[[0, 1], [0, 0], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr73"
regex = '''(a*){2}(x)'''
haystack = '''ax'''
matches = [[[0, 2], [1, 1], [1, 2]]]
match-limit = 1
anchored = true
[[test]]
name = "nullsubexpr74"
regex = '''(a*){2}(x)'''
haystack = '''axa'''
matches = [[[0, 2], [1, 1], [1, 2]]]
match-limit = 1
anchored = true

View File

@@ -0,0 +1,746 @@
# !!! DO NOT EDIT !!!
# Automatically generated by 'regex-cli generate fowler'.
# Numbers in the test names correspond to the line number of the test from
# the original dat file.
[[test]]
name = "repetition10"
regex = '''((..)|(.))'''
haystack = ''''''
matches = []
match-limit = 1
[[test]]
name = "repetition11"
regex = '''((..)|(.))((..)|(.))'''
haystack = ''''''
matches = []
match-limit = 1
[[test]]
name = "repetition12"
regex = '''((..)|(.))((..)|(.))((..)|(.))'''
haystack = ''''''
matches = []
match-limit = 1
[[test]]
name = "repetition14"
regex = '''((..)|(.)){1}'''
haystack = ''''''
matches = []
match-limit = 1
[[test]]
name = "repetition15"
regex = '''((..)|(.)){2}'''
haystack = ''''''
matches = []
match-limit = 1
[[test]]
name = "repetition16"
regex = '''((..)|(.)){3}'''
haystack = ''''''
matches = []
match-limit = 1
[[test]]
name = "repetition18"
regex = '''((..)|(.))*'''
haystack = ''''''
matches = [[[0, 0], [], [], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition20"
regex = '''((..)|(.))'''
haystack = '''a'''
matches = [[[0, 1], [0, 1], [], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition21"
regex = '''((..)|(.))((..)|(.))'''
haystack = '''a'''
matches = []
match-limit = 1
[[test]]
name = "repetition22"
regex = '''((..)|(.))((..)|(.))((..)|(.))'''
haystack = '''a'''
matches = []
match-limit = 1
[[test]]
name = "repetition24"
regex = '''((..)|(.)){1}'''
haystack = '''a'''
matches = [[[0, 1], [0, 1], [], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition25"
regex = '''((..)|(.)){2}'''
haystack = '''a'''
matches = []
match-limit = 1
[[test]]
name = "repetition26"
regex = '''((..)|(.)){3}'''
haystack = '''a'''
matches = []
match-limit = 1
[[test]]
name = "repetition28"
regex = '''((..)|(.))*'''
haystack = '''a'''
matches = [[[0, 1], [0, 1], [], [0, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition30"
regex = '''((..)|(.))'''
haystack = '''aa'''
matches = [[[0, 2], [0, 2], [0, 2], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition31"
regex = '''((..)|(.))((..)|(.))'''
haystack = '''aa'''
matches = [[[0, 2], [0, 1], [], [0, 1], [1, 2], [], [1, 2]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition32"
regex = '''((..)|(.))((..)|(.))((..)|(.))'''
haystack = '''aa'''
matches = []
match-limit = 1
[[test]]
name = "repetition34"
regex = '''((..)|(.)){1}'''
haystack = '''aa'''
matches = [[[0, 2], [0, 2], [0, 2], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition35"
regex = '''((..)|(.)){2}'''
haystack = '''aa'''
matches = [[[0, 2], [1, 2], [], [1, 2]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition36"
regex = '''((..)|(.)){3}'''
haystack = '''aa'''
matches = []
match-limit = 1
[[test]]
name = "repetition38"
regex = '''((..)|(.))*'''
haystack = '''aa'''
matches = [[[0, 2], [0, 2], [0, 2], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition40"
regex = '''((..)|(.))'''
haystack = '''aaa'''
matches = [[[0, 2], [0, 2], [0, 2], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition41"
regex = '''((..)|(.))((..)|(.))'''
haystack = '''aaa'''
matches = [[[0, 3], [0, 2], [0, 2], [], [2, 3], [], [2, 3]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition42"
regex = '''((..)|(.))((..)|(.))((..)|(.))'''
haystack = '''aaa'''
matches = [[[0, 3], [0, 1], [], [0, 1], [1, 2], [], [1, 2], [2, 3], [], [2, 3]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition44"
regex = '''((..)|(.)){1}'''
haystack = '''aaa'''
matches = [[[0, 2], [0, 2], [0, 2], []]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition46"
regex = '''((..)|(.)){2}'''
haystack = '''aaa'''
matches = [[[0, 3], [2, 3], [0, 2], [2, 3]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition47"
regex = '''((..)|(.)){3}'''
haystack = '''aaa'''
matches = [[[0, 3], [2, 3], [], [2, 3]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition50"
regex = '''((..)|(.))*'''
haystack = '''aaa'''
matches = [[[0, 3], [2, 3], [0, 2], [2, 3]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition52"
regex = '''((..)|(.))'''
haystack = '''aaaa'''
matches = [[[0, 2], [0, 2], [0, 2], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition53"
regex = '''((..)|(.))((..)|(.))'''
haystack = '''aaaa'''
matches = [[[0, 4], [0, 2], [0, 2], [], [2, 4], [2, 4], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition54"
regex = '''((..)|(.))((..)|(.))((..)|(.))'''
haystack = '''aaaa'''
matches = [[[0, 4], [0, 2], [0, 2], [], [2, 3], [], [2, 3], [3, 4], [], [3, 4]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition56"
regex = '''((..)|(.)){1}'''
haystack = '''aaaa'''
matches = [[[0, 2], [0, 2], [0, 2], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition57"
regex = '''((..)|(.)){2}'''
haystack = '''aaaa'''
matches = [[[0, 4], [2, 4], [2, 4], []]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition59"
regex = '''((..)|(.)){3}'''
haystack = '''aaaa'''
matches = [[[0, 4], [3, 4], [0, 2], [3, 4]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition61"
regex = '''((..)|(.))*'''
haystack = '''aaaa'''
matches = [[[0, 4], [2, 4], [2, 4], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition63"
regex = '''((..)|(.))'''
haystack = '''aaaaa'''
matches = [[[0, 2], [0, 2], [0, 2], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition64"
regex = '''((..)|(.))((..)|(.))'''
haystack = '''aaaaa'''
matches = [[[0, 4], [0, 2], [0, 2], [], [2, 4], [2, 4], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition65"
regex = '''((..)|(.))((..)|(.))((..)|(.))'''
haystack = '''aaaaa'''
matches = [[[0, 5], [0, 2], [0, 2], [], [2, 4], [2, 4], [], [4, 5], [], [4, 5]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition67"
regex = '''((..)|(.)){1}'''
haystack = '''aaaaa'''
matches = [[[0, 2], [0, 2], [0, 2], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition68"
regex = '''((..)|(.)){2}'''
haystack = '''aaaaa'''
matches = [[[0, 4], [2, 4], [2, 4], []]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition70"
regex = '''((..)|(.)){3}'''
haystack = '''aaaaa'''
matches = [[[0, 5], [4, 5], [2, 4], [4, 5]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition73"
regex = '''((..)|(.))*'''
haystack = '''aaaaa'''
matches = [[[0, 5], [4, 5], [2, 4], [4, 5]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition75"
regex = '''((..)|(.))'''
haystack = '''aaaaaa'''
matches = [[[0, 2], [0, 2], [0, 2], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition76"
regex = '''((..)|(.))((..)|(.))'''
haystack = '''aaaaaa'''
matches = [[[0, 4], [0, 2], [0, 2], [], [2, 4], [2, 4], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition77"
regex = '''((..)|(.))((..)|(.))((..)|(.))'''
haystack = '''aaaaaa'''
matches = [[[0, 6], [0, 2], [0, 2], [], [2, 4], [2, 4], [], [4, 6], [4, 6], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition79"
regex = '''((..)|(.)){1}'''
haystack = '''aaaaaa'''
matches = [[[0, 2], [0, 2], [0, 2], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition80"
regex = '''((..)|(.)){2}'''
haystack = '''aaaaaa'''
matches = [[[0, 4], [2, 4], [2, 4], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition81"
regex = '''((..)|(.)){3}'''
haystack = '''aaaaaa'''
matches = [[[0, 6], [4, 6], [4, 6], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition83"
regex = '''((..)|(.))*'''
haystack = '''aaaaaa'''
matches = [[[0, 6], [4, 6], [4, 6], []]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive90"
regex = '''X(.?){0,}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [7, 8]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive91"
regex = '''X(.?){1,}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [7, 8]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive92"
regex = '''X(.?){2,}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [7, 8]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive93"
regex = '''X(.?){3,}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [7, 8]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive94"
regex = '''X(.?){4,}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [7, 8]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive95"
regex = '''X(.?){5,}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [7, 8]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive96"
regex = '''X(.?){6,}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [7, 8]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive97"
regex = '''X(.?){7,}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [7, 8]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive98"
regex = '''X(.?){8,}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [8, 8]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive100"
regex = '''X(.?){0,8}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [8, 8]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive102"
regex = '''X(.?){1,8}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [8, 8]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive104"
regex = '''X(.?){2,8}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [8, 8]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive106"
regex = '''X(.?){3,8}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [8, 8]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive108"
regex = '''X(.?){4,8}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [8, 8]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive110"
regex = '''X(.?){5,8}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [8, 8]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive112"
regex = '''X(.?){6,8}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [8, 8]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive114"
regex = '''X(.?){7,8}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [8, 8]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive115"
regex = '''X(.?){8,8}Y'''
haystack = '''X1234567Y'''
matches = [[[0, 9], [8, 8]]]
match-limit = 1
anchored = true
# Test added by Rust regex project.
[[test]]
name = "repetition-expensive127"
regex = '''(a|ab|c|bcd){0,}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 1], [0, 1], [1, 1]]]
match-limit = 1
anchored = true
# Test added by Rust regex project.
[[test]]
name = "repetition-expensive129"
regex = '''(a|ab|c|bcd){1,}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 1], [0, 1], [1, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive130"
regex = '''(a|ab|c|bcd){2,}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 6], [3, 6], [6, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive131"
regex = '''(a|ab|c|bcd){3,}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 6], [3, 6], [6, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive132"
regex = '''(a|ab|c|bcd){4,}(d*)'''
haystack = '''ababcd'''
matches = []
match-limit = 1
# Test added by Rust regex project.
[[test]]
name = "repetition-expensive134"
regex = '''(a|ab|c|bcd){0,10}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 1], [0, 1], [1, 1]]]
match-limit = 1
anchored = true
# Test added by Rust regex project.
[[test]]
name = "repetition-expensive136"
regex = '''(a|ab|c|bcd){1,10}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 1], [0, 1], [1, 1]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive137"
regex = '''(a|ab|c|bcd){2,10}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 6], [3, 6], [6, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive138"
regex = '''(a|ab|c|bcd){3,10}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 6], [3, 6], [6, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive139"
regex = '''(a|ab|c|bcd){4,10}(d*)'''
haystack = '''ababcd'''
matches = []
match-limit = 1
# Test added by Rust regex project.
[[test]]
name = "repetition-expensive141"
regex = '''(a|ab|c|bcd)*(d*)'''
haystack = '''ababcd'''
matches = [[[0, 1], [0, 1], [1, 1]]]
match-limit = 1
anchored = true
# Test added by Rust regex project.
[[test]]
name = "repetition-expensive143"
regex = '''(a|ab|c|bcd)+(d*)'''
haystack = '''ababcd'''
matches = [[[0, 1], [0, 1], [1, 1]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive149"
regex = '''(ab|a|c|bcd){0,}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 6], [4, 5], [5, 6]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive151"
regex = '''(ab|a|c|bcd){1,}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 6], [4, 5], [5, 6]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive153"
regex = '''(ab|a|c|bcd){2,}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 6], [4, 5], [5, 6]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive155"
regex = '''(ab|a|c|bcd){3,}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 6], [4, 5], [5, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive156"
regex = '''(ab|a|c|bcd){4,}(d*)'''
haystack = '''ababcd'''
matches = []
match-limit = 1
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive158"
regex = '''(ab|a|c|bcd){0,10}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 6], [4, 5], [5, 6]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive160"
regex = '''(ab|a|c|bcd){1,10}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 6], [4, 5], [5, 6]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive162"
regex = '''(ab|a|c|bcd){2,10}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 6], [4, 5], [5, 6]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive164"
regex = '''(ab|a|c|bcd){3,10}(d*)'''
haystack = '''ababcd'''
matches = [[[0, 6], [4, 5], [5, 6]]]
match-limit = 1
anchored = true
[[test]]
name = "repetition-expensive165"
regex = '''(ab|a|c|bcd){4,10}(d*)'''
haystack = '''ababcd'''
matches = []
match-limit = 1
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive167"
regex = '''(ab|a|c|bcd)*(d*)'''
haystack = '''ababcd'''
matches = [[[0, 6], [4, 5], [5, 6]]]
match-limit = 1
anchored = true
# Test added by RE2/Go project.
[[test]]
name = "repetition-expensive169"
regex = '''(ab|a|c|bcd)+(d*)'''
haystack = '''ababcd'''
matches = [[[0, 6], [4, 5], [5, 6]]]
match-limit = 1
anchored = true