|
|
@ -465,6 +465,19 @@ var reTests = []struct {
|
|
|
|
{`[\t][\n][\v][\r][\f][\b]`, nil, "\t\n\v\r\f\b", []Group{{0, 6}}},
|
|
|
|
{`[\t][\n][\v][\r][\f][\b]`, nil, "\t\n\v\r\f\b", []Group{{0, 6}}},
|
|
|
|
{`.*d`, nil, "abc\nabd", []Group{{4, 7}}},
|
|
|
|
{`.*d`, nil, "abc\nabd", []Group{{4, 7}}},
|
|
|
|
{`(`, nil, "-", nil},
|
|
|
|
{`(`, nil, "-", nil},
|
|
|
|
|
|
|
|
{`[\41]`, nil, `!`, []Group{{0, 1}}},
|
|
|
|
|
|
|
|
{`(?<!abc)(d.f)`, nil, `abcdefdof`, []Group{{6, 9}}},
|
|
|
|
|
|
|
|
{`[\w-]+`, nil, `laser_beam`, []Group{{0, 10}}},
|
|
|
|
|
|
|
|
{`M+`, []ReFlag{RE_CASE_INSENSITIVE}, `MMM`, []Group{{0, 3}}},
|
|
|
|
|
|
|
|
{`m+`, []ReFlag{RE_CASE_INSENSITIVE}, `MMM`, []Group{{0, 3}}},
|
|
|
|
|
|
|
|
{`[M]+`, []ReFlag{RE_CASE_INSENSITIVE}, `MMM`, []Group{{0, 3}}},
|
|
|
|
|
|
|
|
{`[m]+`, []ReFlag{RE_CASE_INSENSITIVE}, `MMM`, []Group{{0, 3}}},
|
|
|
|
|
|
|
|
{`^*`, nil, `-`, nil},
|
|
|
|
|
|
|
|
{`a[^>]*b`, nil, `a>b`, []Group{}},
|
|
|
|
|
|
|
|
{`^a*$`, nil, `foo`, []Group{}},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{`*?`, nil, `-`, nil},
|
|
|
|
|
|
|
|
{`a*?`, nil, `-`, nil}, // non-greedy operators are not supported
|
|
|
|
|
|
|
|
|
|
|
|
// Todo - add numeric range tests
|
|
|
|
// Todo - add numeric range tests
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -604,7 +617,7 @@ var groupTests = []struct {
|
|
|
|
{`a(?:b|c|d)(.)`, nil, `ace`, []Match{[]Group{{0, 3}, {2, 3}}}},
|
|
|
|
{`a(?:b|c|d)(.)`, nil, `ace`, []Match{[]Group{{0, 3}, {2, 3}}}},
|
|
|
|
{`a(?:b|c|d)*(.)`, nil, `ace`, []Match{[]Group{{0, 3}, {2, 3}}}},
|
|
|
|
{`a(?:b|c|d)*(.)`, nil, `ace`, []Match{[]Group{{0, 3}, {2, 3}}}},
|
|
|
|
{`a(?:b|c|d)+(.)`, nil, `ace`, []Match{[]Group{{0, 3}, {2, 3}}}},
|
|
|
|
{`a(?:b|c|d)+(.)`, nil, `ace`, []Match{[]Group{{0, 3}, {2, 3}}}},
|
|
|
|
{`a(?:b|(c|e){1,2}?|d)+?(.)`, nil, `ace`, []Match{[]Group{{0, 3}, {1, 2}, {2, 3}}}},
|
|
|
|
{`a(?:b|(c|e){1,2}?|d)+(.)`, nil, `ace`, []Match{[]Group{{0, 3}, {1, 2}, {2, 3}}}},
|
|
|
|
{`(?<!-):(.*)(?<!-):`, nil, `a:bc-:de:f`, []Match{[]Group{{1, 9}, {2, 8}}}},
|
|
|
|
{`(?<!-):(.*)(?<!-):`, nil, `a:bc-:de:f`, []Match{[]Group{{1, 9}, {2, 8}}}},
|
|
|
|
{`(?<!\\):(.*)(?<!\\):`, nil, `a:bc\:de:f`, []Match{[]Group{{1, 9}, {2, 8}}}},
|
|
|
|
{`(?<!\\):(.*)(?<!\\):`, nil, `a:bc\:de:f`, []Match{[]Group{{1, 9}, {2, 8}}}},
|
|
|
|
{`(?<!\?)'(.*)(?<!\?)'`, nil, `a'bc?'de'f`, []Match{[]Group{{1, 9}, {2, 8}}}},
|
|
|
|
{`(?<!\?)'(.*)(?<!\?)'`, nil, `a'bc?'de'f`, []Match{[]Group{{1, 9}, {2, 8}}}},
|
|
|
@ -612,6 +625,15 @@ var groupTests = []struct {
|
|
|
|
{`([\s]*)([\S]*)([\s]*)`, nil, ` testing!1972`, []Match{[]Group{{0, 13}, {0, 1}, {1, 13}, {13, 13}}, []Group{{13, 13}, {13, 13}, {13, 13}, {13, 13}}}},
|
|
|
|
{`([\s]*)([\S]*)([\s]*)`, nil, ` testing!1972`, []Match{[]Group{{0, 13}, {0, 1}, {1, 13}, {13, 13}}, []Group{{13, 13}, {13, 13}, {13, 13}, {13, 13}}}},
|
|
|
|
{`(\s*)(\S*)(\s*)`, nil, ` testing!1972`, []Match{[]Group{{0, 13}, {0, 1}, {1, 13}, {13, 13}}, []Group{{13, 13}, {13, 13}, {13, 13}, {13, 13}}}},
|
|
|
|
{`(\s*)(\S*)(\s*)`, nil, ` testing!1972`, []Match{[]Group{{0, 13}, {0, 1}, {1, 13}, {13, 13}}, []Group{{13, 13}, {13, 13}, {13, 13}, {13, 13}}}},
|
|
|
|
{`(([a-z]+):)?([a-z]+)$`, nil, `smil`, []Match{[]Group{{0, 4}, {-1, -1}, {-1, -1}, {0, 4}}}},
|
|
|
|
{`(([a-z]+):)?([a-z]+)$`, nil, `smil`, []Match{[]Group{{0, 4}, {-1, -1}, {-1, -1}, {0, 4}}}},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{`(x?)?`, nil, `x`, []Match{[]Group{{0, 1}, {0, 1}}, []Group{{1, 1}, {1, 1}}}},
|
|
|
|
|
|
|
|
{`"(?:\\"|[^"])*"`, nil, `"\""`, []Match{[]Group{{0, 4}}}},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{`^((a)c)?(ab)$`, nil, `ab`, []Match{[]Group{{0, 2}, {-1, -1}, {-1, -1}, {0, 2}}}},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{`^([ab]*)(?=(b)?)c`, nil, `abc`, []Match{[]Group{{0, 3}, {0, 2}}}},
|
|
|
|
|
|
|
|
{`^([ab]*)(?!(b))c`, nil, `abc`, []Match{[]Group{{0, 3}, {0, 2}}}},
|
|
|
|
|
|
|
|
{`^([ab]*)(?<!(a))c`, nil, `abc`, []Match{[]Group{{0, 3}, {0, 2}}}},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func TestFindAllMatches(t *testing.T) {
|
|
|
|
func TestFindAllMatches(t *testing.T) {
|
|
|
|