Merge pull request #234 from grafana/56quarters/mimir-issue-1866

When removing start/end text op in regexp, don't break the contract.
owilliams/utf8-02-mimir
Oleg Zaytsev 3 years ago committed by GitHub
commit ceaa77f14d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -81,6 +81,21 @@ func TestMatcher(t *testing.T) {
value: "foo-bar", value: "foo-bar",
match: false, match: false,
}, },
{
matcher: mustNewMatcher(t, MatchRegexp, "$*bar"),
value: "foo-bar",
match: false,
},
{
matcher: mustNewMatcher(t, MatchRegexp, "bar^+"),
value: "foo-bar",
match: false,
},
{
matcher: mustNewMatcher(t, MatchRegexp, "$+bar"),
value: "foo-bar",
match: false,
},
} }
for _, test := range tests { for _, test := range tests {

@ -163,6 +163,9 @@ func clearBeginEndText(re *syntax.Regexp) {
} }
if len(re.Sub) == 1 { if len(re.Sub) == 1 {
if re.Sub[0].Op == syntax.OpBeginText || re.Sub[0].Op == syntax.OpEndText { if re.Sub[0].Op == syntax.OpBeginText || re.Sub[0].Op == syntax.OpEndText {
// We need to remove this element. Since it's the only one, we convert into a matcher of an empty string.
// OpEmptyMatch is regexp's nop operator.
re.Op = syntax.OpEmptyMatch
re.Sub = nil re.Sub = nil
return return
} }

Loading…
Cancel
Save