From 9ecbbdd977c8973e2cea6452a1fff93e3a93ef53 Mon Sep 17 00:00:00 2001 From: andig Date: Tue, 5 Apr 2022 07:54:23 +0200 Subject: [PATCH] Regex: allow full match --- provider/pipeline/pipeline.go | 4 +++- provider/pipeline/pipeline_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 provider/pipeline/pipeline_test.go diff --git a/provider/pipeline/pipeline.go b/provider/pipeline/pipeline.go index 8d4756090..b474a2f78 100644 --- a/provider/pipeline/pipeline.go +++ b/provider/pipeline/pipeline.go @@ -181,7 +181,9 @@ func (p *Pipeline) Process(in []byte) ([]byte, error) { if p.re != nil { m := p.re.FindSubmatch(b) - if len(m) > 1 { + if len(m) == 1 { + b = m[0] // full match + } else if len(m) > 1 { b = m[1] // first submatch } } diff --git a/provider/pipeline/pipeline_test.go b/provider/pipeline/pipeline_test.go new file mode 100644 index 000000000..40a95564d --- /dev/null +++ b/provider/pipeline/pipeline_test.go @@ -0,0 +1,24 @@ +package pipeline + +import ( + "bytes" + "testing" +) + +func TestRegex(t *testing.T) { + for _, re := range []string{`([0-9.]+)`, `[0-9.]+`} { + p, err := new(Pipeline).WithRegex(re) + if err != nil { + t.Error(err) + } + + res, err := p.Process([]byte("12.3W")) + if err != nil { + t.Error(err) + } + + if exp := []byte("12.3"); !bytes.Equal(res, exp) { + t.Errorf("Expected %s, got %s", exp, res) + } + } +}