[[tests]] name = "1" regex = "a" input = "aaa" matches = [[0, 1], [1, 2], [2, 3]] [[tests]] name = "2" regex = "a" input = "aba" matches = [[0, 1], [2, 3]] [[tests]] name = "empty1" regex = '' input = '' matches = [[0, 0]] [[tests]] name = "empty2" regex = '' input = 'abc' matches = [[0, 0], [1, 1], [2, 2], [3, 3]] [[tests]] name = "empty3" regex = '()' input = 'abc' matches = [[0, 0], [1, 1], [2, 2], [3, 3]] [[tests]] name = "empty4" regex = '()*' input = 'abc' matches = [[0, 0], [1, 1], [2, 2], [3, 3]] [[tests]] name = "empty5" regex = '()+' input = 'abc' matches = [[0, 0], [1, 1], [2, 2], [3, 3]] [[tests]] name = "empty6" regex = '()?' input = 'abc' matches = [[0, 0], [1, 1], [2, 2], [3, 3]] [[tests]] name = "empty7" regex = '()()' input = 'abc' matches = [[0, 0], [1, 1], [2, 2], [3, 3]] [[tests]] name = "empty8" regex = '()+|z' input = 'abc' matches = [[0, 0], [1, 1], [2, 2], [3, 3]] [[tests]] name = "empty9" regex = 'z|()+' input = 'abc' matches = [[0, 0], [1, 1], [2, 2], [3, 3]] [[tests]] name = "empty10" regex = '()+|b' input = 'abc' matches = [[0, 0], [1, 1], [2, 2], [3, 3]] [[tests]] name = "empty11" regex = 'b|()+' input = 'abc' matches = [[0, 0], [1, 2], [3, 3]] [[tests]] name = "start1" regex = "^a" input = "a" matches = [[0, 1]] [[tests]] name = "start2" regex = "^a" input = "aa" matches = [[0, 1]] [[tests]] name = "anchored1" regex = "a" input = "a" matches = [[0, 1]] anchored = true # This test is pretty subtle. It demonstrates the crucial difference between # '^a' and 'a' compiled in 'anchored' mode. The former regex exclusively # matches at the start of a haystack and nowhere else. The latter regex has # no such restriction, but its automaton is constructed such that it lacks a # `.*?` prefix. So it can actually produce matches at multiple locations. # The anchored3 test drives this point home. [[tests]] name = "anchored2" regex = "a" input = "aa" matches = [[0, 1], [1, 2]] anchored = true # Unlikely anchored2, this test stops matching anything after it sees `b` # since it lacks a `.*?` prefix. Since it is looking for 'a' but sees 'b', it # determines that there are no remaining matches. [[tests]] name = "anchored3" regex = "a" input = "aaba" matches = [[0, 1], [1, 2]] anchored = true